From 989a21a2c58dcdee0e9c4d48637c63ef11cb4ba8 Mon Sep 17 00:00:00 2001 From: Hubert Mattusch Date: Thu, 23 Feb 2023 20:32:21 +0100 Subject: [PATCH 1/5] Update ui manager --- NEG/UI/UiManager.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NEG/UI/UiManager.cs b/NEG/UI/UiManager.cs index 028a212..6cdb2b4 100644 --- a/NEG/UI/UiManager.cs +++ b/NEG/UI/UiManager.cs @@ -34,6 +34,8 @@ namespace NEG.UI /// public IWindow CurrentMainWindow { get; protected set; } + public PopupData CurrentPopup => currentShownPopup.data; + private IArea currentArea; private (PopupData data, int priority) currentShownPopup; protected IDefaultPopup currentDefaultPopup; From 482e70b21a9ca5fa63880f73b576e26fe0d57eba Mon Sep 17 00:00:00 2001 From: Hubert Mattusch Date: Mon, 20 Mar 2023 19:57:08 +0100 Subject: [PATCH 2/5] add asmdef for uinty ui editor --- NEG/UI/UnityUi/Editor.meta | 8 ++++++++ .../Editor/NEG.UI.UnityUi.Editor.asmdef | 20 +++++++++++++++++++ .../Editor/NEG.UI.UnityUi.Editor.asmdef.meta | 7 +++++++ NEG/UI/UnityUi/MonoUiManager.cs | 2 ++ NEG/UI/UnityUi/WindowSlot/MonoWindowSlot.cs | 1 + 5 files changed, 38 insertions(+) create mode 100644 NEG/UI/UnityUi/Editor.meta create mode 100644 NEG/UI/UnityUi/Editor/NEG.UI.UnityUi.Editor.asmdef create mode 100644 NEG/UI/UnityUi/Editor/NEG.UI.UnityUi.Editor.asmdef.meta diff --git a/NEG/UI/UnityUi/Editor.meta b/NEG/UI/UnityUi/Editor.meta new file mode 100644 index 0000000..946dc6e --- /dev/null +++ b/NEG/UI/UnityUi/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: caeb30c40f1a46041b0ad218cb94902d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/NEG/UI/UnityUi/Editor/NEG.UI.UnityUi.Editor.asmdef b/NEG/UI/UnityUi/Editor/NEG.UI.UnityUi.Editor.asmdef new file mode 100644 index 0000000..538cc41 --- /dev/null +++ b/NEG/UI/UnityUi/Editor/NEG.UI.UnityUi.Editor.asmdef @@ -0,0 +1,20 @@ +{ + "name": "NEG.UI.UnityUi.Editor", + "rootNamespace": "", + "references": [ + "GUID:e2aaf8effe1c9634d87b2edda6988a6a" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [ + "" + ], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/NEG/UI/UnityUi/Editor/NEG.UI.UnityUi.Editor.asmdef.meta b/NEG/UI/UnityUi/Editor/NEG.UI.UnityUi.Editor.asmdef.meta new file mode 100644 index 0000000..4f9f09d --- /dev/null +++ b/NEG/UI/UnityUi/Editor/NEG.UI.UnityUi.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f8cf2e6d12f27fb47a577cb5a7537ccf +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/NEG/UI/UnityUi/MonoUiManager.cs b/NEG/UI/UnityUi/MonoUiManager.cs index 6c26ed0..776361f 100644 --- a/NEG/UI/UnityUi/MonoUiManager.cs +++ b/NEG/UI/UnityUi/MonoUiManager.cs @@ -20,6 +20,8 @@ namespace NEG.UI.UnityUi //TODO: use default unity selection //TODO: window snaping to slots + //TODO: editor to auto add slots, buttons + private readonly MonoDefaultPopup defaultPopupPrefab; private readonly GameObject canvasPrefab; diff --git a/NEG/UI/UnityUi/WindowSlot/MonoWindowSlot.cs b/NEG/UI/UnityUi/WindowSlot/MonoWindowSlot.cs index 03e6b55..9c1a910 100644 --- a/NEG/UI/UnityUi/WindowSlot/MonoWindowSlot.cs +++ b/NEG/UI/UnityUi/WindowSlot/MonoWindowSlot.cs @@ -1,6 +1,7 @@ using NEG.UI.Area; using NEG.UI.Window; using NEG.UI.WindowSlot; +using System; using UnityEngine; using TNRD; From ad760f57b0250ae0dfd990801010c0bce7a5e86b Mon Sep 17 00:00:00 2001 From: Hubert Mattusch Date: Sat, 8 Apr 2023 11:47:55 +0200 Subject: [PATCH 3/5] Vectror swizzle, carousel list update --- NEG/UI/UnityUi/CarouselList/CarouselList.cs | 2 + NEG/UI/UnityUi/Window/MonoWindow.cs | 2 + NEG/UI/UnityUi/Window/WindowController.cs | 4 +- VectorSwizzle.cs | 524 ++++++++++++++++++++ VectorSwizzle.cs.meta | 3 + 5 files changed, 534 insertions(+), 1 deletion(-) create mode 100644 VectorSwizzle.cs create mode 100644 VectorSwizzle.cs.meta diff --git a/NEG/UI/UnityUi/CarouselList/CarouselList.cs b/NEG/UI/UnityUi/CarouselList/CarouselList.cs index 97760de..e787ed1 100644 --- a/NEG/UI/UnityUi/CarouselList/CarouselList.cs +++ b/NEG/UI/UnityUi/CarouselList/CarouselList.cs @@ -11,6 +11,7 @@ namespace NEG.UI.UnityUi [PublicAPI] public class CarouselList : MonoBehaviour { + public event Action OnSelectedItemChanged; /// /// Current option /// @@ -54,6 +55,7 @@ namespace NEG.UI.UnityUi CurrentOptionId = option; CurrentOption = options[option]; currentOptionText.text = CurrentOption; + OnSelectedItemChanged?.Invoke(CurrentOptionId); } /// diff --git a/NEG/UI/UnityUi/Window/MonoWindow.cs b/NEG/UI/UnityUi/Window/MonoWindow.cs index d13a121..0b508fa 100644 --- a/NEG/UI/UnityUi/Window/MonoWindow.cs +++ b/NEG/UI/UnityUi/Window/MonoWindow.cs @@ -40,6 +40,8 @@ namespace NEG.UI.UnityUi.Window gameObject.SetActive(false); Parent = null; ((ISlotsHolder)this).CloseAllWindows(); + if(controller != null) + controller.OnClosed(); } private void Awake() => ((IWindow)this).SetClosedState(); diff --git a/NEG/UI/UnityUi/Window/WindowController.cs b/NEG/UI/UnityUi/Window/WindowController.cs index 8e07abb..6451e30 100644 --- a/NEG/UI/UnityUi/Window/WindowController.cs +++ b/NEG/UI/UnityUi/Window/WindowController.cs @@ -11,7 +11,9 @@ namespace NEG.UI.UnityUi.Window public abstract void SetData(object data); - public abstract void OnOpened(); + public virtual void OnOpened() { } + + public virtual void OnClosed() { } protected virtual void Awake() => window = GetComponent(); } diff --git a/VectorSwizzle.cs b/VectorSwizzle.cs new file mode 100644 index 0000000..3ed43a4 --- /dev/null +++ b/VectorSwizzle.cs @@ -0,0 +1,524 @@ +using UnityEngine; + +namespace NEG.Utils +{ + + /* +* Vector Swizzle Extensions by Tyler Glaiel +* Version 1.0 +*/ + + static class Vector2Swizzles + { + //swizzles of size 2 + public static Vector2 xx(this Vector2 a) { return new Vector2(a.x, a.x); } + public static Vector2 yx(this Vector2 a) { return new Vector2(a.y, a.x); } + public static Vector2 xy(this Vector2 a) { return new Vector2(a.x, a.y); } + + public static Vector2 yy(this Vector2 a) { return new Vector2(a.y, a.y); } + + //swizzles of size 3 + public static Vector3 xxx(this Vector2 a) { return new Vector3(a.x, a.x, a.x); } + public static Vector3 yxx(this Vector2 a) { return new Vector3(a.y, a.x, a.x); } + public static Vector3 xyx(this Vector2 a) { return new Vector3(a.x, a.y, a.x); } + public static Vector3 yyx(this Vector2 a) { return new Vector3(a.y, a.y, a.x); } + public static Vector3 xxy(this Vector2 a) { return new Vector3(a.x, a.x, a.y); } + public static Vector3 yxy(this Vector2 a) { return new Vector3(a.y, a.x, a.y); } + public static Vector3 xyy(this Vector2 a) { return new Vector3(a.x, a.y, a.y); } + + public static Vector3 yyy(this Vector2 a) { return new Vector3(a.y, a.y, a.y); } + + //swizzles of size 4 + public static Vector4 xxxx(this Vector2 a) { return new Vector4(a.x, a.x, a.x, a.x); } + public static Vector4 yxxx(this Vector2 a) { return new Vector4(a.y, a.x, a.x, a.x); } + public static Vector4 xyxx(this Vector2 a) { return new Vector4(a.x, a.y, a.x, a.x); } + public static Vector4 yyxx(this Vector2 a) { return new Vector4(a.y, a.y, a.x, a.x); } + public static Vector4 xxyx(this Vector2 a) { return new Vector4(a.x, a.x, a.y, a.x); } + public static Vector4 yxyx(this Vector2 a) { return new Vector4(a.y, a.x, a.y, a.x); } + public static Vector4 xyyx(this Vector2 a) { return new Vector4(a.x, a.y, a.y, a.x); } + public static Vector4 yyyx(this Vector2 a) { return new Vector4(a.y, a.y, a.y, a.x); } + public static Vector4 xxxy(this Vector2 a) { return new Vector4(a.x, a.x, a.x, a.y); } + public static Vector4 yxxy(this Vector2 a) { return new Vector4(a.y, a.x, a.x, a.y); } + public static Vector4 xyxy(this Vector2 a) { return new Vector4(a.x, a.y, a.x, a.y); } + public static Vector4 yyxy(this Vector2 a) { return new Vector4(a.y, a.y, a.x, a.y); } + public static Vector4 xxyy(this Vector2 a) { return new Vector4(a.x, a.x, a.y, a.y); } + public static Vector4 yxyy(this Vector2 a) { return new Vector4(a.y, a.x, a.y, a.y); } + public static Vector4 xyyy(this Vector2 a) { return new Vector4(a.x, a.y, a.y, a.y); } + public static Vector4 yyyy(this Vector2 a) { return new Vector4(a.y, a.y, a.y, a.y); } + } + + static class Vector3Swizzles + { + //swizzles of size 2 + public static Vector2 xx(this Vector3 a) { return new Vector2(a.x, a.x); } + public static Vector2 yx(this Vector3 a) { return new Vector2(a.y, a.x); } + public static Vector2 zx(this Vector3 a) { return new Vector2(a.z, a.x); } + public static Vector2 xy(this Vector3 a) { return new Vector2(a.x, a.y); } + public static Vector2 yy(this Vector3 a) { return new Vector2(a.y, a.y); } + public static Vector2 zy(this Vector3 a) { return new Vector2(a.z, a.y); } + public static Vector2 xz(this Vector3 a) { return new Vector2(a.x, a.z); } + public static Vector2 yz(this Vector3 a) { return new Vector2(a.y, a.z); } + + public static Vector2 zz(this Vector3 a) { return new Vector2(a.z, a.z); } + + //swizzles of size 3 + public static Vector3 xxx(this Vector3 a) { return new Vector3(a.x, a.x, a.x); } + public static Vector3 yxx(this Vector3 a) { return new Vector3(a.y, a.x, a.x); } + public static Vector3 zxx(this Vector3 a) { return new Vector3(a.z, a.x, a.x); } + public static Vector3 xyx(this Vector3 a) { return new Vector3(a.x, a.y, a.x); } + public static Vector3 yyx(this Vector3 a) { return new Vector3(a.y, a.y, a.x); } + public static Vector3 zyx(this Vector3 a) { return new Vector3(a.z, a.y, a.x); } + public static Vector3 xzx(this Vector3 a) { return new Vector3(a.x, a.z, a.x); } + public static Vector3 yzx(this Vector3 a) { return new Vector3(a.y, a.z, a.x); } + public static Vector3 zzx(this Vector3 a) { return new Vector3(a.z, a.z, a.x); } + public static Vector3 xxy(this Vector3 a) { return new Vector3(a.x, a.x, a.y); } + public static Vector3 yxy(this Vector3 a) { return new Vector3(a.y, a.x, a.y); } + public static Vector3 zxy(this Vector3 a) { return new Vector3(a.z, a.x, a.y); } + public static Vector3 xyy(this Vector3 a) { return new Vector3(a.x, a.y, a.y); } + public static Vector3 yyy(this Vector3 a) { return new Vector3(a.y, a.y, a.y); } + public static Vector3 zyy(this Vector3 a) { return new Vector3(a.z, a.y, a.y); } + public static Vector3 xzy(this Vector3 a) { return new Vector3(a.x, a.z, a.y); } + public static Vector3 yzy(this Vector3 a) { return new Vector3(a.y, a.z, a.y); } + public static Vector3 zzy(this Vector3 a) { return new Vector3(a.z, a.z, a.y); } + public static Vector3 xxz(this Vector3 a) { return new Vector3(a.x, a.x, a.z); } + public static Vector3 yxz(this Vector3 a) { return new Vector3(a.y, a.x, a.z); } + public static Vector3 zxz(this Vector3 a) { return new Vector3(a.z, a.x, a.z); } + public static Vector3 xyz(this Vector3 a) { return new Vector3(a.x, a.y, a.z); } + public static Vector3 yyz(this Vector3 a) { return new Vector3(a.y, a.y, a.z); } + public static Vector3 zyz(this Vector3 a) { return new Vector3(a.z, a.y, a.z); } + public static Vector3 xzz(this Vector3 a) { return new Vector3(a.x, a.z, a.z); } + public static Vector3 yzz(this Vector3 a) { return new Vector3(a.y, a.z, a.z); } + + public static Vector3 zzz(this Vector3 a) { return new Vector3(a.z, a.z, a.z); } + + //swizzles of size 4 + public static Vector4 xxxx(this Vector3 a) { return new Vector4(a.x, a.x, a.x, a.x); } + public static Vector4 yxxx(this Vector3 a) { return new Vector4(a.y, a.x, a.x, a.x); } + public static Vector4 zxxx(this Vector3 a) { return new Vector4(a.z, a.x, a.x, a.x); } + public static Vector4 xyxx(this Vector3 a) { return new Vector4(a.x, a.y, a.x, a.x); } + public static Vector4 yyxx(this Vector3 a) { return new Vector4(a.y, a.y, a.x, a.x); } + public static Vector4 zyxx(this Vector3 a) { return new Vector4(a.z, a.y, a.x, a.x); } + public static Vector4 xzxx(this Vector3 a) { return new Vector4(a.x, a.z, a.x, a.x); } + public static Vector4 yzxx(this Vector3 a) { return new Vector4(a.y, a.z, a.x, a.x); } + public static Vector4 zzxx(this Vector3 a) { return new Vector4(a.z, a.z, a.x, a.x); } + public static Vector4 xxyx(this Vector3 a) { return new Vector4(a.x, a.x, a.y, a.x); } + public static Vector4 yxyx(this Vector3 a) { return new Vector4(a.y, a.x, a.y, a.x); } + public static Vector4 zxyx(this Vector3 a) { return new Vector4(a.z, a.x, a.y, a.x); } + public static Vector4 xyyx(this Vector3 a) { return new Vector4(a.x, a.y, a.y, a.x); } + public static Vector4 yyyx(this Vector3 a) { return new Vector4(a.y, a.y, a.y, a.x); } + public static Vector4 zyyx(this Vector3 a) { return new Vector4(a.z, a.y, a.y, a.x); } + public static Vector4 xzyx(this Vector3 a) { return new Vector4(a.x, a.z, a.y, a.x); } + public static Vector4 yzyx(this Vector3 a) { return new Vector4(a.y, a.z, a.y, a.x); } + public static Vector4 zzyx(this Vector3 a) { return new Vector4(a.z, a.z, a.y, a.x); } + public static Vector4 xxzx(this Vector3 a) { return new Vector4(a.x, a.x, a.z, a.x); } + public static Vector4 yxzx(this Vector3 a) { return new Vector4(a.y, a.x, a.z, a.x); } + public static Vector4 zxzx(this Vector3 a) { return new Vector4(a.z, a.x, a.z, a.x); } + public static Vector4 xyzx(this Vector3 a) { return new Vector4(a.x, a.y, a.z, a.x); } + public static Vector4 yyzx(this Vector3 a) { return new Vector4(a.y, a.y, a.z, a.x); } + public static Vector4 zyzx(this Vector3 a) { return new Vector4(a.z, a.y, a.z, a.x); } + public static Vector4 xzzx(this Vector3 a) { return new Vector4(a.x, a.z, a.z, a.x); } + public static Vector4 yzzx(this Vector3 a) { return new Vector4(a.y, a.z, a.z, a.x); } + public static Vector4 zzzx(this Vector3 a) { return new Vector4(a.z, a.z, a.z, a.x); } + public static Vector4 xxxy(this Vector3 a) { return new Vector4(a.x, a.x, a.x, a.y); } + public static Vector4 yxxy(this Vector3 a) { return new Vector4(a.y, a.x, a.x, a.y); } + public static Vector4 zxxy(this Vector3 a) { return new Vector4(a.z, a.x, a.x, a.y); } + public static Vector4 xyxy(this Vector3 a) { return new Vector4(a.x, a.y, a.x, a.y); } + public static Vector4 yyxy(this Vector3 a) { return new Vector4(a.y, a.y, a.x, a.y); } + public static Vector4 zyxy(this Vector3 a) { return new Vector4(a.z, a.y, a.x, a.y); } + public static Vector4 xzxy(this Vector3 a) { return new Vector4(a.x, a.z, a.x, a.y); } + public static Vector4 yzxy(this Vector3 a) { return new Vector4(a.y, a.z, a.x, a.y); } + public static Vector4 zzxy(this Vector3 a) { return new Vector4(a.z, a.z, a.x, a.y); } + public static Vector4 xxyy(this Vector3 a) { return new Vector4(a.x, a.x, a.y, a.y); } + public static Vector4 yxyy(this Vector3 a) { return new Vector4(a.y, a.x, a.y, a.y); } + public static Vector4 zxyy(this Vector3 a) { return new Vector4(a.z, a.x, a.y, a.y); } + public static Vector4 xyyy(this Vector3 a) { return new Vector4(a.x, a.y, a.y, a.y); } + public static Vector4 yyyy(this Vector3 a) { return new Vector4(a.y, a.y, a.y, a.y); } + public static Vector4 zyyy(this Vector3 a) { return new Vector4(a.z, a.y, a.y, a.y); } + public static Vector4 xzyy(this Vector3 a) { return new Vector4(a.x, a.z, a.y, a.y); } + public static Vector4 yzyy(this Vector3 a) { return new Vector4(a.y, a.z, a.y, a.y); } + public static Vector4 zzyy(this Vector3 a) { return new Vector4(a.z, a.z, a.y, a.y); } + public static Vector4 xxzy(this Vector3 a) { return new Vector4(a.x, a.x, a.z, a.y); } + public static Vector4 yxzy(this Vector3 a) { return new Vector4(a.y, a.x, a.z, a.y); } + public static Vector4 zxzy(this Vector3 a) { return new Vector4(a.z, a.x, a.z, a.y); } + public static Vector4 xyzy(this Vector3 a) { return new Vector4(a.x, a.y, a.z, a.y); } + public static Vector4 yyzy(this Vector3 a) { return new Vector4(a.y, a.y, a.z, a.y); } + public static Vector4 zyzy(this Vector3 a) { return new Vector4(a.z, a.y, a.z, a.y); } + public static Vector4 xzzy(this Vector3 a) { return new Vector4(a.x, a.z, a.z, a.y); } + public static Vector4 yzzy(this Vector3 a) { return new Vector4(a.y, a.z, a.z, a.y); } + public static Vector4 zzzy(this Vector3 a) { return new Vector4(a.z, a.z, a.z, a.y); } + public static Vector4 xxxz(this Vector3 a) { return new Vector4(a.x, a.x, a.x, a.z); } + public static Vector4 yxxz(this Vector3 a) { return new Vector4(a.y, a.x, a.x, a.z); } + public static Vector4 zxxz(this Vector3 a) { return new Vector4(a.z, a.x, a.x, a.z); } + public static Vector4 xyxz(this Vector3 a) { return new Vector4(a.x, a.y, a.x, a.z); } + public static Vector4 yyxz(this Vector3 a) { return new Vector4(a.y, a.y, a.x, a.z); } + public static Vector4 zyxz(this Vector3 a) { return new Vector4(a.z, a.y, a.x, a.z); } + public static Vector4 xzxz(this Vector3 a) { return new Vector4(a.x, a.z, a.x, a.z); } + public static Vector4 yzxz(this Vector3 a) { return new Vector4(a.y, a.z, a.x, a.z); } + public static Vector4 zzxz(this Vector3 a) { return new Vector4(a.z, a.z, a.x, a.z); } + public static Vector4 xxyz(this Vector3 a) { return new Vector4(a.x, a.x, a.y, a.z); } + public static Vector4 yxyz(this Vector3 a) { return new Vector4(a.y, a.x, a.y, a.z); } + public static Vector4 zxyz(this Vector3 a) { return new Vector4(a.z, a.x, a.y, a.z); } + public static Vector4 xyyz(this Vector3 a) { return new Vector4(a.x, a.y, a.y, a.z); } + public static Vector4 yyyz(this Vector3 a) { return new Vector4(a.y, a.y, a.y, a.z); } + public static Vector4 zyyz(this Vector3 a) { return new Vector4(a.z, a.y, a.y, a.z); } + public static Vector4 xzyz(this Vector3 a) { return new Vector4(a.x, a.z, a.y, a.z); } + public static Vector4 yzyz(this Vector3 a) { return new Vector4(a.y, a.z, a.y, a.z); } + public static Vector4 zzyz(this Vector3 a) { return new Vector4(a.z, a.z, a.y, a.z); } + public static Vector4 xxzz(this Vector3 a) { return new Vector4(a.x, a.x, a.z, a.z); } + public static Vector4 yxzz(this Vector3 a) { return new Vector4(a.y, a.x, a.z, a.z); } + public static Vector4 zxzz(this Vector3 a) { return new Vector4(a.z, a.x, a.z, a.z); } + public static Vector4 xyzz(this Vector3 a) { return new Vector4(a.x, a.y, a.z, a.z); } + public static Vector4 yyzz(this Vector3 a) { return new Vector4(a.y, a.y, a.z, a.z); } + public static Vector4 zyzz(this Vector3 a) { return new Vector4(a.z, a.y, a.z, a.z); } + public static Vector4 xzzz(this Vector3 a) { return new Vector4(a.x, a.z, a.z, a.z); } + public static Vector4 yzzz(this Vector3 a) { return new Vector4(a.y, a.z, a.z, a.z); } + public static Vector4 zzzz(this Vector3 a) { return new Vector4(a.z, a.z, a.z, a.z); } + } + + static class Vector4Swizzles + { + //swizzles of size 2 + public static Vector2 xx(this Vector4 a) { return new Vector2(a.x, a.x); } + public static Vector2 yx(this Vector4 a) { return new Vector2(a.y, a.x); } + public static Vector2 zx(this Vector4 a) { return new Vector2(a.z, a.x); } + public static Vector2 wx(this Vector4 a) { return new Vector2(a.w, a.x); } + public static Vector2 xy(this Vector4 a) { return new Vector2(a.x, a.y); } + public static Vector2 yy(this Vector4 a) { return new Vector2(a.y, a.y); } + public static Vector2 zy(this Vector4 a) { return new Vector2(a.z, a.y); } + public static Vector2 wy(this Vector4 a) { return new Vector2(a.w, a.y); } + public static Vector2 xz(this Vector4 a) { return new Vector2(a.x, a.z); } + public static Vector2 yz(this Vector4 a) { return new Vector2(a.y, a.z); } + public static Vector2 zz(this Vector4 a) { return new Vector2(a.z, a.z); } + public static Vector2 wz(this Vector4 a) { return new Vector2(a.w, a.z); } + public static Vector2 xw(this Vector4 a) { return new Vector2(a.x, a.w); } + public static Vector2 yw(this Vector4 a) { return new Vector2(a.y, a.w); } + public static Vector2 zw(this Vector4 a) { return new Vector2(a.z, a.w); } + + public static Vector2 ww(this Vector4 a) { return new Vector2(a.w, a.w); } + + //swizzles of size 3 + public static Vector3 xxx(this Vector4 a) { return new Vector3(a.x, a.x, a.x); } + public static Vector3 yxx(this Vector4 a) { return new Vector3(a.y, a.x, a.x); } + public static Vector3 zxx(this Vector4 a) { return new Vector3(a.z, a.x, a.x); } + public static Vector3 wxx(this Vector4 a) { return new Vector3(a.w, a.x, a.x); } + public static Vector3 xyx(this Vector4 a) { return new Vector3(a.x, a.y, a.x); } + public static Vector3 yyx(this Vector4 a) { return new Vector3(a.y, a.y, a.x); } + public static Vector3 zyx(this Vector4 a) { return new Vector3(a.z, a.y, a.x); } + public static Vector3 wyx(this Vector4 a) { return new Vector3(a.w, a.y, a.x); } + public static Vector3 xzx(this Vector4 a) { return new Vector3(a.x, a.z, a.x); } + public static Vector3 yzx(this Vector4 a) { return new Vector3(a.y, a.z, a.x); } + public static Vector3 zzx(this Vector4 a) { return new Vector3(a.z, a.z, a.x); } + public static Vector3 wzx(this Vector4 a) { return new Vector3(a.w, a.z, a.x); } + public static Vector3 xwx(this Vector4 a) { return new Vector3(a.x, a.w, a.x); } + public static Vector3 ywx(this Vector4 a) { return new Vector3(a.y, a.w, a.x); } + public static Vector3 zwx(this Vector4 a) { return new Vector3(a.z, a.w, a.x); } + public static Vector3 wwx(this Vector4 a) { return new Vector3(a.w, a.w, a.x); } + public static Vector3 xxy(this Vector4 a) { return new Vector3(a.x, a.x, a.y); } + public static Vector3 yxy(this Vector4 a) { return new Vector3(a.y, a.x, a.y); } + public static Vector3 zxy(this Vector4 a) { return new Vector3(a.z, a.x, a.y); } + public static Vector3 wxy(this Vector4 a) { return new Vector3(a.w, a.x, a.y); } + public static Vector3 xyy(this Vector4 a) { return new Vector3(a.x, a.y, a.y); } + public static Vector3 yyy(this Vector4 a) { return new Vector3(a.y, a.y, a.y); } + public static Vector3 zyy(this Vector4 a) { return new Vector3(a.z, a.y, a.y); } + public static Vector3 wyy(this Vector4 a) { return new Vector3(a.w, a.y, a.y); } + public static Vector3 xzy(this Vector4 a) { return new Vector3(a.x, a.z, a.y); } + public static Vector3 yzy(this Vector4 a) { return new Vector3(a.y, a.z, a.y); } + public static Vector3 zzy(this Vector4 a) { return new Vector3(a.z, a.z, a.y); } + public static Vector3 wzy(this Vector4 a) { return new Vector3(a.w, a.z, a.y); } + public static Vector3 xwy(this Vector4 a) { return new Vector3(a.x, a.w, a.y); } + public static Vector3 ywy(this Vector4 a) { return new Vector3(a.y, a.w, a.y); } + public static Vector3 zwy(this Vector4 a) { return new Vector3(a.z, a.w, a.y); } + public static Vector3 wwy(this Vector4 a) { return new Vector3(a.w, a.w, a.y); } + public static Vector3 xxz(this Vector4 a) { return new Vector3(a.x, a.x, a.z); } + public static Vector3 yxz(this Vector4 a) { return new Vector3(a.y, a.x, a.z); } + public static Vector3 zxz(this Vector4 a) { return new Vector3(a.z, a.x, a.z); } + public static Vector3 wxz(this Vector4 a) { return new Vector3(a.w, a.x, a.z); } + public static Vector3 xyz(this Vector4 a) { return new Vector3(a.x, a.y, a.z); } + public static Vector3 yyz(this Vector4 a) { return new Vector3(a.y, a.y, a.z); } + public static Vector3 zyz(this Vector4 a) { return new Vector3(a.z, a.y, a.z); } + public static Vector3 wyz(this Vector4 a) { return new Vector3(a.w, a.y, a.z); } + public static Vector3 xzz(this Vector4 a) { return new Vector3(a.x, a.z, a.z); } + public static Vector3 yzz(this Vector4 a) { return new Vector3(a.y, a.z, a.z); } + public static Vector3 zzz(this Vector4 a) { return new Vector3(a.z, a.z, a.z); } + public static Vector3 wzz(this Vector4 a) { return new Vector3(a.w, a.z, a.z); } + public static Vector3 xwz(this Vector4 a) { return new Vector3(a.x, a.w, a.z); } + public static Vector3 ywz(this Vector4 a) { return new Vector3(a.y, a.w, a.z); } + public static Vector3 zwz(this Vector4 a) { return new Vector3(a.z, a.w, a.z); } + public static Vector3 wwz(this Vector4 a) { return new Vector3(a.w, a.w, a.z); } + public static Vector3 xxw(this Vector4 a) { return new Vector3(a.x, a.x, a.w); } + public static Vector3 yxw(this Vector4 a) { return new Vector3(a.y, a.x, a.w); } + public static Vector3 zxw(this Vector4 a) { return new Vector3(a.z, a.x, a.w); } + public static Vector3 wxw(this Vector4 a) { return new Vector3(a.w, a.x, a.w); } + public static Vector3 xyw(this Vector4 a) { return new Vector3(a.x, a.y, a.w); } + public static Vector3 yyw(this Vector4 a) { return new Vector3(a.y, a.y, a.w); } + public static Vector3 zyw(this Vector4 a) { return new Vector3(a.z, a.y, a.w); } + public static Vector3 wyw(this Vector4 a) { return new Vector3(a.w, a.y, a.w); } + public static Vector3 xzw(this Vector4 a) { return new Vector3(a.x, a.z, a.w); } + public static Vector3 yzw(this Vector4 a) { return new Vector3(a.y, a.z, a.w); } + public static Vector3 zzw(this Vector4 a) { return new Vector3(a.z, a.z, a.w); } + public static Vector3 wzw(this Vector4 a) { return new Vector3(a.w, a.z, a.w); } + public static Vector3 xww(this Vector4 a) { return new Vector3(a.x, a.w, a.w); } + public static Vector3 yww(this Vector4 a) { return new Vector3(a.y, a.w, a.w); } + public static Vector3 zww(this Vector4 a) { return new Vector3(a.z, a.w, a.w); } + + public static Vector3 www(this Vector4 a) { return new Vector3(a.w, a.w, a.w); } + + //swizzles of size 4 + public static Vector4 xxxx(this Vector4 a) { return new Vector4(a.x, a.x, a.x, a.x); } + public static Vector4 yxxx(this Vector4 a) { return new Vector4(a.y, a.x, a.x, a.x); } + public static Vector4 zxxx(this Vector4 a) { return new Vector4(a.z, a.x, a.x, a.x); } + public static Vector4 wxxx(this Vector4 a) { return new Vector4(a.w, a.x, a.x, a.x); } + public static Vector4 xyxx(this Vector4 a) { return new Vector4(a.x, a.y, a.x, a.x); } + public static Vector4 yyxx(this Vector4 a) { return new Vector4(a.y, a.y, a.x, a.x); } + public static Vector4 zyxx(this Vector4 a) { return new Vector4(a.z, a.y, a.x, a.x); } + public static Vector4 wyxx(this Vector4 a) { return new Vector4(a.w, a.y, a.x, a.x); } + public static Vector4 xzxx(this Vector4 a) { return new Vector4(a.x, a.z, a.x, a.x); } + public static Vector4 yzxx(this Vector4 a) { return new Vector4(a.y, a.z, a.x, a.x); } + public static Vector4 zzxx(this Vector4 a) { return new Vector4(a.z, a.z, a.x, a.x); } + public static Vector4 wzxx(this Vector4 a) { return new Vector4(a.w, a.z, a.x, a.x); } + public static Vector4 xwxx(this Vector4 a) { return new Vector4(a.x, a.w, a.x, a.x); } + public static Vector4 ywxx(this Vector4 a) { return new Vector4(a.y, a.w, a.x, a.x); } + public static Vector4 zwxx(this Vector4 a) { return new Vector4(a.z, a.w, a.x, a.x); } + public static Vector4 wwxx(this Vector4 a) { return new Vector4(a.w, a.w, a.x, a.x); } + public static Vector4 xxyx(this Vector4 a) { return new Vector4(a.x, a.x, a.y, a.x); } + public static Vector4 yxyx(this Vector4 a) { return new Vector4(a.y, a.x, a.y, a.x); } + public static Vector4 zxyx(this Vector4 a) { return new Vector4(a.z, a.x, a.y, a.x); } + public static Vector4 wxyx(this Vector4 a) { return new Vector4(a.w, a.x, a.y, a.x); } + public static Vector4 xyyx(this Vector4 a) { return new Vector4(a.x, a.y, a.y, a.x); } + public static Vector4 yyyx(this Vector4 a) { return new Vector4(a.y, a.y, a.y, a.x); } + public static Vector4 zyyx(this Vector4 a) { return new Vector4(a.z, a.y, a.y, a.x); } + public static Vector4 wyyx(this Vector4 a) { return new Vector4(a.w, a.y, a.y, a.x); } + public static Vector4 xzyx(this Vector4 a) { return new Vector4(a.x, a.z, a.y, a.x); } + public static Vector4 yzyx(this Vector4 a) { return new Vector4(a.y, a.z, a.y, a.x); } + public static Vector4 zzyx(this Vector4 a) { return new Vector4(a.z, a.z, a.y, a.x); } + public static Vector4 wzyx(this Vector4 a) { return new Vector4(a.w, a.z, a.y, a.x); } + public static Vector4 xwyx(this Vector4 a) { return new Vector4(a.x, a.w, a.y, a.x); } + public static Vector4 ywyx(this Vector4 a) { return new Vector4(a.y, a.w, a.y, a.x); } + public static Vector4 zwyx(this Vector4 a) { return new Vector4(a.z, a.w, a.y, a.x); } + public static Vector4 wwyx(this Vector4 a) { return new Vector4(a.w, a.w, a.y, a.x); } + public static Vector4 xxzx(this Vector4 a) { return new Vector4(a.x, a.x, a.z, a.x); } + public static Vector4 yxzx(this Vector4 a) { return new Vector4(a.y, a.x, a.z, a.x); } + public static Vector4 zxzx(this Vector4 a) { return new Vector4(a.z, a.x, a.z, a.x); } + public static Vector4 wxzx(this Vector4 a) { return new Vector4(a.w, a.x, a.z, a.x); } + public static Vector4 xyzx(this Vector4 a) { return new Vector4(a.x, a.y, a.z, a.x); } + public static Vector4 yyzx(this Vector4 a) { return new Vector4(a.y, a.y, a.z, a.x); } + public static Vector4 zyzx(this Vector4 a) { return new Vector4(a.z, a.y, a.z, a.x); } + public static Vector4 wyzx(this Vector4 a) { return new Vector4(a.w, a.y, a.z, a.x); } + public static Vector4 xzzx(this Vector4 a) { return new Vector4(a.x, a.z, a.z, a.x); } + public static Vector4 yzzx(this Vector4 a) { return new Vector4(a.y, a.z, a.z, a.x); } + public static Vector4 zzzx(this Vector4 a) { return new Vector4(a.z, a.z, a.z, a.x); } + public static Vector4 wzzx(this Vector4 a) { return new Vector4(a.w, a.z, a.z, a.x); } + public static Vector4 xwzx(this Vector4 a) { return new Vector4(a.x, a.w, a.z, a.x); } + public static Vector4 ywzx(this Vector4 a) { return new Vector4(a.y, a.w, a.z, a.x); } + public static Vector4 zwzx(this Vector4 a) { return new Vector4(a.z, a.w, a.z, a.x); } + public static Vector4 wwzx(this Vector4 a) { return new Vector4(a.w, a.w, a.z, a.x); } + public static Vector4 xxwx(this Vector4 a) { return new Vector4(a.x, a.x, a.w, a.x); } + public static Vector4 yxwx(this Vector4 a) { return new Vector4(a.y, a.x, a.w, a.x); } + public static Vector4 zxwx(this Vector4 a) { return new Vector4(a.z, a.x, a.w, a.x); } + public static Vector4 wxwx(this Vector4 a) { return new Vector4(a.w, a.x, a.w, a.x); } + public static Vector4 xywx(this Vector4 a) { return new Vector4(a.x, a.y, a.w, a.x); } + public static Vector4 yywx(this Vector4 a) { return new Vector4(a.y, a.y, a.w, a.x); } + public static Vector4 zywx(this Vector4 a) { return new Vector4(a.z, a.y, a.w, a.x); } + public static Vector4 wywx(this Vector4 a) { return new Vector4(a.w, a.y, a.w, a.x); } + public static Vector4 xzwx(this Vector4 a) { return new Vector4(a.x, a.z, a.w, a.x); } + public static Vector4 yzwx(this Vector4 a) { return new Vector4(a.y, a.z, a.w, a.x); } + public static Vector4 zzwx(this Vector4 a) { return new Vector4(a.z, a.z, a.w, a.x); } + public static Vector4 wzwx(this Vector4 a) { return new Vector4(a.w, a.z, a.w, a.x); } + public static Vector4 xwwx(this Vector4 a) { return new Vector4(a.x, a.w, a.w, a.x); } + public static Vector4 ywwx(this Vector4 a) { return new Vector4(a.y, a.w, a.w, a.x); } + public static Vector4 zwwx(this Vector4 a) { return new Vector4(a.z, a.w, a.w, a.x); } + public static Vector4 wwwx(this Vector4 a) { return new Vector4(a.w, a.w, a.w, a.x); } + public static Vector4 xxxy(this Vector4 a) { return new Vector4(a.x, a.x, a.x, a.y); } + public static Vector4 yxxy(this Vector4 a) { return new Vector4(a.y, a.x, a.x, a.y); } + public static Vector4 zxxy(this Vector4 a) { return new Vector4(a.z, a.x, a.x, a.y); } + public static Vector4 wxxy(this Vector4 a) { return new Vector4(a.w, a.x, a.x, a.y); } + public static Vector4 xyxy(this Vector4 a) { return new Vector4(a.x, a.y, a.x, a.y); } + public static Vector4 yyxy(this Vector4 a) { return new Vector4(a.y, a.y, a.x, a.y); } + public static Vector4 zyxy(this Vector4 a) { return new Vector4(a.z, a.y, a.x, a.y); } + public static Vector4 wyxy(this Vector4 a) { return new Vector4(a.w, a.y, a.x, a.y); } + public static Vector4 xzxy(this Vector4 a) { return new Vector4(a.x, a.z, a.x, a.y); } + public static Vector4 yzxy(this Vector4 a) { return new Vector4(a.y, a.z, a.x, a.y); } + public static Vector4 zzxy(this Vector4 a) { return new Vector4(a.z, a.z, a.x, a.y); } + public static Vector4 wzxy(this Vector4 a) { return new Vector4(a.w, a.z, a.x, a.y); } + public static Vector4 xwxy(this Vector4 a) { return new Vector4(a.x, a.w, a.x, a.y); } + public static Vector4 ywxy(this Vector4 a) { return new Vector4(a.y, a.w, a.x, a.y); } + public static Vector4 zwxy(this Vector4 a) { return new Vector4(a.z, a.w, a.x, a.y); } + public static Vector4 wwxy(this Vector4 a) { return new Vector4(a.w, a.w, a.x, a.y); } + public static Vector4 xxyy(this Vector4 a) { return new Vector4(a.x, a.x, a.y, a.y); } + public static Vector4 yxyy(this Vector4 a) { return new Vector4(a.y, a.x, a.y, a.y); } + public static Vector4 zxyy(this Vector4 a) { return new Vector4(a.z, a.x, a.y, a.y); } + public static Vector4 wxyy(this Vector4 a) { return new Vector4(a.w, a.x, a.y, a.y); } + public static Vector4 xyyy(this Vector4 a) { return new Vector4(a.x, a.y, a.y, a.y); } + public static Vector4 yyyy(this Vector4 a) { return new Vector4(a.y, a.y, a.y, a.y); } + public static Vector4 zyyy(this Vector4 a) { return new Vector4(a.z, a.y, a.y, a.y); } + public static Vector4 wyyy(this Vector4 a) { return new Vector4(a.w, a.y, a.y, a.y); } + public static Vector4 xzyy(this Vector4 a) { return new Vector4(a.x, a.z, a.y, a.y); } + public static Vector4 yzyy(this Vector4 a) { return new Vector4(a.y, a.z, a.y, a.y); } + public static Vector4 zzyy(this Vector4 a) { return new Vector4(a.z, a.z, a.y, a.y); } + public static Vector4 wzyy(this Vector4 a) { return new Vector4(a.w, a.z, a.y, a.y); } + public static Vector4 xwyy(this Vector4 a) { return new Vector4(a.x, a.w, a.y, a.y); } + public static Vector4 ywyy(this Vector4 a) { return new Vector4(a.y, a.w, a.y, a.y); } + public static Vector4 zwyy(this Vector4 a) { return new Vector4(a.z, a.w, a.y, a.y); } + public static Vector4 wwyy(this Vector4 a) { return new Vector4(a.w, a.w, a.y, a.y); } + public static Vector4 xxzy(this Vector4 a) { return new Vector4(a.x, a.x, a.z, a.y); } + public static Vector4 yxzy(this Vector4 a) { return new Vector4(a.y, a.x, a.z, a.y); } + public static Vector4 zxzy(this Vector4 a) { return new Vector4(a.z, a.x, a.z, a.y); } + public static Vector4 wxzy(this Vector4 a) { return new Vector4(a.w, a.x, a.z, a.y); } + public static Vector4 xyzy(this Vector4 a) { return new Vector4(a.x, a.y, a.z, a.y); } + public static Vector4 yyzy(this Vector4 a) { return new Vector4(a.y, a.y, a.z, a.y); } + public static Vector4 zyzy(this Vector4 a) { return new Vector4(a.z, a.y, a.z, a.y); } + public static Vector4 wyzy(this Vector4 a) { return new Vector4(a.w, a.y, a.z, a.y); } + public static Vector4 xzzy(this Vector4 a) { return new Vector4(a.x, a.z, a.z, a.y); } + public static Vector4 yzzy(this Vector4 a) { return new Vector4(a.y, a.z, a.z, a.y); } + public static Vector4 zzzy(this Vector4 a) { return new Vector4(a.z, a.z, a.z, a.y); } + public static Vector4 wzzy(this Vector4 a) { return new Vector4(a.w, a.z, a.z, a.y); } + public static Vector4 xwzy(this Vector4 a) { return new Vector4(a.x, a.w, a.z, a.y); } + public static Vector4 ywzy(this Vector4 a) { return new Vector4(a.y, a.w, a.z, a.y); } + public static Vector4 zwzy(this Vector4 a) { return new Vector4(a.z, a.w, a.z, a.y); } + public static Vector4 wwzy(this Vector4 a) { return new Vector4(a.w, a.w, a.z, a.y); } + public static Vector4 xxwy(this Vector4 a) { return new Vector4(a.x, a.x, a.w, a.y); } + public static Vector4 yxwy(this Vector4 a) { return new Vector4(a.y, a.x, a.w, a.y); } + public static Vector4 zxwy(this Vector4 a) { return new Vector4(a.z, a.x, a.w, a.y); } + public static Vector4 wxwy(this Vector4 a) { return new Vector4(a.w, a.x, a.w, a.y); } + public static Vector4 xywy(this Vector4 a) { return new Vector4(a.x, a.y, a.w, a.y); } + public static Vector4 yywy(this Vector4 a) { return new Vector4(a.y, a.y, a.w, a.y); } + public static Vector4 zywy(this Vector4 a) { return new Vector4(a.z, a.y, a.w, a.y); } + public static Vector4 wywy(this Vector4 a) { return new Vector4(a.w, a.y, a.w, a.y); } + public static Vector4 xzwy(this Vector4 a) { return new Vector4(a.x, a.z, a.w, a.y); } + public static Vector4 yzwy(this Vector4 a) { return new Vector4(a.y, a.z, a.w, a.y); } + public static Vector4 zzwy(this Vector4 a) { return new Vector4(a.z, a.z, a.w, a.y); } + public static Vector4 wzwy(this Vector4 a) { return new Vector4(a.w, a.z, a.w, a.y); } + public static Vector4 xwwy(this Vector4 a) { return new Vector4(a.x, a.w, a.w, a.y); } + public static Vector4 ywwy(this Vector4 a) { return new Vector4(a.y, a.w, a.w, a.y); } + public static Vector4 zwwy(this Vector4 a) { return new Vector4(a.z, a.w, a.w, a.y); } + public static Vector4 wwwy(this Vector4 a) { return new Vector4(a.w, a.w, a.w, a.y); } + public static Vector4 xxxz(this Vector4 a) { return new Vector4(a.x, a.x, a.x, a.z); } + public static Vector4 yxxz(this Vector4 a) { return new Vector4(a.y, a.x, a.x, a.z); } + public static Vector4 zxxz(this Vector4 a) { return new Vector4(a.z, a.x, a.x, a.z); } + public static Vector4 wxxz(this Vector4 a) { return new Vector4(a.w, a.x, a.x, a.z); } + public static Vector4 xyxz(this Vector4 a) { return new Vector4(a.x, a.y, a.x, a.z); } + public static Vector4 yyxz(this Vector4 a) { return new Vector4(a.y, a.y, a.x, a.z); } + public static Vector4 zyxz(this Vector4 a) { return new Vector4(a.z, a.y, a.x, a.z); } + public static Vector4 wyxz(this Vector4 a) { return new Vector4(a.w, a.y, a.x, a.z); } + public static Vector4 xzxz(this Vector4 a) { return new Vector4(a.x, a.z, a.x, a.z); } + public static Vector4 yzxz(this Vector4 a) { return new Vector4(a.y, a.z, a.x, a.z); } + public static Vector4 zzxz(this Vector4 a) { return new Vector4(a.z, a.z, a.x, a.z); } + public static Vector4 wzxz(this Vector4 a) { return new Vector4(a.w, a.z, a.x, a.z); } + public static Vector4 xwxz(this Vector4 a) { return new Vector4(a.x, a.w, a.x, a.z); } + public static Vector4 ywxz(this Vector4 a) { return new Vector4(a.y, a.w, a.x, a.z); } + public static Vector4 zwxz(this Vector4 a) { return new Vector4(a.z, a.w, a.x, a.z); } + public static Vector4 wwxz(this Vector4 a) { return new Vector4(a.w, a.w, a.x, a.z); } + public static Vector4 xxyz(this Vector4 a) { return new Vector4(a.x, a.x, a.y, a.z); } + public static Vector4 yxyz(this Vector4 a) { return new Vector4(a.y, a.x, a.y, a.z); } + public static Vector4 zxyz(this Vector4 a) { return new Vector4(a.z, a.x, a.y, a.z); } + public static Vector4 wxyz(this Vector4 a) { return new Vector4(a.w, a.x, a.y, a.z); } + public static Vector4 xyyz(this Vector4 a) { return new Vector4(a.x, a.y, a.y, a.z); } + public static Vector4 yyyz(this Vector4 a) { return new Vector4(a.y, a.y, a.y, a.z); } + public static Vector4 zyyz(this Vector4 a) { return new Vector4(a.z, a.y, a.y, a.z); } + public static Vector4 wyyz(this Vector4 a) { return new Vector4(a.w, a.y, a.y, a.z); } + public static Vector4 xzyz(this Vector4 a) { return new Vector4(a.x, a.z, a.y, a.z); } + public static Vector4 yzyz(this Vector4 a) { return new Vector4(a.y, a.z, a.y, a.z); } + public static Vector4 zzyz(this Vector4 a) { return new Vector4(a.z, a.z, a.y, a.z); } + public static Vector4 wzyz(this Vector4 a) { return new Vector4(a.w, a.z, a.y, a.z); } + public static Vector4 xwyz(this Vector4 a) { return new Vector4(a.x, a.w, a.y, a.z); } + public static Vector4 ywyz(this Vector4 a) { return new Vector4(a.y, a.w, a.y, a.z); } + public static Vector4 zwyz(this Vector4 a) { return new Vector4(a.z, a.w, a.y, a.z); } + public static Vector4 wwyz(this Vector4 a) { return new Vector4(a.w, a.w, a.y, a.z); } + public static Vector4 xxzz(this Vector4 a) { return new Vector4(a.x, a.x, a.z, a.z); } + public static Vector4 yxzz(this Vector4 a) { return new Vector4(a.y, a.x, a.z, a.z); } + public static Vector4 zxzz(this Vector4 a) { return new Vector4(a.z, a.x, a.z, a.z); } + public static Vector4 wxzz(this Vector4 a) { return new Vector4(a.w, a.x, a.z, a.z); } + public static Vector4 xyzz(this Vector4 a) { return new Vector4(a.x, a.y, a.z, a.z); } + public static Vector4 yyzz(this Vector4 a) { return new Vector4(a.y, a.y, a.z, a.z); } + public static Vector4 zyzz(this Vector4 a) { return new Vector4(a.z, a.y, a.z, a.z); } + public static Vector4 wyzz(this Vector4 a) { return new Vector4(a.w, a.y, a.z, a.z); } + public static Vector4 xzzz(this Vector4 a) { return new Vector4(a.x, a.z, a.z, a.z); } + public static Vector4 yzzz(this Vector4 a) { return new Vector4(a.y, a.z, a.z, a.z); } + public static Vector4 zzzz(this Vector4 a) { return new Vector4(a.z, a.z, a.z, a.z); } + public static Vector4 wzzz(this Vector4 a) { return new Vector4(a.w, a.z, a.z, a.z); } + public static Vector4 xwzz(this Vector4 a) { return new Vector4(a.x, a.w, a.z, a.z); } + public static Vector4 ywzz(this Vector4 a) { return new Vector4(a.y, a.w, a.z, a.z); } + public static Vector4 zwzz(this Vector4 a) { return new Vector4(a.z, a.w, a.z, a.z); } + public static Vector4 wwzz(this Vector4 a) { return new Vector4(a.w, a.w, a.z, a.z); } + public static Vector4 xxwz(this Vector4 a) { return new Vector4(a.x, a.x, a.w, a.z); } + public static Vector4 yxwz(this Vector4 a) { return new Vector4(a.y, a.x, a.w, a.z); } + public static Vector4 zxwz(this Vector4 a) { return new Vector4(a.z, a.x, a.w, a.z); } + public static Vector4 wxwz(this Vector4 a) { return new Vector4(a.w, a.x, a.w, a.z); } + public static Vector4 xywz(this Vector4 a) { return new Vector4(a.x, a.y, a.w, a.z); } + public static Vector4 yywz(this Vector4 a) { return new Vector4(a.y, a.y, a.w, a.z); } + public static Vector4 zywz(this Vector4 a) { return new Vector4(a.z, a.y, a.w, a.z); } + public static Vector4 wywz(this Vector4 a) { return new Vector4(a.w, a.y, a.w, a.z); } + public static Vector4 xzwz(this Vector4 a) { return new Vector4(a.x, a.z, a.w, a.z); } + public static Vector4 yzwz(this Vector4 a) { return new Vector4(a.y, a.z, a.w, a.z); } + public static Vector4 zzwz(this Vector4 a) { return new Vector4(a.z, a.z, a.w, a.z); } + public static Vector4 wzwz(this Vector4 a) { return new Vector4(a.w, a.z, a.w, a.z); } + public static Vector4 xwwz(this Vector4 a) { return new Vector4(a.x, a.w, a.w, a.z); } + public static Vector4 ywwz(this Vector4 a) { return new Vector4(a.y, a.w, a.w, a.z); } + public static Vector4 zwwz(this Vector4 a) { return new Vector4(a.z, a.w, a.w, a.z); } + public static Vector4 wwwz(this Vector4 a) { return new Vector4(a.w, a.w, a.w, a.z); } + public static Vector4 xxxw(this Vector4 a) { return new Vector4(a.x, a.x, a.x, a.w); } + public static Vector4 yxxw(this Vector4 a) { return new Vector4(a.y, a.x, a.x, a.w); } + public static Vector4 zxxw(this Vector4 a) { return new Vector4(a.z, a.x, a.x, a.w); } + public static Vector4 wxxw(this Vector4 a) { return new Vector4(a.w, a.x, a.x, a.w); } + public static Vector4 xyxw(this Vector4 a) { return new Vector4(a.x, a.y, a.x, a.w); } + public static Vector4 yyxw(this Vector4 a) { return new Vector4(a.y, a.y, a.x, a.w); } + public static Vector4 zyxw(this Vector4 a) { return new Vector4(a.z, a.y, a.x, a.w); } + public static Vector4 wyxw(this Vector4 a) { return new Vector4(a.w, a.y, a.x, a.w); } + public static Vector4 xzxw(this Vector4 a) { return new Vector4(a.x, a.z, a.x, a.w); } + public static Vector4 yzxw(this Vector4 a) { return new Vector4(a.y, a.z, a.x, a.w); } + public static Vector4 zzxw(this Vector4 a) { return new Vector4(a.z, a.z, a.x, a.w); } + public static Vector4 wzxw(this Vector4 a) { return new Vector4(a.w, a.z, a.x, a.w); } + public static Vector4 xwxw(this Vector4 a) { return new Vector4(a.x, a.w, a.x, a.w); } + public static Vector4 ywxw(this Vector4 a) { return new Vector4(a.y, a.w, a.x, a.w); } + public static Vector4 zwxw(this Vector4 a) { return new Vector4(a.z, a.w, a.x, a.w); } + public static Vector4 wwxw(this Vector4 a) { return new Vector4(a.w, a.w, a.x, a.w); } + public static Vector4 xxyw(this Vector4 a) { return new Vector4(a.x, a.x, a.y, a.w); } + public static Vector4 yxyw(this Vector4 a) { return new Vector4(a.y, a.x, a.y, a.w); } + public static Vector4 zxyw(this Vector4 a) { return new Vector4(a.z, a.x, a.y, a.w); } + public static Vector4 wxyw(this Vector4 a) { return new Vector4(a.w, a.x, a.y, a.w); } + public static Vector4 xyyw(this Vector4 a) { return new Vector4(a.x, a.y, a.y, a.w); } + public static Vector4 yyyw(this Vector4 a) { return new Vector4(a.y, a.y, a.y, a.w); } + public static Vector4 zyyw(this Vector4 a) { return new Vector4(a.z, a.y, a.y, a.w); } + public static Vector4 wyyw(this Vector4 a) { return new Vector4(a.w, a.y, a.y, a.w); } + public static Vector4 xzyw(this Vector4 a) { return new Vector4(a.x, a.z, a.y, a.w); } + public static Vector4 yzyw(this Vector4 a) { return new Vector4(a.y, a.z, a.y, a.w); } + public static Vector4 zzyw(this Vector4 a) { return new Vector4(a.z, a.z, a.y, a.w); } + public static Vector4 wzyw(this Vector4 a) { return new Vector4(a.w, a.z, a.y, a.w); } + public static Vector4 xwyw(this Vector4 a) { return new Vector4(a.x, a.w, a.y, a.w); } + public static Vector4 ywyw(this Vector4 a) { return new Vector4(a.y, a.w, a.y, a.w); } + public static Vector4 zwyw(this Vector4 a) { return new Vector4(a.z, a.w, a.y, a.w); } + public static Vector4 wwyw(this Vector4 a) { return new Vector4(a.w, a.w, a.y, a.w); } + public static Vector4 xxzw(this Vector4 a) { return new Vector4(a.x, a.x, a.z, a.w); } + public static Vector4 yxzw(this Vector4 a) { return new Vector4(a.y, a.x, a.z, a.w); } + public static Vector4 zxzw(this Vector4 a) { return new Vector4(a.z, a.x, a.z, a.w); } + public static Vector4 wxzw(this Vector4 a) { return new Vector4(a.w, a.x, a.z, a.w); } + public static Vector4 xyzw(this Vector4 a) { return new Vector4(a.x, a.y, a.z, a.w); } + public static Vector4 yyzw(this Vector4 a) { return new Vector4(a.y, a.y, a.z, a.w); } + public static Vector4 zyzw(this Vector4 a) { return new Vector4(a.z, a.y, a.z, a.w); } + public static Vector4 wyzw(this Vector4 a) { return new Vector4(a.w, a.y, a.z, a.w); } + public static Vector4 xzzw(this Vector4 a) { return new Vector4(a.x, a.z, a.z, a.w); } + public static Vector4 yzzw(this Vector4 a) { return new Vector4(a.y, a.z, a.z, a.w); } + public static Vector4 zzzw(this Vector4 a) { return new Vector4(a.z, a.z, a.z, a.w); } + public static Vector4 wzzw(this Vector4 a) { return new Vector4(a.w, a.z, a.z, a.w); } + public static Vector4 xwzw(this Vector4 a) { return new Vector4(a.x, a.w, a.z, a.w); } + public static Vector4 ywzw(this Vector4 a) { return new Vector4(a.y, a.w, a.z, a.w); } + public static Vector4 zwzw(this Vector4 a) { return new Vector4(a.z, a.w, a.z, a.w); } + public static Vector4 wwzw(this Vector4 a) { return new Vector4(a.w, a.w, a.z, a.w); } + public static Vector4 xxww(this Vector4 a) { return new Vector4(a.x, a.x, a.w, a.w); } + public static Vector4 yxww(this Vector4 a) { return new Vector4(a.y, a.x, a.w, a.w); } + public static Vector4 zxww(this Vector4 a) { return new Vector4(a.z, a.x, a.w, a.w); } + public static Vector4 wxww(this Vector4 a) { return new Vector4(a.w, a.x, a.w, a.w); } + public static Vector4 xyww(this Vector4 a) { return new Vector4(a.x, a.y, a.w, a.w); } + public static Vector4 yyww(this Vector4 a) { return new Vector4(a.y, a.y, a.w, a.w); } + public static Vector4 zyww(this Vector4 a) { return new Vector4(a.z, a.y, a.w, a.w); } + public static Vector4 wyww(this Vector4 a) { return new Vector4(a.w, a.y, a.w, a.w); } + public static Vector4 xzww(this Vector4 a) { return new Vector4(a.x, a.z, a.w, a.w); } + public static Vector4 yzww(this Vector4 a) { return new Vector4(a.y, a.z, a.w, a.w); } + public static Vector4 zzww(this Vector4 a) { return new Vector4(a.z, a.z, a.w, a.w); } + public static Vector4 wzww(this Vector4 a) { return new Vector4(a.w, a.z, a.w, a.w); } + public static Vector4 xwww(this Vector4 a) { return new Vector4(a.x, a.w, a.w, a.w); } + public static Vector4 ywww(this Vector4 a) { return new Vector4(a.y, a.w, a.w, a.w); } + public static Vector4 zwww(this Vector4 a) { return new Vector4(a.z, a.w, a.w, a.w); } + public static Vector4 wwww(this Vector4 a) { return new Vector4(a.w, a.w, a.w, a.w); } + } +} \ No newline at end of file diff --git a/VectorSwizzle.cs.meta b/VectorSwizzle.cs.meta new file mode 100644 index 0000000..d6e5d42 --- /dev/null +++ b/VectorSwizzle.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1eabc54731364f26a970427687506eea +timeCreated: 1680871329 \ No newline at end of file From 359b616be98c5faef01c34a56ba57dc42abac337 Mon Sep 17 00:00:00 2001 From: Hubert Mattusch Date: Wed, 12 Apr 2023 00:40:44 +0200 Subject: [PATCH 4/5] Vector int add to swizzle Upgrade Building utils --- Editor/BuildingUtils.cs | 74 +++++++++++++++++++++++++++++++++++++++-- VectorSwizzle.cs | 69 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 138 insertions(+), 5 deletions(-) diff --git a/Editor/BuildingUtils.cs b/Editor/BuildingUtils.cs index 7dca265..fcf507e 100644 --- a/Editor/BuildingUtils.cs +++ b/Editor/BuildingUtils.cs @@ -1,13 +1,45 @@ using System.Diagnostics; +using System.Linq; using UnityEngine; using UnityEditor; +using UnityEditor.Build.Player; using Debug = UnityEngine.Debug; public static class BuildingUtils { + private const string SteamBuildDefine = "STEAM_BUILD"; + + [MenuItem("Tools/PrepareForBuild", priority = -10)] + public static void PrepareForBuild() + { + var namedBuildTarget = UnityEditor.Build.NamedBuildTarget.FromBuildTargetGroup( + BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget)); + var args = PlayerSettings.GetAdditionalCompilerArguments(namedBuildTarget); + var argsList = args.ToList(); + argsList.Remove(SteamBuildDefine); + PlayerSettings.SetScriptingDefineSymbols(namedBuildTarget, argsList.ToArray()); + } + + [MenuItem("Tools/PlatformDefines/Steam", priority = -1)] + public static void SetDefinesForSteam() + { + PrepareForBuild(); + + var namedBuildTarget = UnityEditor.Build.NamedBuildTarget.FromBuildTargetGroup( + BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget)); + var args = PlayerSettings.GetAdditionalCompilerArguments(namedBuildTarget); + var argsList = args.ToList(); + argsList.Add(SteamBuildDefine); + PlayerSettings.SetScriptingDefineSymbols(namedBuildTarget, argsList.ToArray()); + } + + [MenuItem("Tools/Build/Steam/Release")] public static void SteamRelease() { + if(!CanBuild()) + return; + IncreaseBuildNumber(); BuildRelease(); UploadSteam(); @@ -16,6 +48,9 @@ public static class BuildingUtils [MenuItem("Tools/Build/Steam/Development")] public static void SteamDevelopment() { + if(!CanBuild()) + return; + IncreaseBuildNumber(); BuildDevelopment(); UploadSteam(); @@ -25,20 +60,34 @@ public static class BuildingUtils [MenuItem("Tools/Build/All Release")] public static void BuildRelease() { + if(!CanBuild()) + return; BuildWindowsRelease(); } [MenuItem("Tools/Build/All Development")] public static void BuildDevelopment() { + if(!CanBuild()) + return; BuildWindowsDevelopment(); } [MenuItem("Tools/Build/Platform/Windows/x64-Development")] - public static void BuildWindowsDevelopment() => BuildWindows(false); + public static void BuildWindowsDevelopment() + { + if(!CanBuild()) + return; + BuildWindows(false); + } [MenuItem("Tools/Build/Platform/Windows/x64-Release")] - public static void BuildWindowsRelease() => BuildWindows(true); + public static void BuildWindowsRelease() + { + if(!CanBuild()) + return; + BuildWindows(true); + } private static void BuildWindows(bool release) @@ -81,4 +130,25 @@ public static class BuildingUtils Debug.Log(process.ExitCode); process.Close(); } + + private static bool CanBuild() + { + if (CanBuildUtil()) + return true; + Debug.LogError("Cannot build with defines set in project, please use PrepareForBuild and wait for scripts recompilation"); + return false; + } + + private static bool CanBuildUtil() + { + var namedBuildTarget = UnityEditor.Build.NamedBuildTarget.FromBuildTargetGroup( + BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget)); + var args = PlayerSettings.GetAdditionalCompilerArguments(namedBuildTarget); + var argsList = args.ToList(); + + if (argsList.Contains(SteamBuildDefine)) + return false; + + return true; + } } \ No newline at end of file diff --git a/VectorSwizzle.cs b/VectorSwizzle.cs index 3ed43a4..00eb443 100644 --- a/VectorSwizzle.cs +++ b/VectorSwizzle.cs @@ -8,7 +8,7 @@ namespace NEG.Utils * Version 1.0 */ - static class Vector2Swizzles + public static class Vector2Swizzles { //swizzles of size 2 public static Vector2 xx(this Vector2 a) { return new Vector2(a.x, a.x); } @@ -47,7 +47,7 @@ namespace NEG.Utils public static Vector4 yyyy(this Vector2 a) { return new Vector4(a.y, a.y, a.y, a.y); } } - static class Vector3Swizzles + public static class Vector3Swizzles { //swizzles of size 2 public static Vector2 xx(this Vector3 a) { return new Vector2(a.x, a.x); } @@ -175,7 +175,7 @@ namespace NEG.Utils public static Vector4 zzzz(this Vector3 a) { return new Vector4(a.z, a.z, a.z, a.z); } } - static class Vector4Swizzles + public static class Vector4Swizzles { //swizzles of size 2 public static Vector2 xx(this Vector4 a) { return new Vector2(a.x, a.x); } @@ -521,4 +521,67 @@ namespace NEG.Utils public static Vector4 zwww(this Vector4 a) { return new Vector4(a.z, a.w, a.w, a.w); } public static Vector4 wwww(this Vector4 a) { return new Vector4(a.w, a.w, a.w, a.w); } } + + public static class Vector2IntSwizzles + { + //swizzles of size 2 + public static Vector2Int xx(this Vector2Int a) { return new Vector2Int(a.x, a.x); } + public static Vector2Int yx(this Vector2Int a) { return new Vector2Int(a.y, a.x); } + public static Vector2Int xy(this Vector2Int a) { return new Vector2Int(a.x, a.y); } + + public static Vector2Int yy(this Vector2Int a) { return new Vector2Int(a.y, a.y); } + + //swizzles of size 3 + public static Vector3Int xxx(this Vector2Int a) { return new Vector3Int(a.x, a.x, a.x); } + public static Vector3Int yxx(this Vector2Int a) { return new Vector3Int(a.y, a.x, a.x); } + public static Vector3Int xyx(this Vector2Int a) { return new Vector3Int(a.x, a.y, a.x); } + public static Vector3Int yyx(this Vector2Int a) { return new Vector3Int(a.y, a.y, a.x); } + public static Vector3Int xxy(this Vector2Int a) { return new Vector3Int(a.x, a.x, a.y); } + public static Vector3Int yxy(this Vector2Int a) { return new Vector3Int(a.y, a.x, a.y); } + public static Vector3Int xyy(this Vector2Int a) { return new Vector3Int(a.x, a.y, a.y); } + public static Vector3Int yyy(this Vector2Int a) { return new Vector3Int(a.y, a.y, a.y); } + } + + public static class Vector3IntSwizzles + { + //swizzles of size 2 + public static Vector2Int xx(this Vector3Int a) { return new Vector2Int(a.x, a.x); } + public static Vector2Int yx(this Vector3Int a) { return new Vector2Int(a.y, a.x); } + public static Vector2Int zx(this Vector3Int a) { return new Vector2Int(a.z, a.x); } + public static Vector2Int xy(this Vector3Int a) { return new Vector2Int(a.x, a.y); } + public static Vector2Int yy(this Vector3Int a) { return new Vector2Int(a.y, a.y); } + public static Vector2Int zy(this Vector3Int a) { return new Vector2Int(a.z, a.y); } + public static Vector2Int xz(this Vector3Int a) { return new Vector2Int(a.x, a.z); } + public static Vector2Int yz(this Vector3Int a) { return new Vector2Int(a.y, a.z); } + public static Vector2Int zz(this Vector3Int a) { return new Vector2Int(a.z, a.z); } + + //swizzles of size 3 + public static Vector3Int xxx(this Vector3Int a) { return new Vector3Int(a.x, a.x, a.x); } + public static Vector3Int yxx(this Vector3Int a) { return new Vector3Int(a.y, a.x, a.x); } + public static Vector3Int zxx(this Vector3Int a) { return new Vector3Int(a.z, a.x, a.x); } + public static Vector3Int xyx(this Vector3Int a) { return new Vector3Int(a.x, a.y, a.x); } + public static Vector3Int yyx(this Vector3Int a) { return new Vector3Int(a.y, a.y, a.x); } + public static Vector3Int zyx(this Vector3Int a) { return new Vector3Int(a.z, a.y, a.x); } + public static Vector3Int xzx(this Vector3Int a) { return new Vector3Int(a.x, a.z, a.x); } + public static Vector3Int yzx(this Vector3Int a) { return new Vector3Int(a.y, a.z, a.x); } + public static Vector3Int zzx(this Vector3Int a) { return new Vector3Int(a.z, a.z, a.x); } + public static Vector3Int xxy(this Vector3Int a) { return new Vector3Int(a.x, a.x, a.y); } + public static Vector3Int yxy(this Vector3Int a) { return new Vector3Int(a.y, a.x, a.y); } + public static Vector3Int zxy(this Vector3Int a) { return new Vector3Int(a.z, a.x, a.y); } + public static Vector3Int xyy(this Vector3Int a) { return new Vector3Int(a.x, a.y, a.y); } + public static Vector3Int yyy(this Vector3Int a) { return new Vector3Int(a.y, a.y, a.y); } + public static Vector3Int zyy(this Vector3Int a) { return new Vector3Int(a.z, a.y, a.y); } + public static Vector3Int xzy(this Vector3Int a) { return new Vector3Int(a.x, a.z, a.y); } + public static Vector3Int yzy(this Vector3Int a) { return new Vector3Int(a.y, a.z, a.y); } + public static Vector3Int zzy(this Vector3Int a) { return new Vector3Int(a.z, a.z, a.y); } + public static Vector3Int xxz(this Vector3Int a) { return new Vector3Int(a.x, a.x, a.z); } + public static Vector3Int yxz(this Vector3Int a) { return new Vector3Int(a.y, a.x, a.z); } + public static Vector3Int zxz(this Vector3Int a) { return new Vector3Int(a.z, a.x, a.z); } + public static Vector3Int xyz(this Vector3Int a) { return new Vector3Int(a.x, a.y, a.z); } + public static Vector3Int yyz(this Vector3Int a) { return new Vector3Int(a.y, a.y, a.z); } + public static Vector3Int zyz(this Vector3Int a) { return new Vector3Int(a.z, a.y, a.z); } + public static Vector3Int xzz(this Vector3Int a) { return new Vector3Int(a.x, a.z, a.z); } + public static Vector3Int yzz(this Vector3Int a) { return new Vector3Int(a.y, a.z, a.z); } + public static Vector3Int zzz(this Vector3Int a) { return new Vector3Int(a.z, a.z, a.z); } + } } \ No newline at end of file From 42dbfc88271d039e5ce97b4a4b006081e2aa20e7 Mon Sep 17 00:00:00 2001 From: Hubert Mattusch Date: Sun, 14 May 2023 01:00:03 +0200 Subject: [PATCH 5/5] popups + android build utils --- Editor/BuildingUtils.cs | 19 +++++++++++++++++++ Editor/ToolsWindowBase.cs | 23 +++++++++++++++-------- NEG/UI/Popup/PopupData.cs | 6 +++++- NEG/UI/UiManager.cs | 21 +++++++++++++++++---- NEG/UI/UnityUi/Buttons/ButtonReaction.cs | 4 ++-- 5 files changed, 58 insertions(+), 15 deletions(-) diff --git a/Editor/BuildingUtils.cs b/Editor/BuildingUtils.cs index fcf507e..b2acc8d 100644 --- a/Editor/BuildingUtils.cs +++ b/Editor/BuildingUtils.cs @@ -89,6 +89,25 @@ public static class BuildingUtils BuildWindows(true); } + [MenuItem("Tools/Build/Platform/Android/GooglePlay")] + public static void BuildGooglePlay() + { + IncreaseBuildNumber(); + PlayerSettings.Android.bundleVersionCode++; + EditorUserBuildSettings.buildAppBundle = true; + + var buildPlayerOptions = new BuildPlayerOptions { scenes = new string[EditorBuildSettings.scenes.Length] }; + for (int i = 0; i < EditorBuildSettings.scenes.Length; i++) + { + buildPlayerOptions.scenes[i] = EditorBuildSettings.scenes[i].path; + } + + buildPlayerOptions.target = BuildTarget.Android; + buildPlayerOptions.options = BuildOptions.None; + buildPlayerOptions.locationPathName = Application.dataPath + + $"/../../{Application.productName}-GooglePlay/{Application.productName}.aab"; + BuildPipeline.BuildPlayer(buildPlayerOptions); + } private static void BuildWindows(bool release) { diff --git a/Editor/ToolsWindowBase.cs b/Editor/ToolsWindowBase.cs index d200732..de000ad 100644 --- a/Editor/ToolsWindowBase.cs +++ b/Editor/ToolsWindowBase.cs @@ -34,14 +34,21 @@ namespace NegUtils.Editor EditorPrefs.SetBool("StartFromSceneIndex0", newVal); } - if (startFromSceneIndex0) + if (!startFromSceneIndex0) + return; + + bool goToCurrentScene = EditorPrefs.GetBool("GoToCurrentSceneAfterPlay"); + newVal = GUILayout.Toggle(goToCurrentScene, "Go to current scene after play"); + if (newVal != goToCurrentScene) { - bool goToCurrentScene = EditorPrefs.GetBool("GoToCurrentSceneAfterPlay"); - newVal = GUILayout.Toggle(goToCurrentScene, "Go to current scene after play"); - if (newVal != goToCurrentScene) - { - EditorPrefs.SetBool("GoToCurrentSceneAfterPlay", newVal); - } + EditorPrefs.SetBool("GoToCurrentSceneAfterPlay", newVal); + } + + bool goToFirstScene = EditorPrefs.GetBool("GoToFirstSceneAfterPlay"); + newVal = GUILayout.Toggle(goToFirstScene, "Go to scene with index 1 after play"); + if (newVal != goToFirstScene) + { + EditorPrefs.SetBool("GoToFirstSceneAfterPlay", newVal); } } @@ -90,7 +97,7 @@ namespace NegUtils.Editor if (EditorPrefs.GetBool("GoToCurrentSceneAfterPlay")) EditorSceneManager.LoadSceneInPlayMode(EditorPrefs.GetString("LastOpenedScenePath"), new LoadSceneParameters(LoadSceneMode.Single)); - else + else if (EditorPrefs.GetBool("GoToFirstSceneAfterPlay")) SceneManager.LoadScene(1); } break; diff --git a/NEG/UI/Popup/PopupData.cs b/NEG/UI/Popup/PopupData.cs index 6bf528a..9aa2462 100644 --- a/NEG/UI/Popup/PopupData.cs +++ b/NEG/UI/Popup/PopupData.cs @@ -45,6 +45,10 @@ namespace NEG.UI.Popup /// /// Invalidate popup, will automatically skip this popup /// - public virtual void Invalidate() => IsValid = false; + public virtual void Invalidate() + { + IsValid = false; + UiManager.Instance.RefreshPopups(); + } } } \ No newline at end of file diff --git a/NEG/UI/UiManager.cs b/NEG/UI/UiManager.cs index 6cdb2b4..0300324 100644 --- a/NEG/UI/UiManager.cs +++ b/NEG/UI/UiManager.cs @@ -123,6 +123,13 @@ namespace NEG.UI popupsToShow.Enqueue(data, priority); UpdatePopupsState(forceShow, priority, data); } + + public void RefreshPopups() + { + if(currentShownPopup.data is { IsValid: true }) + return; + UpdatePopupsState(false); + } protected void PopupClosed(PopupData data) { @@ -147,11 +154,17 @@ namespace NEG.UI ShowPopup(data, priority); return; } - - if(!popupsToShow.TryDequeue(out var d, out int p)) - return; - ShowPopup(d, p); + while (popupsToShow.TryDequeue(out var d, out int p)) + { + if(!d.IsValid) + continue; + ShowPopup(d, p); + return; + } + + currentShownPopup.data?.Hide(); + currentShownPopup.data = null; } private void ShowPopup(PopupData data, int priority) diff --git a/NEG/UI/UnityUi/Buttons/ButtonReaction.cs b/NEG/UI/UnityUi/Buttons/ButtonReaction.cs index 9e8bf17..1f30b1d 100644 --- a/NEG/UI/UnityUi/Buttons/ButtonReaction.cs +++ b/NEG/UI/UnityUi/Buttons/ButtonReaction.cs @@ -6,9 +6,9 @@ namespace NEG.UI.UnityUi.Buttons [RequireComponent(typeof(BaseButton))] public abstract class ButtonReaction : MonoBehaviour { - private void Awake() => GetComponent().OnButtonPressed += OnClicked; + protected virtual void Awake() => GetComponent().OnButtonPressed += OnClicked; - private void OnDestroy() => GetComponent().OnButtonPressed -= OnClicked; + protected virtual void OnDestroy() => GetComponent().OnButtonPressed -= OnClicked; protected abstract void OnClicked(); }