com.wallstop-studios.unity-helpers 2.0.0-rc27 → 2.0.0-rc31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/.gitattributes +63 -63
  2. package/.github/workflows/npm-publish.yml +60 -0
  3. package/.github/workflows/unity-package.yml +101 -0
  4. package/.github/workflows/unity-tests.yml +38 -0
  5. package/Editor/AnimationCopier.cs +158 -158
  6. package/Editor/AnimationCopier.cs.meta +2 -2
  7. package/Editor/AnimationCreator.cs +262 -262
  8. package/Editor/AnimationCreator.cs.meta +11 -11
  9. package/Editor/AnimationEventEditor.cs +887 -887
  10. package/Editor/AnimatorControllerCopier.cs +162 -162
  11. package/Editor/AnimatorControllerCopier.cs.meta +2 -2
  12. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs +34 -34
  13. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs.meta +2 -2
  14. package/Editor/CustomEditors.meta +2 -2
  15. package/Editor/EnsureTextureSizeWizard.cs +110 -110
  16. package/Editor/EnsureTextureSizeWizard.cs.meta +2 -2
  17. package/Editor/PrefabCheckWizard.cs +165 -165
  18. package/Editor/PrefabCheckWizard.cs.meta +11 -11
  19. package/Editor/SpriteSettingsApplier.cs +168 -168
  20. package/Editor/SpriteSettingsApplier.cs.meta +2 -2
  21. package/Editor/StringInListeDrawer.cs +56 -56
  22. package/Editor/TextureResizerWizard.cs +181 -181
  23. package/Editor/TextureResizerWizard.cs.meta +2 -2
  24. package/Editor/TextureSettingsApplier.cs +171 -171
  25. package/Editor/TextureSettingsApplier.cs.meta +2 -2
  26. package/Editor/Utils/EditorUtilities.cs +22 -22
  27. package/Editor/Utils/EditorUtilities.cs.meta +11 -11
  28. package/Editor/Utils/ReadOnlyPropertyDrawer.cs +26 -26
  29. package/Editor/Utils/ReadOnlyPropertyDrawer.cs.meta +11 -11
  30. package/Editor/Utils.meta +8 -8
  31. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef +17 -17
  32. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef.meta +7 -7
  33. package/LICENSE +21 -21
  34. package/LICENSE.md +6 -6
  35. package/LICENSE.meta +7 -7
  36. package/README.md +117 -117
  37. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll.meta +33 -33
  38. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml +223 -223
  39. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml.meta +7 -7
  40. package/Runtime/Binaries/System.Text.Encodings.Web.dll.meta +33 -33
  41. package/Runtime/Binaries/System.Text.Encodings.Web.xml +935 -935
  42. package/Runtime/Binaries/System.Text.Encodings.Web.xml.meta +7 -7
  43. package/Runtime/Binaries/System.Text.Json.dll.meta +33 -33
  44. package/Runtime/Binaries/System.Text.Json.xml +4829 -4829
  45. package/Runtime/Binaries/System.Text.Json.xml.meta +7 -7
  46. package/Runtime/Binaries.meta +8 -8
  47. package/Runtime/Core/Attributes/AnimationEventAttribute.cs +131 -131
  48. package/Runtime/Core/Attributes/ChildComponentAttribute.cs +189 -189
  49. package/Runtime/Core/Attributes/KSerializableAttribute.cs +19 -19
  50. package/Runtime/Core/Attributes/NotNullAttribute.cs +32 -32
  51. package/Runtime/Core/Attributes/ParentComponent.cs +184 -184
  52. package/Runtime/Core/Attributes/ReadOnlyAttribute.cs +6 -6
  53. package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +14 -14
  54. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +119 -119
  55. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs.meta +11 -11
  56. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs +101 -101
  57. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs.meta +11 -11
  58. package/Runtime/Core/Attributes.meta +8 -8
  59. package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs +92 -92
  60. package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs +185 -185
  61. package/Runtime/Core/DataStructure/Adapters/KGuid.cs +305 -305
  62. package/Runtime/Core/DataStructure/Adapters/KVector2.cs +80 -80
  63. package/Runtime/Core/DataStructure/Circle.cs +50 -50
  64. package/Runtime/Core/DataStructure/CyclicBuffer.cs +155 -155
  65. package/Runtime/Core/DataStructure/ISpatialTree.cs +60 -60
  66. package/Runtime/Core/DataStructure/ISpatialTree.cs.meta +11 -11
  67. package/Runtime/Core/DataStructure/KDTree.cs +290 -290
  68. package/Runtime/Core/DataStructure/KDTree.cs.meta +11 -11
  69. package/Runtime/Core/DataStructure/QuadTree.cs +279 -279
  70. package/Runtime/Core/DataStructure/RTree.cs +336 -336
  71. package/Runtime/Core/DataStructure/RTree.cs.meta +11 -11
  72. package/Runtime/Core/DataStructure/StringWrapper.cs +91 -91
  73. package/Runtime/Core/DataStructure/TimedCache.cs +51 -51
  74. package/Runtime/Core/Extension/AnimatorExtensions.cs +25 -25
  75. package/Runtime/Core/Extension/CircleExtensions.cs +25 -25
  76. package/Runtime/Core/Extension/ColorExtensions.cs +338 -338
  77. package/Runtime/Core/Extension/DictionaryExtensions.cs +251 -251
  78. package/Runtime/Core/Extension/DirectionExtensions.cs +213 -213
  79. package/Runtime/Core/Extension/HashSetExtensions.cs +12 -12
  80. package/Runtime/Core/Extension/IEnumerableExtensions.cs +122 -122
  81. package/Runtime/Core/Extension/IListExtensions.cs +89 -89
  82. package/Runtime/Core/Extension/LoggingExtensions.cs +258 -258
  83. package/Runtime/Core/Extension/RandomExtensions.cs +109 -109
  84. package/Runtime/Core/Extension/StringExtensions.cs +151 -151
  85. package/Runtime/Core/Extension/UnityExtensions.cs +1607 -1607
  86. package/Runtime/Core/Helper/ArrayConverter.cs +39 -39
  87. package/Runtime/Core/Helper/ArrayConverter.cs.meta +2 -2
  88. package/Runtime/Core/Helper/AssignUtilities.cs +14 -14
  89. package/Runtime/Core/Helper/AssignUtilities.cs.meta +11 -11
  90. package/Runtime/Core/Helper/Enumerables.cs +17 -17
  91. package/Runtime/Core/Helper/Geometry.cs +43 -43
  92. package/Runtime/Core/Helper/Helpers.cs +722 -722
  93. package/Runtime/Core/Helper/Helpers.cs.meta +11 -11
  94. package/Runtime/Core/Helper/IterationHelpers.cs +32 -32
  95. package/Runtime/Core/Helper/IterationHelpers.cs.meta +11 -11
  96. package/Runtime/Core/Helper/LifetimeHelpers.cs +13 -13
  97. package/Runtime/Core/Helper/Objects.cs +767 -767
  98. package/Runtime/Core/Helper/Partials/LogHelpers.cs +13 -13
  99. package/Runtime/Core/Helper/Partials/LogHelpers.cs.meta +2 -2
  100. package/Runtime/Core/Helper/Partials/MathHelpers.cs +30 -30
  101. package/Runtime/Core/Helper/Partials/MathHelpers.cs.meta +2 -2
  102. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +388 -388
  103. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs.meta +2 -2
  104. package/Runtime/Core/Helper/Partials/TransformHelpers.cs +167 -167
  105. package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +2 -2
  106. package/Runtime/Core/Helper/Partials.meta +2 -2
  107. package/Runtime/Core/Helper/ReflectionHelpers.cs +152 -152
  108. package/Runtime/Core/Helper/ReflectionHelpers.cs.meta +2 -2
  109. package/Runtime/Core/Helper/SpriteHelpers.cs +86 -86
  110. package/Runtime/Core/Helper/SpriteHelpers.cs.meta +11 -11
  111. package/Runtime/Core/Helper/StringInList.cs +31 -31
  112. package/Runtime/Core/Helper/StringInList.cs.meta +11 -11
  113. package/Runtime/Core/Helper/WallMath.cs +166 -166
  114. package/Runtime/Core/Math/Line.cs +55 -55
  115. package/Runtime/Core/Math/Parabola.cs +47 -47
  116. package/Runtime/Core/Math/PointPolygonCheck.cs +36 -36
  117. package/Runtime/Core/Math/PointPolygonCheck.cs.meta +11 -11
  118. package/Runtime/Core/Math/Range.cs +92 -92
  119. package/Runtime/Core/Math/XXHash.cs +310 -310
  120. package/Runtime/Core/Math/XXHash.cs.meta +11 -11
  121. package/Runtime/Core/Model/Direction.cs +43 -43
  122. package/Runtime/Core/OneOf/FastOneOf.cs +152 -152
  123. package/Runtime/Core/OneOf/None.cs +4 -4
  124. package/Runtime/Core/Random/AbstractRandom.cs +561 -561
  125. package/Runtime/Core/Random/DotNetRandom.cs +52 -52
  126. package/Runtime/Core/Random/DotNetRandom.cs.meta +2 -2
  127. package/Runtime/Core/Random/IRandom.cs +160 -160
  128. package/Runtime/Core/Random/NativePcgRandom.cs +97 -97
  129. package/Runtime/Core/Random/PRNG.cs +7 -7
  130. package/Runtime/Core/Random/PRNG.cs.meta +2 -2
  131. package/Runtime/Core/Random/PcgRandom.cs +149 -149
  132. package/Runtime/Core/Random/PerlinNoise.cs +369 -369
  133. package/Runtime/Core/Random/PerlinNoise.cs.meta +2 -2
  134. package/Runtime/Core/Random/RandomState.cs +131 -131
  135. package/Runtime/Core/Random/RandomUtilities.cs +26 -26
  136. package/Runtime/Core/Random/RandomUtilities.cs.meta +11 -11
  137. package/Runtime/Core/Random/RomuDuo.cs +116 -116
  138. package/Runtime/Core/Random/RomuDuo.cs.meta +2 -2
  139. package/Runtime/Core/Random/SplitMix64.cs +94 -94
  140. package/Runtime/Core/Random/SplitMix64.cs.meta +2 -2
  141. package/Runtime/Core/Random/SquirrelRandom.cs +84 -84
  142. package/Runtime/Core/Random/SystemRandom.cs +162 -162
  143. package/Runtime/Core/Random/ThreadLocalRandom.cs +12 -12
  144. package/Runtime/Core/Random/UnityRandom.cs +57 -57
  145. package/Runtime/Core/Random/UnityRandom.cs.meta +11 -11
  146. package/Runtime/Core/Random/WyRandom.cs +121 -121
  147. package/Runtime/Core/Random/WyRandom.cs.meta +2 -2
  148. package/Runtime/Core/Random/XorShiftRandom.cs +47 -47
  149. package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -11
  150. package/Runtime/Core/Random/XorShiroRandom.cs +117 -117
  151. package/Runtime/Core/Random/XorShiroRandom.cs.meta +2 -2
  152. package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +74 -74
  153. package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +81 -81
  154. package/Runtime/Core/Serialization/Serializer.cs +184 -184
  155. package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +107 -107
  156. package/Runtime/Protobuf-Net/System.Buffers.dll.meta +33 -33
  157. package/Runtime/Protobuf-Net/System.Collections.Immutable.dll.meta +33 -33
  158. package/Runtime/Protobuf-Net/System.Collections.Immutable.xml +5379 -5379
  159. package/Runtime/Protobuf-Net/System.Collections.Immutable.xml.meta +7 -7
  160. package/Runtime/Protobuf-Net/System.Numerics.Vectors.dll.meta +33 -33
  161. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll.meta +33 -33
  162. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml +290 -290
  163. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml.meta +7 -7
  164. package/Runtime/Protobuf-Net/protobuf-net.Core.dll.meta +33 -33
  165. package/Runtime/Protobuf-Net/protobuf-net.dll.meta +33 -33
  166. package/Runtime/UI/LayeredImage.cs +364 -364
  167. package/Runtime/UI/LayeredImage.cs.meta +2 -2
  168. package/Runtime/UI.meta +2 -2
  169. package/Runtime/Utils/AnimationEventEqualityComparer.cs +161 -161
  170. package/Runtime/Utils/AnimatorEnumStateMachine.cs +88 -88
  171. package/Runtime/Utils/Buffers.cs +32 -32
  172. package/Runtime/Utils/CenterPointOffset.cs +30 -30
  173. package/Runtime/Utils/CenterPointOffset.cs.meta +2 -2
  174. package/Runtime/Utils/CircleLineRenderer.cs +134 -134
  175. package/Runtime/Utils/CoroutineHandler.cs +4 -4
  176. package/Runtime/Utils/CoroutineHandler.cs.meta +2 -2
  177. package/Runtime/Utils/MatchColliderToSprite.cs +94 -94
  178. package/Runtime/Utils/MatchColliderToSprite.cs.meta +2 -2
  179. package/Runtime/Utils/Oscillator.cs +27 -27
  180. package/Runtime/Utils/RuntimeSingleton.cs +57 -57
  181. package/Runtime/Utils/RuntimeSingleton.cs.meta +11 -11
  182. package/Runtime/Utils/SetTextureImportData.cs +69 -69
  183. package/Runtime/Utils/SpriteRendererMetadata.cs +312 -312
  184. package/Runtime/Utils/SpriteRendererMetadata.cs.meta +2 -2
  185. package/Runtime/Utils/SpriteRendererSyncer.cs +100 -100
  186. package/Runtime/Utils/SpriteRendererSyncer.cs.meta +2 -2
  187. package/Runtime/Utils/TextureScale.cs +179 -179
  188. package/Runtime/Utils/TextureScale.cs.meta +2 -2
  189. package/Runtime/WallstopStudios.UnityHelpers.asmdef +13 -13
  190. package/Tests/Runtime/Attributes/ChildComponentTests.cs +81 -81
  191. package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs +28 -28
  192. package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs +28 -28
  193. package/Tests/Runtime/Attributes/ParentComponentTests.cs +68 -68
  194. package/Tests/Runtime/Components/RelationalComponentTester.cs +34 -34
  195. package/Tests/Runtime/Components/RelationalComponentTester.cs.meta +2 -2
  196. package/Tests/Runtime/Components.meta +2 -2
  197. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs +14 -14
  198. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs.meta +11 -11
  199. package/Tests/Runtime/DataStructures/CyclicBufferTests.cs +324 -324
  200. package/Tests/Runtime/DataStructures/QuadTreeTests.cs +14 -14
  201. package/Tests/Runtime/DataStructures/QuadTreeTests.cs.meta +11 -11
  202. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs +130 -130
  203. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs.meta +11 -11
  204. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs +14 -14
  205. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs.meta +11 -11
  206. package/Tests/Runtime/DataStructures.meta +8 -8
  207. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs +439 -439
  208. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs.meta +2 -2
  209. package/Tests/Runtime/Extensions/IListExtensionTests.cs +76 -76
  210. package/Tests/Runtime/Extensions/RandomExtensionTests.cs +27 -27
  211. package/Tests/Runtime/Extensions/RandomExtensionTests.cs.meta +2 -2
  212. package/Tests/Runtime/Extensions/StringExtensionTests.cs +31 -31
  213. package/Tests/Runtime/Extensions/StringExtensionTests.cs.meta +2 -2
  214. package/Tests/Runtime/Extensions.meta +2 -2
  215. package/Tests/Runtime/Helper/ArrayConverterTests.cs +19 -19
  216. package/Tests/Runtime/Helper/ArrayConverterTests.cs.meta +2 -2
  217. package/Tests/Runtime/Helper/ObjectHelperTests.cs +402 -402
  218. package/Tests/Runtime/Helper/ObjectHelperTests.cs.meta +2 -2
  219. package/Tests/Runtime/Helper/WallMathTests.cs +233 -233
  220. package/Tests/Runtime/Helper/WallMathTests.cs.meta +2 -2
  221. package/Tests/Runtime/Helper.meta +2 -2
  222. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs +14 -14
  223. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs.meta +11 -11
  224. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs +14 -14
  225. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs.meta +11 -11
  226. package/Tests/Runtime/Performance/RandomPerformanceTests.cs +139 -139
  227. package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -11
  228. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +37 -37
  229. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +2 -2
  230. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs +154 -154
  231. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs.meta +11 -11
  232. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs +14 -14
  233. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs.meta +11 -11
  234. package/Tests/Runtime/Performance.meta +8 -8
  235. package/Tests/Runtime/Random/DotNetRandomTests.cs +9 -9
  236. package/Tests/Runtime/Random/DotNetRandomTests.cs.meta +2 -2
  237. package/Tests/Runtime/Random/PcgRandomTests.cs +9 -9
  238. package/Tests/Runtime/Random/PcgRandomTests.cs.meta +11 -11
  239. package/Tests/Runtime/Random/RandomTestBase.cs +787 -787
  240. package/Tests/Runtime/Random/RandomTestBase.cs.meta +11 -11
  241. package/Tests/Runtime/Random/RomuDuoRandomTests.cs +9 -9
  242. package/Tests/Runtime/Random/RomuDuoRandomTests.cs.meta +2 -2
  243. package/Tests/Runtime/Random/SplitMix64RandomTests.cs +9 -9
  244. package/Tests/Runtime/Random/SplitMix64RandomTests.cs.meta +2 -2
  245. package/Tests/Runtime/Random/SquirrelRandomTests.cs +14 -14
  246. package/Tests/Runtime/Random/SquirrelRandomTests.cs.meta +11 -11
  247. package/Tests/Runtime/Random/SystemRandomTests.cs +10 -10
  248. package/Tests/Runtime/Random/SystemRandomTests.cs.meta +11 -11
  249. package/Tests/Runtime/Random/UnityRandomTests.cs +9 -9
  250. package/Tests/Runtime/Random/UnityRandomTests.cs.meta +11 -11
  251. package/Tests/Runtime/Random/WyRandomTests.cs +9 -9
  252. package/Tests/Runtime/Random/WyRandomTests.cs.meta +2 -2
  253. package/Tests/Runtime/Random/XorShiftRandomTests.cs +9 -9
  254. package/Tests/Runtime/Random/XorShiftRandomTests.cs.meta +11 -11
  255. package/Tests/Runtime/Random/XorShiroRandomTests.cs +9 -9
  256. package/Tests/Runtime/Random/XorShiroRandomTests.cs.meta +2 -2
  257. package/Tests/Runtime/Random.meta +8 -8
  258. package/Tests/Runtime/Serialization/JsonSerializationTest.cs +84 -84
  259. package/Tests/Runtime/Serialization/JsonSerializationTest.cs.meta +2 -2
  260. package/Tests/Runtime/Serialization.meta +2 -2
  261. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs +399 -399
  262. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs.meta +2 -2
  263. package/Tests/Runtime/Utils.meta +2 -2
  264. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef +22 -22
  265. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef.meta +7 -7
  266. package/Tests/Runtime.meta +8 -8
  267. package/package.json +38 -38
@@ -1,171 +1,171 @@
1
- namespace UnityHelpers.Editor
2
- {
3
- #if UNITY_EDITOR
4
- using System;
5
- using System.Collections.Generic;
6
- using System.IO;
7
- using System.Linq;
8
- using Core.Extension;
9
- using UnityEditor;
10
- using UnityEngine;
11
- using UnityHelpers.Utils;
12
- using Object = UnityEngine.Object;
13
-
14
- public sealed class TextureSettingsApplier : ScriptableWizard
15
- {
16
- public bool applyReadOnly = false;
17
- public bool isReadOnly = false;
18
- public bool applyMipMaps = false;
19
- public bool generateMipMaps = false;
20
- public bool applyWrapMode = false;
21
- public TextureWrapMode wrapMode = TextureWrapMode.Clamp;
22
- public bool applyFilterMode = false;
23
- public FilterMode filterMode = FilterMode.Trilinear;
24
- public TextureImporterCompression compression = TextureImporterCompression.CompressedHQ;
25
- public bool useCrunchCompression = true;
26
- public TextureResizeAlgorithm textureResizeAlgorithm = TextureResizeAlgorithm.Bilinear;
27
- public int maxTextureSize = SetTextureImportData.MaxTextureSize;
28
- public TextureImporterFormat textureFormat = TextureImporterFormat.Automatic;
29
- public List<string> spriteFileExtensions = new() { ".png" };
30
-
31
- public List<Texture2D> textures = new();
32
-
33
- [Tooltip(
34
- "Drag a folder from Unity here to apply the configuration to all settings under it. No sprites are modified if no directories are provided."
35
- )]
36
- public List<Object> directories = new();
37
-
38
- [MenuItem("Tools/Unity Helpers/Texture Settings Applier")]
39
- public static void CreateAnimation()
40
- {
41
- _ = DisplayWizard<TextureSettingsApplier>("Texture Settings Directory Applier", "Set");
42
- }
43
-
44
- private void OnWizardCreate()
45
- {
46
- HashSet<string> uniqueDirectories = new();
47
- foreach (Object directory in directories)
48
- {
49
- string assetPath = AssetDatabase.GetAssetPath(directory);
50
- if (Directory.Exists(assetPath))
51
- {
52
- _ = uniqueDirectories.Add(assetPath);
53
- }
54
- }
55
-
56
- int textureCount = 0;
57
- HashSet<string> processedPaths = new();
58
- foreach (
59
- Texture2D texture in textures
60
- ?.Distinct()
61
- .OrderBy(texture => texture != null ? texture.name : string.Empty)
62
- ?? Enumerable.Empty<Texture2D>()
63
- )
64
- {
65
- if (texture == null)
66
- {
67
- continue;
68
- }
69
-
70
- string assetPath = AssetDatabase.GetAssetPath(texture);
71
- if (
72
- processedPaths.Add(Application.dataPath + assetPath)
73
- && TryUpdateTextureSettings(assetPath)
74
- )
75
- {
76
- ++textureCount;
77
- }
78
- }
79
-
80
- Queue<string> directoriesToCheck = new(uniqueDirectories);
81
- while (directoriesToCheck.TryDequeue(out string directoryPath))
82
- {
83
- foreach (string fullFilePath in Directory.EnumerateFiles(directoryPath))
84
- {
85
- if (!spriteFileExtensions.Contains(Path.GetExtension(fullFilePath)))
86
- {
87
- continue;
88
- }
89
-
90
- int index = fullFilePath.LastIndexOf(
91
- directoryPath,
92
- StringComparison.OrdinalIgnoreCase
93
- );
94
- if (index < 0)
95
- {
96
- continue;
97
- }
98
-
99
- string filePath = fullFilePath.Substring(index);
100
- if (processedPaths.Add(fullFilePath) && TryUpdateTextureSettings(filePath))
101
- {
102
- ++textureCount;
103
- }
104
- }
105
-
106
- foreach (string subDirectory in Directory.EnumerateDirectories(directoryPath))
107
- {
108
- int index = subDirectory.LastIndexOf(
109
- directoryPath,
110
- StringComparison.OrdinalIgnoreCase
111
- );
112
- if (index < 0)
113
- {
114
- continue;
115
- }
116
-
117
- directoriesToCheck.Enqueue(subDirectory.Substring(index));
118
- }
119
- }
120
-
121
- this.Log("Processed {0} textures.", textureCount);
122
- if (0 < textureCount)
123
- {
124
- AssetDatabase.Refresh();
125
- }
126
- }
127
-
128
- private bool TryUpdateTextureSettings(string filePath)
129
- {
130
- TextureImporter textureImporter = AssetImporter.GetAtPath(filePath) as TextureImporter;
131
- if (textureImporter == null)
132
- {
133
- return false;
134
- }
135
-
136
- textureImporter.SetPlatformTextureSettings(
137
- new TextureImporterPlatformSettings
138
- {
139
- resizeAlgorithm = textureResizeAlgorithm,
140
- maxTextureSize = maxTextureSize,
141
- format = textureFormat,
142
- textureCompression = compression,
143
- crunchedCompression = useCrunchCompression,
144
- }
145
- );
146
- if (applyReadOnly)
147
- {
148
- textureImporter.isReadable = !isReadOnly;
149
- }
150
-
151
- if (applyMipMaps)
152
- {
153
- textureImporter.mipmapEnabled = generateMipMaps;
154
- }
155
-
156
- if (applyWrapMode)
157
- {
158
- textureImporter.wrapMode = wrapMode;
159
- }
160
-
161
- if (applyFilterMode)
162
- {
163
- textureImporter.filterMode = filterMode;
164
- }
165
-
166
- textureImporter.SaveAndReimport();
167
- return true;
168
- }
169
- }
170
- #endif
171
- }
1
+ namespace UnityHelpers.Editor
2
+ {
3
+ #if UNITY_EDITOR
4
+ using System;
5
+ using System.Collections.Generic;
6
+ using System.IO;
7
+ using System.Linq;
8
+ using Core.Extension;
9
+ using UnityEditor;
10
+ using UnityEngine;
11
+ using UnityHelpers.Utils;
12
+ using Object = UnityEngine.Object;
13
+
14
+ public sealed class TextureSettingsApplier : ScriptableWizard
15
+ {
16
+ public bool applyReadOnly = false;
17
+ public bool isReadOnly = false;
18
+ public bool applyMipMaps = false;
19
+ public bool generateMipMaps = false;
20
+ public bool applyWrapMode = false;
21
+ public TextureWrapMode wrapMode = TextureWrapMode.Clamp;
22
+ public bool applyFilterMode = false;
23
+ public FilterMode filterMode = FilterMode.Trilinear;
24
+ public TextureImporterCompression compression = TextureImporterCompression.CompressedHQ;
25
+ public bool useCrunchCompression = true;
26
+ public TextureResizeAlgorithm textureResizeAlgorithm = TextureResizeAlgorithm.Bilinear;
27
+ public int maxTextureSize = SetTextureImportData.MaxTextureSize;
28
+ public TextureImporterFormat textureFormat = TextureImporterFormat.Automatic;
29
+ public List<string> spriteFileExtensions = new() { ".png" };
30
+
31
+ public List<Texture2D> textures = new();
32
+
33
+ [Tooltip(
34
+ "Drag a folder from Unity here to apply the configuration to all settings under it. No sprites are modified if no directories are provided."
35
+ )]
36
+ public List<Object> directories = new();
37
+
38
+ [MenuItem("Tools/Unity Helpers/Texture Settings Applier")]
39
+ public static void CreateAnimation()
40
+ {
41
+ _ = DisplayWizard<TextureSettingsApplier>("Texture Settings Directory Applier", "Set");
42
+ }
43
+
44
+ private void OnWizardCreate()
45
+ {
46
+ HashSet<string> uniqueDirectories = new();
47
+ foreach (Object directory in directories)
48
+ {
49
+ string assetPath = AssetDatabase.GetAssetPath(directory);
50
+ if (Directory.Exists(assetPath))
51
+ {
52
+ _ = uniqueDirectories.Add(assetPath);
53
+ }
54
+ }
55
+
56
+ int textureCount = 0;
57
+ HashSet<string> processedPaths = new();
58
+ foreach (
59
+ Texture2D texture in textures
60
+ ?.Distinct()
61
+ .OrderBy(texture => texture != null ? texture.name : string.Empty)
62
+ ?? Enumerable.Empty<Texture2D>()
63
+ )
64
+ {
65
+ if (texture == null)
66
+ {
67
+ continue;
68
+ }
69
+
70
+ string assetPath = AssetDatabase.GetAssetPath(texture);
71
+ if (
72
+ processedPaths.Add(Application.dataPath + assetPath)
73
+ && TryUpdateTextureSettings(assetPath)
74
+ )
75
+ {
76
+ ++textureCount;
77
+ }
78
+ }
79
+
80
+ Queue<string> directoriesToCheck = new(uniqueDirectories);
81
+ while (directoriesToCheck.TryDequeue(out string directoryPath))
82
+ {
83
+ foreach (string fullFilePath in Directory.EnumerateFiles(directoryPath))
84
+ {
85
+ if (!spriteFileExtensions.Contains(Path.GetExtension(fullFilePath)))
86
+ {
87
+ continue;
88
+ }
89
+
90
+ int index = fullFilePath.LastIndexOf(
91
+ directoryPath,
92
+ StringComparison.OrdinalIgnoreCase
93
+ );
94
+ if (index < 0)
95
+ {
96
+ continue;
97
+ }
98
+
99
+ string filePath = fullFilePath.Substring(index);
100
+ if (processedPaths.Add(fullFilePath) && TryUpdateTextureSettings(filePath))
101
+ {
102
+ ++textureCount;
103
+ }
104
+ }
105
+
106
+ foreach (string subDirectory in Directory.EnumerateDirectories(directoryPath))
107
+ {
108
+ int index = subDirectory.LastIndexOf(
109
+ directoryPath,
110
+ StringComparison.OrdinalIgnoreCase
111
+ );
112
+ if (index < 0)
113
+ {
114
+ continue;
115
+ }
116
+
117
+ directoriesToCheck.Enqueue(subDirectory.Substring(index));
118
+ }
119
+ }
120
+
121
+ this.Log("Processed {0} textures.", textureCount);
122
+ if (0 < textureCount)
123
+ {
124
+ AssetDatabase.Refresh();
125
+ }
126
+ }
127
+
128
+ private bool TryUpdateTextureSettings(string filePath)
129
+ {
130
+ TextureImporter textureImporter = AssetImporter.GetAtPath(filePath) as TextureImporter;
131
+ if (textureImporter == null)
132
+ {
133
+ return false;
134
+ }
135
+
136
+ textureImporter.SetPlatformTextureSettings(
137
+ new TextureImporterPlatformSettings
138
+ {
139
+ resizeAlgorithm = textureResizeAlgorithm,
140
+ maxTextureSize = maxTextureSize,
141
+ format = textureFormat,
142
+ textureCompression = compression,
143
+ crunchedCompression = useCrunchCompression,
144
+ }
145
+ );
146
+ if (applyReadOnly)
147
+ {
148
+ textureImporter.isReadable = !isReadOnly;
149
+ }
150
+
151
+ if (applyMipMaps)
152
+ {
153
+ textureImporter.mipmapEnabled = generateMipMaps;
154
+ }
155
+
156
+ if (applyWrapMode)
157
+ {
158
+ textureImporter.wrapMode = wrapMode;
159
+ }
160
+
161
+ if (applyFilterMode)
162
+ {
163
+ textureImporter.filterMode = filterMode;
164
+ }
165
+
166
+ textureImporter.SaveAndReimport();
167
+ return true;
168
+ }
169
+ }
170
+ #endif
171
+ }
@@ -1,3 +1,3 @@
1
- fileFormatVersion: 2
2
- guid: 23e3474825574ecfa1084d4d4ca83ebd
1
+ fileFormatVersion: 2
2
+ guid: 23e3474825574ecfa1084d4d4ca83ebd
3
3
  timeCreated: 1720666563
@@ -1,22 +1,22 @@
1
- namespace UnityHelpers.Editor.Utils
2
- {
3
- #if UNITY_EDITOR
4
- using System;
5
- using System.Reflection;
6
- using UnityEditor;
7
-
8
- public static class EditorUtilities
9
- {
10
- public static string GetCurrentPathOfProjectWindow()
11
- {
12
- Type projectWindowUtilType = typeof(ProjectWindowUtil);
13
- MethodInfo getActiveFolderPath = projectWindowUtilType.GetMethod(
14
- "GetActiveFolderPath",
15
- BindingFlags.Static | BindingFlags.NonPublic
16
- );
17
- object obj = getActiveFolderPath?.Invoke(null, Array.Empty<object>());
18
- return obj?.ToString() ?? string.Empty;
19
- }
20
- }
21
- #endif
22
- }
1
+ namespace UnityHelpers.Editor.Utils
2
+ {
3
+ #if UNITY_EDITOR
4
+ using System;
5
+ using System.Reflection;
6
+ using UnityEditor;
7
+
8
+ public static class EditorUtilities
9
+ {
10
+ public static string GetCurrentPathOfProjectWindow()
11
+ {
12
+ Type projectWindowUtilType = typeof(ProjectWindowUtil);
13
+ MethodInfo getActiveFolderPath = projectWindowUtilType.GetMethod(
14
+ "GetActiveFolderPath",
15
+ BindingFlags.Static | BindingFlags.NonPublic
16
+ );
17
+ object obj = getActiveFolderPath?.Invoke(null, Array.Empty<object>());
18
+ return obj?.ToString() ?? string.Empty;
19
+ }
20
+ }
21
+ #endif
22
+ }
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: 9256940fb08e3b847a327d916cdce82c
3
- MonoImporter:
4
- externalObjects: {}
5
- serializedVersion: 2
6
- defaultReferences: []
7
- executionOrder: 0
8
- icon: {instanceID: 0}
9
- userData:
10
- assetBundleName:
11
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: 9256940fb08e3b847a327d916cdce82c
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -1,26 +1,26 @@
1
- namespace UnityHelpers.Editor.Utils
2
- {
3
- #if UNITY_EDITOR
4
- using Core.Attributes;
5
- using UnityEditor;
6
- using UnityEngine;
7
-
8
- // https://www.patrykgalach.com/2020/01/20/readonly-attribute-in-unity-editor/
9
- [CustomPropertyDrawer(typeof(ReadOnlyAttribute))]
10
- public sealed class ReadOnlyPropertyDrawer : PropertyDrawer
11
- {
12
- public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
13
- {
14
- return EditorGUI.GetPropertyHeight(property, label, true);
15
- }
16
-
17
- public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
18
- {
19
- bool previousGUIState = GUI.enabled;
20
- GUI.enabled = false;
21
- _ = EditorGUI.PropertyField(position, property, label);
22
- GUI.enabled = previousGUIState;
23
- }
24
- }
25
- #endif
26
- }
1
+ namespace UnityHelpers.Editor.Utils
2
+ {
3
+ #if UNITY_EDITOR
4
+ using Core.Attributes;
5
+ using UnityEditor;
6
+ using UnityEngine;
7
+
8
+ // https://www.patrykgalach.com/2020/01/20/readonly-attribute-in-unity-editor/
9
+ [CustomPropertyDrawer(typeof(ReadOnlyAttribute))]
10
+ public sealed class ReadOnlyPropertyDrawer : PropertyDrawer
11
+ {
12
+ public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
13
+ {
14
+ return EditorGUI.GetPropertyHeight(property, label, true);
15
+ }
16
+
17
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
18
+ {
19
+ bool previousGUIState = GUI.enabled;
20
+ GUI.enabled = false;
21
+ _ = EditorGUI.PropertyField(position, property, label);
22
+ GUI.enabled = previousGUIState;
23
+ }
24
+ }
25
+ #endif
26
+ }
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: c10f5b90c98ae0d48a81cf8d36a9d9ef
3
- MonoImporter:
4
- externalObjects: {}
5
- serializedVersion: 2
6
- defaultReferences: []
7
- executionOrder: 0
8
- icon: {instanceID: 0}
9
- userData:
10
- assetBundleName:
11
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: c10f5b90c98ae0d48a81cf8d36a9d9ef
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
package/Editor/Utils.meta CHANGED
@@ -1,8 +1,8 @@
1
- fileFormatVersion: 2
2
- guid: b8d1e55b56715f64db1fa9dabc1cb498
3
- folderAsset: yes
4
- DefaultImporter:
5
- externalObjects: {}
6
- userData:
7
- assetBundleName:
8
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: b8d1e55b56715f64db1fa9dabc1cb498
3
+ folderAsset: yes
4
+ DefaultImporter:
5
+ externalObjects: {}
6
+ userData:
7
+ assetBundleName:
8
+ assetBundleVariant:
@@ -1,18 +1,18 @@
1
- {
2
- "name": "WallstopStudios.UnityHelpers.Editor",
3
- "rootNamespace": "",
4
- "references": [
5
- "WallstopStudios.UnityHelpers"
6
- ],
7
- "includePlatforms": [
8
- "Editor"
9
- ],
10
- "excludePlatforms": [],
11
- "allowUnsafeCode": false,
12
- "overrideReferences": false,
13
- "precompiledReferences": [],
14
- "autoReferenced": true,
15
- "defineConstraints": [],
16
- "versionDefines": [],
17
- "noEngineReferences": false
1
+ {
2
+ "name": "WallstopStudios.UnityHelpers.Editor",
3
+ "rootNamespace": "",
4
+ "references": [
5
+ "WallstopStudios.UnityHelpers"
6
+ ],
7
+ "includePlatforms": [
8
+ "Editor"
9
+ ],
10
+ "excludePlatforms": [],
11
+ "allowUnsafeCode": false,
12
+ "overrideReferences": false,
13
+ "precompiledReferences": [],
14
+ "autoReferenced": true,
15
+ "defineConstraints": [],
16
+ "versionDefines": [],
17
+ "noEngineReferences": false
18
18
  }
@@ -1,7 +1,7 @@
1
- fileFormatVersion: 2
2
- guid: de86e2706cb173041874cadb20669cb0
3
- AssemblyDefinitionImporter:
4
- externalObjects: {}
5
- userData:
6
- assetBundleName:
7
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: de86e2706cb173041874cadb20669cb0
3
+ AssemblyDefinitionImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant:
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2023 Eli Pinkerton
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Eli Pinkerton
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/LICENSE.md CHANGED
@@ -1,7 +1,7 @@
1
- Copyright 2023 Eli Pinkerton
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
-
5
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
-
1
+ Copyright 2023 Eli Pinkerton
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
7
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/LICENSE.meta CHANGED
@@ -1,7 +1,7 @@
1
- fileFormatVersion: 2
2
- guid: a6e47b47847d6be4ba31a4de140b068d
3
- DefaultImporter:
4
- externalObjects: {}
5
- userData:
6
- assetBundleName:
7
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: a6e47b47847d6be4ba31a4de140b068d
3
+ DefaultImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant: