From 47b8c1cc50fe49dcd2ac377d63880d366284352f Mon Sep 17 00:00:00 2001 From: Hubert Mattusch Date: Sun, 20 Nov 2022 11:07:04 +0100 Subject: [PATCH 1/8] add new corutine utils --- CoroutineUtils.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CoroutineUtils.cs b/CoroutineUtils.cs index f1e835b..7464f4d 100644 --- a/CoroutineUtils.cs +++ b/CoroutineUtils.cs @@ -16,6 +16,17 @@ namespace NEG.Utils } } + public static void ActionAfterFrames(this MonoBehaviour mono, int count, Action action) + { + mono.StartCoroutine(ActionAfterFrames(count, action)); + } + + public static IEnumerator ActionAfterFrames(int count, Action action) + { + yield return WaitForFrames(count); + action?.Invoke(); + } + public static IEnumerator ActionAfterEndOfFrame(Action action) { yield return WaitForEndOfFrame; From 92cbe3dd8c04011445fd842c318bfe271d727f25 Mon Sep 17 00:00:00 2001 From: Hubert Mattusch Date: Mon, 21 Nov 2022 18:38:02 +0100 Subject: [PATCH 2/8] Continue working on level manager split --- CoroutineUtils.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CoroutineUtils.cs b/CoroutineUtils.cs index 7464f4d..ec3102b 100644 --- a/CoroutineUtils.cs +++ b/CoroutineUtils.cs @@ -38,5 +38,13 @@ namespace NEG.Utils yield return null; action?.Invoke(); } + + public static void ActionAfterTime(this MonoBehaviour mono, float time, Action action) => mono.StartCoroutine(ActionAfterTime(time, action)); + + public static IEnumerator ActionAfterTime(float time, Action action) + { + yield return new WaitForSeconds(time); + action?.Invoke(); + } } } \ No newline at end of file From 8fd0b5863916f9ad9a0728424d688f46cda208ab Mon Sep 17 00:00:00 2001 From: Hubert Mattusch Date: Tue, 22 Nov 2022 15:56:30 +0100 Subject: [PATCH 3/8] Add multiSelectChips --- UiToolkit.meta | 8 ++ UiToolkit/MultiSelectChips.meta | 8 ++ .../MultiSelectChips/MultiSelectChips.cs | 128 ++++++++++++++++++ .../MultiSelectChips/MultiSelectChips.cs.meta | 11 ++ .../MultiSelectChips/MultiSelectChips.uxml | 6 + .../MultiSelectChips.uxml.meta | 10 ++ 6 files changed, 171 insertions(+) create mode 100644 UiToolkit.meta create mode 100644 UiToolkit/MultiSelectChips.meta create mode 100644 UiToolkit/MultiSelectChips/MultiSelectChips.cs create mode 100644 UiToolkit/MultiSelectChips/MultiSelectChips.cs.meta create mode 100644 UiToolkit/MultiSelectChips/MultiSelectChips.uxml create mode 100644 UiToolkit/MultiSelectChips/MultiSelectChips.uxml.meta diff --git a/UiToolkit.meta b/UiToolkit.meta new file mode 100644 index 0000000..e6b2986 --- /dev/null +++ b/UiToolkit.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0c452ac88625d6c46a12fb35375d8019 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UiToolkit/MultiSelectChips.meta b/UiToolkit/MultiSelectChips.meta new file mode 100644 index 0000000..21b9cbc --- /dev/null +++ b/UiToolkit/MultiSelectChips.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b1091fdb6a84af3488e7772b53a5f875 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UiToolkit/MultiSelectChips/MultiSelectChips.cs b/UiToolkit/MultiSelectChips/MultiSelectChips.cs new file mode 100644 index 0000000..eb22989 --- /dev/null +++ b/UiToolkit/MultiSelectChips/MultiSelectChips.cs @@ -0,0 +1,128 @@ +using UnityEngine; +using UnityEngine.UIElements; +using UnityEngine.AddressableAssets; +using UnityEngine.ResourceManagement.AsyncOperations; +using System; +using System.Collections; +using System.ComponentModel; + +public class MultiSelectChips : VisualElement +{ + public string LabelText + { + get => label.text; + set + { + if (!string.IsNullOrEmpty(value)) + { + if (label == null) + { + InitLabel(); + } + + label.text = value; + } + else if (label != null) + { + label.RemoveFromHierarchy(); + label = null; + } + } + } + + public IList ItemsSource + { + get => itemsSource; + + set + { + itemsSource = value; + UpdateItems(); + } + } + + private Label label; + private AsyncOperationHandle uxmlHandle, itemUxmlHandle; + + private VisualTreeAsset itemPrefab; + + private IList itemsSource; + + public new class UxmlFactory : UxmlFactory + { + + } + + public new class UxmlTraits : VisualElement.UxmlTraits + { + private readonly UxmlStringAttributeDescription label; + + public UxmlTraits() + { + label = new() + { + name = "label" + }; + } + + public override void Init(VisualElement ve, IUxmlAttributes bag, CreationContext cc) + { + base.Init(ve, bag, cc); + ((MultiSelectChips)ve).LabelText = label.GetValueFromBag(bag, cc); + } + } + + public MultiSelectChips() : base() + { + uxmlHandle = Addressables.LoadAssetAsync("NegUiToolkits/MultiSelectChips.uxml"); + itemUxmlHandle = Addressables.LoadAssetAsync("NegUiToolkits/MultiSelectChipsItem.uxml"); + uxmlHandle.Completed += OnUxmlLoaded; + itemUxmlHandle.Completed += OnItemUxmlLoaded; + } + + public void UpdateItems() + { + if (itemPrefab == null) + return; + } + + private void InitLabel() + { + label = new Label() + { + pickingMode = PickingMode.Ignore + }; + Add(label); + } + + private void OnUxmlLoaded(AsyncOperationHandle operation) + { + if (operation.Status == AsyncOperationStatus.Succeeded) + { + Add(operation.Result.Instantiate()); + Addressables.Release(uxmlHandle); + } + else + { + Debug.LogError($"Asset failed to load."); + } + } + + private void OnItemUxmlLoaded(AsyncOperationHandle operation) + { + + if (operation.Status == AsyncOperationStatus.Succeeded) + { + itemPrefab = operation.Result; + Addressables.Release(itemUxmlHandle); + UpdateItems(); + } + else + { + Debug.LogError($"Asset failed to load."); + } + } + + private void + +} \ No newline at end of file diff --git a/UiToolkit/MultiSelectChips/MultiSelectChips.cs.meta b/UiToolkit/MultiSelectChips/MultiSelectChips.cs.meta new file mode 100644 index 0000000..b4a9aa7 --- /dev/null +++ b/UiToolkit/MultiSelectChips/MultiSelectChips.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4bbcd96ba00647146aac6667496c426d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UiToolkit/MultiSelectChips/MultiSelectChips.uxml b/UiToolkit/MultiSelectChips/MultiSelectChips.uxml new file mode 100644 index 0000000..1a24e53 --- /dev/null +++ b/UiToolkit/MultiSelectChips/MultiSelectChips.uxml @@ -0,0 +1,6 @@ + + + + + + diff --git a/UiToolkit/MultiSelectChips/MultiSelectChips.uxml.meta b/UiToolkit/MultiSelectChips/MultiSelectChips.uxml.meta new file mode 100644 index 0000000..41a759e --- /dev/null +++ b/UiToolkit/MultiSelectChips/MultiSelectChips.uxml.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 28ecbe3f92afaca4faeec3e9fb3af6a2 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0} From 7e8b8e3fb20b54d3ea8b039993bbb32f44c900f9 Mon Sep 17 00:00:00 2001 From: Hubert Mattusch Date: Wed, 23 Nov 2022 18:16:11 +0100 Subject: [PATCH 4/8] Add new coroutine util --- CoroutineUtils.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CoroutineUtils.cs b/CoroutineUtils.cs index ec3102b..a8f88ce 100644 --- a/CoroutineUtils.cs +++ b/CoroutineUtils.cs @@ -26,13 +26,13 @@ namespace NEG.Utils yield return WaitForFrames(count); action?.Invoke(); } - + public static IEnumerator ActionAfterEndOfFrame(Action action) { yield return WaitForEndOfFrame; action?.Invoke(); } - + public static void ActionAtNextFrame(this MonoBehaviour mono, Action action) => mono.StartCoroutine(ActionAtNextFrame(action)); public static IEnumerator ActionAtNextFrame(Action action) { yield return null; From 719ff42c00983e04b82fb290b0759512ac93ce94 Mon Sep 17 00:00:00 2001 From: Hubert Mattusch Date: Wed, 23 Nov 2022 23:28:07 +0100 Subject: [PATCH 5/8] Add defines --- UiToolkit/MultiSelectChips/MultiSelectChips.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/UiToolkit/MultiSelectChips/MultiSelectChips.cs b/UiToolkit/MultiSelectChips/MultiSelectChips.cs index eb22989..aee960e 100644 --- a/UiToolkit/MultiSelectChips/MultiSelectChips.cs +++ b/UiToolkit/MultiSelectChips/MultiSelectChips.cs @@ -1,3 +1,4 @@ +#if ADDRESSABLES && UI_ELEMENTS using UnityEngine; using UnityEngine.UIElements; using UnityEngine.AddressableAssets; @@ -122,7 +123,5 @@ public class MultiSelectChips : VisualElement Debug.LogError($"Asset failed to load."); } } - - private void - -} \ No newline at end of file +} +#endif \ No newline at end of file From 425c0a7251cab72209b73cdff25087439903e5da Mon Sep 17 00:00:00 2001 From: Hubert Mattusch Date: Mon, 28 Nov 2022 15:48:58 +0100 Subject: [PATCH 6/8] Add building utils --- Editor/BuildingUtils.cs | 84 ++++++++++++++++++++++++++++++++++++ Editor/BuildingUtils.cs.meta | 3 ++ 2 files changed, 87 insertions(+) create mode 100644 Editor/BuildingUtils.cs create mode 100644 Editor/BuildingUtils.cs.meta diff --git a/Editor/BuildingUtils.cs b/Editor/BuildingUtils.cs new file mode 100644 index 0000000..bf225f5 --- /dev/null +++ b/Editor/BuildingUtils.cs @@ -0,0 +1,84 @@ +using System.Diagnostics; +using UnityEngine; +using UnityEditor; +using Debug = UnityEngine.Debug; + +public static class BuildingUtils +{ + [MenuItem("Tools/Build/Steam/Release")] + public static void SteamRelease() + { + IncreaseBuildNumber(); + BuildRelease(); + UploadSteam(); + } + + [MenuItem("Tools/Build/Steam/Development")] + public static void SteamDevelopment() + { + IncreaseBuildNumber(); + BuildDevelopment(); + UploadSteam(); + } + + + [MenuItem("Tools/Build/All Release")] + public static void BuildRelease() + { + BuildWindowsRelease(); + } + + [MenuItem("Tools/Build/All Development")] + public static void BuildDevelopment() + { + BuildWindowsDevelopment(); + } + + [MenuItem("Tools/Build/Platform/Windows/x64-Development")] + public static void BuildWindowsDevelopment() => BuildWindows(false); + + [MenuItem("Tools/Build/Platform/Windows/x64-Release")] + public static void BuildWindowsRelease() => BuildWindows(true); + + + private static void BuildWindows(bool release) + { + 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.StandaloneWindows64; + buildPlayerOptions.options = release ? BuildOptions.None : BuildOptions.Development; + buildPlayerOptions.locationPathName = Application.dataPath + + $"/../../{Application.productName}-Steam/ContentBuilder/content/windows/{Application.productName}.exe"; + BuildPipeline.BuildPlayer(buildPlayerOptions); + } + + private static void IncreaseBuildNumber() + { + string[] versionParts = PlayerSettings.bundleVersion.Split('.'); + if (versionParts.Length != 3 || !int.TryParse(versionParts[2], out int version)) { + Debug.LogError("IncreaseBuildNumber failed to update version " + PlayerSettings.bundleVersion); + return; + } + versionParts[2] = (version + 1).ToString(); + PlayerSettings.bundleVersion = string.Join(".", versionParts); + } + + private static void UploadSteam() + { + string command = $"cd {Application.dataPath}/../../{Application.productName}-Steam/ContentBuilder && run_build.bat"; + + var processInfo = new ProcessStartInfo("cmd.exe", $"/c {command}") + { + CreateNoWindow = false, + UseShellExecute = false + }; + var process = Process.Start(processInfo); + process.WaitForExit(); + Debug.Log(process.ExitCode); + process.Close(); + } +} \ No newline at end of file diff --git a/Editor/BuildingUtils.cs.meta b/Editor/BuildingUtils.cs.meta new file mode 100644 index 0000000..5458af4 --- /dev/null +++ b/Editor/BuildingUtils.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1e90ce49e16b4cecb77bf258651f6209 +timeCreated: 1669642124 \ No newline at end of file From 1e3aa619ebad739f843c806ef2ad86c80d94559a Mon Sep 17 00:00:00 2001 From: Hubert Mattusch Date: Mon, 28 Nov 2022 18:37:59 +0100 Subject: [PATCH 7/8] Hide cmd window --- Editor/BuildingUtils.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Editor/BuildingUtils.cs b/Editor/BuildingUtils.cs index bf225f5..7dca265 100644 --- a/Editor/BuildingUtils.cs +++ b/Editor/BuildingUtils.cs @@ -73,7 +73,7 @@ public static class BuildingUtils var processInfo = new ProcessStartInfo("cmd.exe", $"/c {command}") { - CreateNoWindow = false, + CreateNoWindow = true, UseShellExecute = false }; var process = Process.Start(processInfo); From 00057a04b812344369745c35ba401f285cd1e5aa Mon Sep 17 00:00:00 2001 From: Hubert Mattusch Date: Wed, 30 Nov 2022 04:22:46 +0100 Subject: [PATCH 8/8] Add guit to asset path --- Editor/GUIDToAssetPath.cs | 41 ++++++++++++++++++++++++++++++++++ Editor/GUIDToAssetPath.cs.meta | 3 +++ 2 files changed, 44 insertions(+) create mode 100644 Editor/GUIDToAssetPath.cs create mode 100644 Editor/GUIDToAssetPath.cs.meta diff --git a/Editor/GUIDToAssetPath.cs b/Editor/GUIDToAssetPath.cs new file mode 100644 index 0000000..f4e5aae --- /dev/null +++ b/Editor/GUIDToAssetPath.cs @@ -0,0 +1,41 @@ +using UnityEditor; +using UnityEngine; + +public class GUIDToAssetPath : EditorWindow +{ + string guid = ""; + string path = ""; + [MenuItem("Tools/GUIDToAssetPath")] + static void CreateWindow() + { + GUIDToAssetPath window = (GUIDToAssetPath)EditorWindow.GetWindowWithRect(typeof(GUIDToAssetPath), new Rect(0, 0, 400, 120)); + } + + void OnGUI() + { + GUILayout.Label("Enter guid"); + guid = GUILayout.TextField(guid); + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button("Get Asset Path",GUILayout.Width(120))) + path = GetAssetPath(guid); + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button("Abort", GUILayout.Width(120))) + Close(); + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + GUILayout.Label(path); + } + static string GetAssetPath(string guid) + { + guid = guid.Replace("-", ""); + + string p = AssetDatabase.GUIDToAssetPath(guid); + Debug.Log(p); + if (p.Length == 0) p = "not found"; + return p; + } +} \ No newline at end of file diff --git a/Editor/GUIDToAssetPath.cs.meta b/Editor/GUIDToAssetPath.cs.meta new file mode 100644 index 0000000..693beae --- /dev/null +++ b/Editor/GUIDToAssetPath.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ee5c0a00075140f28ac5e6ff46e9a6b3 +timeCreated: 1669777021 \ No newline at end of file