From 2b9e123d0fee5f1f09a3522ea19af0075fe3ad81 Mon Sep 17 00:00:00 2001 From: Eric van Gastel Date: Fri, 5 Jul 2019 17:56:29 +0200 Subject: [PATCH 1/6] added moduleinfo --- ScriptingDefinitionsInfo.asset | 16 ++++++++++++++++ ScriptingDefinitionsInfo.asset.meta | 8 ++++++++ 2 files changed, 24 insertions(+) create mode 100644 ScriptingDefinitionsInfo.asset create mode 100644 ScriptingDefinitionsInfo.asset.meta diff --git a/ScriptingDefinitionsInfo.asset b/ScriptingDefinitionsInfo.asset new file mode 100644 index 0000000..efb96ff --- /dev/null +++ b/ScriptingDefinitionsInfo.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 51c511b357030b347b0d657b55dee79e, type: 3} + m_Name: ScriptingDefinitionsInfo + m_EditorClassIdentifier: + _buildIndex: 0 + _dependencies: [] diff --git a/ScriptingDefinitionsInfo.asset.meta b/ScriptingDefinitionsInfo.asset.meta new file mode 100644 index 0000000..c6998c7 --- /dev/null +++ b/ScriptingDefinitionsInfo.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9bc739bbf9bbab144969122e7d221e12 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: From c7d2efa971e84e84d114bfe11533ad57f74f24ea Mon Sep 17 00:00:00 2001 From: Eric van Gastel Date: Mon, 29 Jul 2019 14:06:06 +0200 Subject: [PATCH 2/6] Added editor assembly definition --- .DS_Store | Bin 0 -> 6148 bytes Scripts/Editor/DefineUtility.cs | 6 ++---- Scripts/Editor/DefinitionObjectEditor.cs | 6 ++---- Scripts/Editor/DefinitionProcessor.cs | 8 ++------ .../Editor/ScriptingDefinitionsEditor.asmdef | 17 +++++++++++++++++ .../ScriptingDefinitionsEditor.asmdef.meta | 7 +++++++ 6 files changed, 30 insertions(+), 14 deletions(-) create mode 100644 .DS_Store create mode 100644 Scripts/Editor/ScriptingDefinitionsEditor.asmdef create mode 100644 Scripts/Editor/ScriptingDefinitionsEditor.asmdef.meta diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7f9953040c64e0921a536d1ce236531aa03a2602 GIT binary patch literal 6148 zcmeHK%Sr=55UkdKfn0L*IKSW@3?Y8O{y@Nh2ofbe&U^B^@@c7l5DXhHf)}ZV?waZ8 znq}*-y$!%tAKN=%31Cil#FvMu`MLYVt}0_hI`4SJJKjEr{qFf?Qhhn$+#3vdz#dQE z`Mbxw^)gLaDIf);fE17dQs9>gc<-gn7m12eKnh5KlLG#IXmrP3I3~uYgCRx$;*9Aq zu49%UHct?H;h4w_&5}w?s?~^LNoT%QT`wFHlMbul!|KUa6N<&td4G#?SWi@x0#e{y zf$Q8Zz5n0Sf0+NzN!m#PDe$ipu-ST8ulP#UTPH8)y|&Rebgwzk-M9`4L$qUJv}10( f9p6S#)-_-Aycdp%L1#YbMEwl7E;1?b*9sf~J Date: Thu, 29 Aug 2019 18:58:42 +0200 Subject: [PATCH 3/6] Module Info data swap --- ScriptingDefinitionsInfo.asset | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ScriptingDefinitionsInfo.asset b/ScriptingDefinitionsInfo.asset index efb96ff..66bf646 100644 --- a/ScriptingDefinitionsInfo.asset +++ b/ScriptingDefinitionsInfo.asset @@ -12,5 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 51c511b357030b347b0d657b55dee79e, type: 3} m_Name: ScriptingDefinitionsInfo m_EditorClassIdentifier: - _buildIndex: 0 + _version: + major: 0 + minor: 1 + patch: 0 _dependencies: [] From 7f234e9e05b08e3496324ac950d656c5b7d84e4b Mon Sep 17 00:00:00 2001 From: Eric van Gastel Date: Wed, 4 Sep 2019 12:39:51 +0200 Subject: [PATCH 4/6] Added update button for manual update --- Scripts/Editor/DefinitionObjectEditor.cs | 5 +++++ Scripts/Editor/DefinitionProcessor.cs | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Scripts/Editor/DefinitionObjectEditor.cs b/Scripts/Editor/DefinitionObjectEditor.cs index 39b7c82..f8f52b4 100644 --- a/Scripts/Editor/DefinitionObjectEditor.cs +++ b/Scripts/Editor/DefinitionObjectEditor.cs @@ -16,6 +16,11 @@ public override void OnInspectorGUI() { EditorGUILayout.HelpBox("When a Definition Object is imported into a Unity Project, it adds it's own name as a Scripting Definition Symbol. " + "When it's removed, it removes the symbol.", MessageType.Info); + + if (GUILayout.Button("Update")) { + DefinitionProcessor.UpdateDefinitions(); + } + } } } \ No newline at end of file diff --git a/Scripts/Editor/DefinitionProcessor.cs b/Scripts/Editor/DefinitionProcessor.cs index a6eaa0c..2aeeca6 100644 --- a/Scripts/Editor/DefinitionProcessor.cs +++ b/Scripts/Editor/DefinitionProcessor.cs @@ -50,7 +50,7 @@ public static void UpdateDefinitions() { for (int i = 0; i < defObjects.Count; i++) { // Convert name into something legit - string defName = defObjects[i].name.ToUpper(); ; + string defName = defObjects[i].name.ToUpper(); char[] chars = defName.ToCharArray(); for (int c = 0; c < chars.Length; c++) { if (!IsAllowedCharacter(chars[c])) { From f4b10a92a919a865317dcd0e1506b412d407287c Mon Sep 17 00:00:00 2001 From: Eric van Gastel Date: Thu, 19 Sep 2019 15:23:40 +0200 Subject: [PATCH 5/6] Fixed scripting define symbols conflicting names --- ScriptingDefinitionsInfo.asset | 2 +- Scripts/Editor/DefineUtility.cs | 92 ++++++++++++++++++++++----- Scripts/Editor/DefinitionProcessor.cs | 9 ++- 3 files changed, 85 insertions(+), 18 deletions(-) diff --git a/ScriptingDefinitionsInfo.asset b/ScriptingDefinitionsInfo.asset index 66bf646..baba461 100644 --- a/ScriptingDefinitionsInfo.asset +++ b/ScriptingDefinitionsInfo.asset @@ -15,5 +15,5 @@ MonoBehaviour: _version: major: 0 minor: 1 - patch: 0 + patch: 1 _dependencies: [] diff --git a/Scripts/Editor/DefineUtility.cs b/Scripts/Editor/DefineUtility.cs index 5e77119..10895e4 100644 --- a/Scripts/Editor/DefineUtility.cs +++ b/Scripts/Editor/DefineUtility.cs @@ -45,11 +45,14 @@ public static void ClearDefineSymbols(BuildTargetGroup buildTargetGroup) { /// Adds a symbol to the scripting define symbols for all build target groups. /// The symbol to add public static bool AddDefineSymbol(string symbol) { + EditorUtility.DisplayProgressBar("Adding Define Symbol", "Starting", 0); bool change = false; for (int i = 0; i < buildTargetGroupCount; i++) { + EditorUtility.DisplayProgressBar("Adding Define Symbol", GetBuildTargetGroup(i).ToString(), (float)i / (float)buildTargetGroupCount); if (AddDefineSymbol(symbol, GetBuildTargetGroup(i))) change = true; } + EditorUtility.ClearProgressBar(); return change; } /// Adds a symbol to the scripting define symbols for the build target groups. @@ -58,11 +61,13 @@ public static bool AddDefineSymbol(string symbol) { public static bool AddDefineSymbol(string symbol, BuildTargetGroup buildTargetGroup) { if (buildTargetGroup == BuildTargetGroup.Unknown) return false; - string symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup); + string symbolsLine = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup); + List symbols = new List(symbolsLine.Split(';')); if (!symbols.Contains(symbol)) { - if (symbols.Length > 0) symbols = symbols + ";" + symbol; - else symbols = symbol; - PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, symbols); + symbols.Add(symbol); + symbolsLine = CombineDefineSymbols(symbols); + + PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, symbolsLine); return true; } return false; @@ -71,11 +76,14 @@ public static bool AddDefineSymbol(string symbol, BuildTargetGroup buildTargetGr /// Removes a symbol to the scripting define symbols for all build target groups. /// The symbol to remove public static bool RemoveDefineSymbol(string symbol) { + EditorUtility.DisplayProgressBar("Removing Define Symbol", "Starting", 0); bool change = false; for (int i = 0; i < buildTargetGroupCount; i++) { + EditorUtility.DisplayProgressBar("Removing Define Symbol", GetBuildTargetGroup(i).ToString(), (float)i / (float)buildTargetGroupCount); if (RemoveDefineSymbol(symbol, GetBuildTargetGroup(i))) change = true; } + EditorUtility.ClearProgressBar(); return change; } /// Removes a symbol to the scripting define symbols for the build target groups. @@ -84,22 +92,76 @@ public static bool RemoveDefineSymbol(string symbol) { public static bool RemoveDefineSymbol(string symbol, BuildTargetGroup buildTargetGroup) { if (buildTargetGroup == BuildTargetGroup.Unknown) return false; - string symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup); + string symbolsLine = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup); + List symbols = new List(symbolsLine.Split(';')); + if (symbols.Contains(symbol)) { + symbols.Remove(symbol); + symbolsLine = CombineDefineSymbols(symbols); + PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, symbolsLine); + return true; + } + return false; + } + + /// Modifies the symbols list more performance friendly + /// Symbols to add + /// Symbols to remove + public static bool ModifyDefineSymbols(List add, List remove) { + EditorUtility.DisplayProgressBar("Modifying Define Symbols", "Starting", 0); + + bool change = false; + for (int i = 0; i < buildTargetGroupCount; i++) { + EditorUtility.DisplayProgressBar("Modifying Define Symbols", GetBuildTargetGroup(i).ToString(), (float)i / (float)buildTargetGroupCount); + if (ModifyDefineSymbols(add, remove, GetBuildTargetGroup(i))) + change = true; + } + EditorUtility.ClearProgressBar(); + return change; + } + + /// Modifies the symbols list more performance friendly + /// Symbols to add + /// Symbols to remove + /// What group to target + public static bool ModifyDefineSymbols(List add, List remove, BuildTargetGroup buildTargetGroup) { + if (buildTargetGroup == BuildTargetGroup.Unknown) return false; - List symbolList = new List(symbols.Split(';')); - symbolList.Remove(symbol); - symbols = ""; - for (int i = 0; i < symbolList.Count; i++) { - symbols += symbolList[i]; - if (i < symbolList.Count - 1) - symbols += ";"; + string symbolsLine = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup); + List symbols = new List(symbolsLine.Split(';')); + bool change = false; + + for (int i = 0; i < add.Count; i++) { + if (!symbols.Contains(add[i])) { + symbols.Add(add[i]); + change = true; } + } - PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, symbols); - return true; + for (int i = 0; i < remove.Count; i++) { + if (symbols.Contains(remove[i])) { + symbols.Remove(remove[i]); + change = true; + } } - return false; + + if (change) { + symbolsLine = CombineDefineSymbols(symbols); + PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, symbolsLine); + } + return change; + } + + + /// Combine define symbols into one string + protected static string CombineDefineSymbols(List symbols) { + string symbolsLine = ""; + for (int i = 0; i < symbols.Count; i++) { + symbolsLine += symbols[i]; + if (i < symbols.Count - 1) + symbolsLine += ";"; + } + return symbolsLine; } /// Converts i into useful build target group, useful for looping through all. diff --git a/Scripts/Editor/DefinitionProcessor.cs b/Scripts/Editor/DefinitionProcessor.cs index 2aeeca6..7c62bec 100644 --- a/Scripts/Editor/DefinitionProcessor.cs +++ b/Scripts/Editor/DefinitionProcessor.cs @@ -45,6 +45,9 @@ public static void UpdateDefinitions() { string definitions = EditorPrefs.GetString(prefsKey, ""); List savedDefs = new List(definitions.Split(';')); + List addDefs = new List(); + List removeDefs = new List(); + // Handle those that exist. Added to new save file and define utility. string newSave = ""; for (int i = 0; i < defObjects.Count; i++) { @@ -62,7 +65,7 @@ public static void UpdateDefinitions() { defObjects[i].name = defName; // Add define symbol - DefineUtility.AddDefineSymbol(defName); + addDefs.Add(defName); // Save, but no duplicates if (!newSave.Contains(defName)) { @@ -79,9 +82,11 @@ public static void UpdateDefinitions() { // Handle all those saved, which are no longer in the assets. They are gone. for (int i = 0; i < savedDefs.Count; i++) { if (savedDefs[i] != "") { - DefineUtility.RemoveDefineSymbol(savedDefs[i]); + removeDefs.Add(savedDefs[i]); } } + + DefineUtility.ModifyDefineSymbols(addDefs, removeDefs); EditorPrefs.SetString(prefsKey, newSave); } From 28e647b5d03aeb4b49bca334e37737e4de9c29b9 Mon Sep 17 00:00:00 2001 From: Eric van Gastel Date: Sat, 21 Sep 2019 10:44:14 +0200 Subject: [PATCH 6/6] Tiny update --- Scripts/Editor/DefineUtility.cs | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/Scripts/Editor/DefineUtility.cs b/Scripts/Editor/DefineUtility.cs index 10895e4..9292f2f 100644 --- a/Scripts/Editor/DefineUtility.cs +++ b/Scripts/Editor/DefineUtility.cs @@ -45,14 +45,11 @@ public static void ClearDefineSymbols(BuildTargetGroup buildTargetGroup) { /// Adds a symbol to the scripting define symbols for all build target groups. /// The symbol to add public static bool AddDefineSymbol(string symbol) { - EditorUtility.DisplayProgressBar("Adding Define Symbol", "Starting", 0); bool change = false; for (int i = 0; i < buildTargetGroupCount; i++) { - EditorUtility.DisplayProgressBar("Adding Define Symbol", GetBuildTargetGroup(i).ToString(), (float)i / (float)buildTargetGroupCount); if (AddDefineSymbol(symbol, GetBuildTargetGroup(i))) change = true; } - EditorUtility.ClearProgressBar(); return change; } /// Adds a symbol to the scripting define symbols for the build target groups. @@ -76,14 +73,11 @@ public static bool AddDefineSymbol(string symbol, BuildTargetGroup buildTargetGr /// Removes a symbol to the scripting define symbols for all build target groups. /// The symbol to remove public static bool RemoveDefineSymbol(string symbol) { - EditorUtility.DisplayProgressBar("Removing Define Symbol", "Starting", 0); bool change = false; for (int i = 0; i < buildTargetGroupCount; i++) { - EditorUtility.DisplayProgressBar("Removing Define Symbol", GetBuildTargetGroup(i).ToString(), (float)i / (float)buildTargetGroupCount); if (RemoveDefineSymbol(symbol, GetBuildTargetGroup(i))) change = true; } - EditorUtility.ClearProgressBar(); return change; } /// Removes a symbol to the scripting define symbols for the build target groups. @@ -108,15 +102,11 @@ public static bool RemoveDefineSymbol(string symbol, BuildTargetGroup buildTarge /// Symbols to add /// Symbols to remove public static bool ModifyDefineSymbols(List add, List remove) { - EditorUtility.DisplayProgressBar("Modifying Define Symbols", "Starting", 0); - bool change = false; for (int i = 0; i < buildTargetGroupCount; i++) { - EditorUtility.DisplayProgressBar("Modifying Define Symbols", GetBuildTargetGroup(i).ToString(), (float)i / (float)buildTargetGroupCount); if (ModifyDefineSymbols(add, remove, GetBuildTargetGroup(i))) change = true; } - EditorUtility.ClearProgressBar(); return change; }