From 309100156858b3296a19866104adbf7f7f606554 Mon Sep 17 00:00:00 2001 From: Conrad Kreyling Date: Tue, 30 Jan 2024 14:21:18 -0500 Subject: [PATCH 1/3] Change preferences path from preferences to assets --- Assets/SpriteAssist/Editor/Settings/SpriteAssistSettings.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/SpriteAssist/Editor/Settings/SpriteAssistSettings.cs b/Assets/SpriteAssist/Editor/Settings/SpriteAssistSettings.cs index 558cd1c..850d1cc 100644 --- a/Assets/SpriteAssist/Editor/Settings/SpriteAssistSettings.cs +++ b/Assets/SpriteAssist/Editor/Settings/SpriteAssistSettings.cs @@ -2,7 +2,7 @@ namespace SpriteAssist { - [FilePath(SETTINGS_PATH, FilePathAttribute.Location.PreferencesFolder)] + [FilePath(SETTINGS_PATH, FilePathAttribute.Location.ProjectFolder)] public class SpriteAssistSettings : ScriptableSingleton { private const string SETTINGS_PATH = "Assets/Editor/SpriteAssistSettings.asset"; From 513663e2572fadf7f27f9e4df227f52d10207427 Mon Sep 17 00:00:00 2001 From: Conrad Kreyling Date: Tue, 30 Jan 2024 14:24:42 -0500 Subject: [PATCH 2/3] Include / Exclude modes --- Assets/Editor/SpriteAssistSettings.asset | 4 +- Assets/Example/Excluded.meta | 8 ++ ...p-cph-3b20000-3b24000-3b24100-3b24113r.jpg | Bin 0 -> 55083 bytes ...-3b20000-3b24000-3b24100-3b24113r.jpg.meta | 127 ++++++++++++++++++ .../Editor/Inspector/SpriteInspector.cs | 23 +++- .../Settings/SpriteAssistInclusionMode.cs | 22 +++ .../SpriteAssistInclusionMode.cs.meta | 11 ++ .../Editor/Settings/SpriteAssistSettings.cs | 73 +++++++++- 8 files changed, 260 insertions(+), 8 deletions(-) create mode 100644 Assets/Example/Excluded.meta create mode 100644 Assets/Example/Excluded/service-pnp-cph-3b20000-3b24000-3b24100-3b24113r.jpg create mode 100644 Assets/Example/Excluded/service-pnp-cph-3b20000-3b24000-3b24100-3b24113r.jpg.meta create mode 100644 Assets/SpriteAssist/Editor/Settings/SpriteAssistInclusionMode.cs create mode 100644 Assets/SpriteAssist/Editor/Settings/SpriteAssistInclusionMode.cs.meta diff --git a/Assets/Editor/SpriteAssistSettings.asset b/Assets/Editor/SpriteAssistSettings.asset index eec43a1..f475d13 100644 --- a/Assets/Editor/SpriteAssistSettings.asset +++ b/Assets/Editor/SpriteAssistSettings.asset @@ -17,10 +17,12 @@ MonoBehaviour: prefabRelativePath: defaultTransparentShaderName: Unlit/Transparent defaultOpaqueShaderName: Unlit/Texture - defaultThickness: 0 defaultTag: Untagged defaultLayer: 0 defaultSortingLayerId: 0 defaultSortingOrder: 0 maxThumbnailPreviewCount: 10 enableRenameMeshPrefabAutomatically: 0 + inclusionMode: 0 + inclusionGlobs: + - Example/Excluded/* diff --git a/Assets/Example/Excluded.meta b/Assets/Example/Excluded.meta new file mode 100644 index 0000000..2ce94e4 --- /dev/null +++ b/Assets/Example/Excluded.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dbfee7c4e8d5b40328e8fd7a55ae9818 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Example/Excluded/service-pnp-cph-3b20000-3b24000-3b24100-3b24113r.jpg b/Assets/Example/Excluded/service-pnp-cph-3b20000-3b24000-3b24100-3b24113r.jpg new file mode 100644 index 0000000000000000000000000000000000000000..16a86089e45c8aa85dbdc3d5b3eea188a59476c2 GIT binary patch literal 55083 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%0AM_e`hboj4cov)!Nl6zI^JA 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 protected override void OnEnable() { base.OnEnable(); - - SetSpriteProcessor(target, AssetDatabase.GetAssetPath(target)); - AssemblyReloadEvents.afterAssemblyReload += OnAfterAssemblyReload; + if(SpriteAssistSettings.instance.ShouldProcessSprite(target as Sprite)) + { + SetSpriteProcessor(target, AssetDatabase.GetAssetPath(target)); + AssemblyReloadEvents.afterAssemblyReload += OnAfterAssemblyReload; + } } protected override void OnDisable() { base.OnDisable(); - SpriteProcessor?.Dispose(); - AssemblyReloadEvents.afterAssemblyReload -= OnAfterAssemblyReload; + if(SpriteProcessor != null) + { + SpriteProcessor?.Dispose(); + AssemblyReloadEvents.afterAssemblyReload -= OnAfterAssemblyReload; + } } public override void OnInspectorGUI() { + if(SpriteProcessor == null) + { + base.OnInspectorGUI(); + return; + } + using (new EditorGUI.DisabledGroupScope(Application.isPlaying)) { using (var scroll = new EditorGUILayout.ScrollViewScope(_scrollPosition)) @@ -58,7 +69,7 @@ public override void OnPreviewGUI(Rect rect, GUIStyle background) base.OnPreviewGUI(rect, background); Sprite sprite = target as Sprite; - if (sprite == null) + if (SpriteProcessor == null || sprite == null) { return; } diff --git a/Assets/SpriteAssist/Editor/Settings/SpriteAssistInclusionMode.cs b/Assets/SpriteAssist/Editor/Settings/SpriteAssistInclusionMode.cs new file mode 100644 index 0000000..66c7959 --- /dev/null +++ b/Assets/SpriteAssist/Editor/Settings/SpriteAssistInclusionMode.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace SpriteAssist +{ + /// + /// The include/exclude mode for SpriteAssist. + /// + public enum SpriteAssistInclusionMode + { + /// + /// All sprites except those listed in settings will be processed + /// + Exclude, + + /// + /// Only sprites explicitly matched by those in settings will be processed + /// + Include + } +} diff --git a/Assets/SpriteAssist/Editor/Settings/SpriteAssistInclusionMode.cs.meta b/Assets/SpriteAssist/Editor/Settings/SpriteAssistInclusionMode.cs.meta new file mode 100644 index 0000000..fb81209 --- /dev/null +++ b/Assets/SpriteAssist/Editor/Settings/SpriteAssistInclusionMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8c2ad6234ddd4ef896ab67bfca15dcb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SpriteAssist/Editor/Settings/SpriteAssistSettings.cs b/Assets/SpriteAssist/Editor/Settings/SpriteAssistSettings.cs index 850d1cc..2710717 100644 --- a/Assets/SpriteAssist/Editor/Settings/SpriteAssistSettings.cs +++ b/Assets/SpriteAssist/Editor/Settings/SpriteAssistSettings.cs @@ -1,4 +1,7 @@ -using UnityEditor; +using System.Collections.Generic; +using System.Text.RegularExpressions; +using UnityEditor; +using UnityEngine; namespace SpriteAssist { @@ -27,5 +30,73 @@ public class SpriteAssistSettings : ScriptableSingleton public int maxThumbnailPreviewCount = THUMBNAIL_COUNT; public bool enableRenameMeshPrefabAutomatically; + + [Tooltip("Controls if sprites are automatically or explicitly marked for processing")] + public SpriteAssistInclusionMode inclusionMode; + + [Tooltip("Pattern matching globs to describe included/excluded files. All relative to Assets/.")] + public string[] inclusionGlobs = {}; + + protected Dictionary compiledRegexes = new Dictionary(); + + public bool ShouldProcessSprite(Sprite s) + { + if(s == null) + { + return false; + } + + string path = AssetDatabase.GetAssetPath(s); + if(string.IsNullOrEmpty(path) || !path.StartsWith("Assets")) + { + return false; + } + + foreach(string glob in inclusionGlobs) + { + Regex r = GetRegex(glob); + if(r.IsMatch(path)) + { + Debug.Log($"[SpriteAssistSettings] {path} matches {glob}!"); + // return true if explicit inclusion is selected, otherwise false for explicit exclusion + return inclusionMode == SpriteAssistInclusionMode.Include; + } + else + { + Debug.Log($"[SpriteAssistSettings] {path} does not match {glob}"); + } + } + // fallthru: return true if "include by default", otherwise false + Debug.Log($"[SpriteAssistSettings] No match for {path} found"); + return inclusionMode == SpriteAssistInclusionMode.Exclude; + } + + protected void OnValidate() + { + // we don't have granular information to decide if the globs have updated + // so just blow these away + compiledRegexes.Clear(); + } + + private Regex GetRegex(string glob) + { + Regex result = null; + if(!compiledRegexes.TryGetValue(glob, out result)) + { + result = CompileGlob(glob); + compiledRegexes.Add(glob, result); + } + return result; + } + + private Regex CompileGlob(string glob) + { + glob = "Assets/" + glob; + Debug.Log($"[SpriteAssistSettings] compiling `${glob}`"); + return new Regex( + "^" + Regex.Escape(glob).Replace(@"\*", ".*").Replace(@"\?", ".") + "$", + RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Compiled + ); + } } } \ No newline at end of file From b0d75b78dd8b1107ce89e52af7e7d48042e45de4 Mon Sep 17 00:00:00 2001 From: Conrad Kreyling Date: Tue, 30 Jan 2024 16:11:07 -0500 Subject: [PATCH 3/3] Fix missing check in SpritePostProcessor --- .../Editor/Import/SpritePostProcessor.cs | 5 ++++- .../Editor/Settings/SpriteAssistSettings.cs | 16 ++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/Assets/SpriteAssist/Editor/Import/SpritePostProcessor.cs b/Assets/SpriteAssist/Editor/Import/SpritePostProcessor.cs index 9b89560..3e7159f 100644 --- a/Assets/SpriteAssist/Editor/Import/SpritePostProcessor.cs +++ b/Assets/SpriteAssist/Editor/Import/SpritePostProcessor.cs @@ -5,8 +5,11 @@ namespace SpriteAssist { public class SpritePostProcessor : AssetPostprocessor { - private void OnPostprocessSprites(Texture2D _, Sprite[] sprites) + private void OnPostprocessSprites(Texture2D tex, Sprite[] sprites) { + string path = AssetDatabase.GetAssetPath(tex); + if(!SpriteAssistSettings.instance.ShouldProcessSprite(path)) return; + SpriteInspector.isSpriteReloaded = true; TextureImporter textureImporter = assetImporter as TextureImporter; diff --git a/Assets/SpriteAssist/Editor/Settings/SpriteAssistSettings.cs b/Assets/SpriteAssist/Editor/Settings/SpriteAssistSettings.cs index 2710717..1fc0aa4 100644 --- a/Assets/SpriteAssist/Editor/Settings/SpriteAssistSettings.cs +++ b/Assets/SpriteAssist/Editor/Settings/SpriteAssistSettings.cs @@ -45,8 +45,12 @@ public bool ShouldProcessSprite(Sprite s) { return false; } - string path = AssetDatabase.GetAssetPath(s); + return ShouldProcessSprite(path); + } + + public bool ShouldProcessSprite(string path) + { if(string.IsNullOrEmpty(path) || !path.StartsWith("Assets")) { return false; @@ -57,17 +61,17 @@ public bool ShouldProcessSprite(Sprite s) Regex r = GetRegex(glob); if(r.IsMatch(path)) { - Debug.Log($"[SpriteAssistSettings] {path} matches {glob}!"); + // Debug.Log($"[SpriteAssistSettings] {path} matches {glob}!"); // return true if explicit inclusion is selected, otherwise false for explicit exclusion return inclusionMode == SpriteAssistInclusionMode.Include; } else { - Debug.Log($"[SpriteAssistSettings] {path} does not match {glob}"); + // Debug.Log($"[SpriteAssistSettings] {path} does not match {glob}"); } } // fallthru: return true if "include by default", otherwise false - Debug.Log($"[SpriteAssistSettings] No match for {path} found"); + // Debug.Log($"[SpriteAssistSettings] No match for {path} found"); return inclusionMode == SpriteAssistInclusionMode.Exclude; } @@ -92,11 +96,11 @@ private Regex GetRegex(string glob) private Regex CompileGlob(string glob) { glob = "Assets/" + glob; - Debug.Log($"[SpriteAssistSettings] compiling `${glob}`"); + // Debug.Log($"[SpriteAssistSettings] compiling `${glob}`"); return new Regex( "^" + Regex.Escape(glob).Replace(@"\*", ".*").Replace(@"\?", ".") + "$", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Compiled ); } } -} \ No newline at end of file +}