com.wallstop-studios.unity-helpers 2.0.0-rc58 → 2.0.0-rc59

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 (298) hide show
  1. package/.config/dotnet-tools.json +9 -9
  2. package/.editorconfig +184 -184
  3. package/.gitattributes +63 -63
  4. package/.github/workflows/npm-publish.yml +66 -66
  5. package/.pre-commit-config.yaml +21 -21
  6. package/Editor/AnimationCopier.cs +181 -181
  7. package/Editor/AnimationCopier.cs.meta +2 -2
  8. package/Editor/AnimationCreator.cs +253 -253
  9. package/Editor/AnimationCreator.cs.meta +11 -11
  10. package/Editor/AnimationEventEditor.cs +887 -887
  11. package/Editor/AnimatorControllerCopier.cs +162 -162
  12. package/Editor/AnimatorControllerCopier.cs.meta +2 -2
  13. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs +34 -34
  14. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs.meta +2 -2
  15. package/Editor/CustomEditors.meta +2 -2
  16. package/Editor/FitTextureSizeWizard.cs +147 -147
  17. package/Editor/FitTextureSizeWizard.cs.meta +2 -2
  18. package/Editor/PrefabCheckWizard.cs +170 -170
  19. package/Editor/PrefabCheckWizard.cs.meta +11 -11
  20. package/Editor/SpriteSettingsApplier.cs +272 -272
  21. package/Editor/SpriteSettingsApplier.cs.meta +2 -2
  22. package/Editor/StringInListeDrawer.cs +56 -56
  23. package/Editor/TextureResizerWizard.cs +181 -181
  24. package/Editor/TextureResizerWizard.cs.meta +2 -2
  25. package/Editor/TextureSettingsApplier.cs +178 -178
  26. package/Editor/TextureSettingsApplier.cs.meta +2 -2
  27. package/Editor/Utils/DxReadOnlyPropertyDrawer.cs +26 -26
  28. package/Editor/Utils/DxReadOnlyPropertyDrawer.cs.meta +11 -11
  29. package/Editor/Utils/EditorUtilities.cs +22 -22
  30. package/Editor/Utils/EditorUtilities.cs.meta +11 -11
  31. package/Editor/Utils.meta +8 -8
  32. package/Editor/WShowIfPropertyDrawer.cs +63 -63
  33. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef +17 -17
  34. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef.meta +7 -7
  35. package/LICENSE +21 -21
  36. package/LICENSE.md +6 -6
  37. package/LICENSE.meta +7 -7
  38. package/README.md +177 -177
  39. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll.meta +33 -33
  40. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml +223 -223
  41. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml.meta +7 -7
  42. package/Runtime/Binaries/System.Text.Encodings.Web.dll.meta +33 -33
  43. package/Runtime/Binaries/System.Text.Encodings.Web.xml +935 -935
  44. package/Runtime/Binaries/System.Text.Encodings.Web.xml.meta +7 -7
  45. package/Runtime/Binaries/System.Text.Json.dll.meta +33 -33
  46. package/Runtime/Binaries/System.Text.Json.xml +4829 -4829
  47. package/Runtime/Binaries/System.Text.Json.xml.meta +7 -7
  48. package/Runtime/Binaries.meta +8 -8
  49. package/Runtime/Core/Attributes/AnimationEventAttribute.cs +131 -131
  50. package/Runtime/Core/Attributes/ChildComponentAttribute.cs +209 -209
  51. package/Runtime/Core/Attributes/DxReadOnlyAttribute.cs +6 -6
  52. package/Runtime/Core/Attributes/KSerializableAttribute.cs +19 -19
  53. package/Runtime/Core/Attributes/NotNullAttribute.cs +32 -32
  54. package/Runtime/Core/Attributes/ParentComponent.cs +185 -185
  55. package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +14 -14
  56. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +117 -117
  57. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs.meta +11 -11
  58. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs +101 -101
  59. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs.meta +11 -11
  60. package/Runtime/Core/Attributes/WShowIfAttribute.cs +16 -16
  61. package/Runtime/Core/Attributes.meta +8 -8
  62. package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs +92 -92
  63. package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs +185 -185
  64. package/Runtime/Core/DataStructure/Adapters/KGuid.cs +305 -305
  65. package/Runtime/Core/DataStructure/Adapters/KVector2.cs +80 -80
  66. package/Runtime/Core/DataStructure/Circle.cs +50 -50
  67. package/Runtime/Core/DataStructure/CyclicBuffer.cs +193 -153
  68. package/Runtime/Core/DataStructure/ISpatialTree.cs +60 -60
  69. package/Runtime/Core/DataStructure/ISpatialTree.cs.meta +11 -11
  70. package/Runtime/Core/DataStructure/KDTree.cs +292 -292
  71. package/Runtime/Core/DataStructure/KDTree.cs.meta +11 -11
  72. package/Runtime/Core/DataStructure/QuadTree.cs +287 -287
  73. package/Runtime/Core/DataStructure/RTree.cs +346 -346
  74. package/Runtime/Core/DataStructure/RTree.cs.meta +11 -11
  75. package/Runtime/Core/DataStructure/StringWrapper.cs +91 -91
  76. package/Runtime/Core/DataStructure/TimedCache.cs +66 -66
  77. package/Runtime/Core/Extension/AnimatorExtensions.cs +25 -25
  78. package/Runtime/Core/Extension/AsyncOperationExtensions.cs +110 -110
  79. package/Runtime/Core/Extension/CircleExtensions.cs +25 -25
  80. package/Runtime/Core/Extension/ColorExtensions.cs +629 -629
  81. package/Runtime/Core/Extension/DictionaryExtensions.cs +279 -279
  82. package/Runtime/Core/Extension/DirectionExtensions.cs +213 -213
  83. package/Runtime/Core/Extension/EnumExtensions.cs +37 -37
  84. package/Runtime/Core/Extension/EnumExtensions.cs.meta +2 -2
  85. package/Runtime/Core/Extension/HashSetExtensions.cs +12 -12
  86. package/Runtime/Core/Extension/IEnumerableExtensions.cs +122 -122
  87. package/Runtime/Core/Extension/IListExtensions.cs +146 -106
  88. package/Runtime/Core/Extension/LoggingExtensions.cs +258 -258
  89. package/Runtime/Core/Extension/RandomExtensions.cs +109 -109
  90. package/Runtime/Core/Extension/SerializedPropertyExtensions.cs +157 -157
  91. package/Runtime/Core/Extension/StringExtensions.cs +180 -151
  92. package/Runtime/Core/Extension/UnityExtensions.cs +1608 -1608
  93. package/Runtime/Core/Helper/ArrayConverter.cs +39 -39
  94. package/Runtime/Core/Helper/ArrayConverter.cs.meta +2 -2
  95. package/Runtime/Core/Helper/AssignUtilities.cs +14 -14
  96. package/Runtime/Core/Helper/AssignUtilities.cs.meta +11 -11
  97. package/Runtime/Core/Helper/DirectoryHelper.cs +132 -0
  98. package/Runtime/Core/Helper/DirectoryHelper.cs.meta +3 -0
  99. package/Runtime/Core/Helper/Enumerables.cs +17 -17
  100. package/Runtime/Core/Helper/FormattingHelpers.cs +32 -32
  101. package/Runtime/Core/Helper/Geometry.cs +43 -43
  102. package/Runtime/Core/Helper/Helpers.cs +722 -722
  103. package/Runtime/Core/Helper/Helpers.cs.meta +11 -11
  104. package/Runtime/Core/Helper/IterationHelpers.cs +32 -32
  105. package/Runtime/Core/Helper/IterationHelpers.cs.meta +11 -11
  106. package/Runtime/Core/Helper/LifetimeHelpers.cs +13 -13
  107. package/Runtime/Core/Helper/Objects.cs +769 -769
  108. package/Runtime/Core/Helper/Partials/LogHelpers.cs +13 -13
  109. package/Runtime/Core/Helper/Partials/LogHelpers.cs.meta +2 -2
  110. package/Runtime/Core/Helper/Partials/MathHelpers.cs +30 -30
  111. package/Runtime/Core/Helper/Partials/MathHelpers.cs.meta +2 -2
  112. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +388 -388
  113. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs.meta +2 -2
  114. package/Runtime/Core/Helper/Partials/TransformHelpers.cs +189 -189
  115. package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +2 -2
  116. package/Runtime/Core/Helper/Partials.meta +2 -2
  117. package/Runtime/Core/Helper/ReflectionHelpers.cs +452 -452
  118. package/Runtime/Core/Helper/ReflectionHelpers.cs.meta +2 -2
  119. package/Runtime/Core/Helper/SceneHelper.cs +209 -209
  120. package/Runtime/Core/Helper/SpriteHelpers.cs +41 -41
  121. package/Runtime/Core/Helper/SpriteHelpers.cs.meta +11 -11
  122. package/Runtime/Core/Helper/StringInList.cs +31 -31
  123. package/Runtime/Core/Helper/StringInList.cs.meta +11 -11
  124. package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs +82 -82
  125. package/Runtime/Core/Helper/WallMath.cs +166 -166
  126. package/Runtime/Core/Math/Line.cs +55 -55
  127. package/Runtime/Core/Math/Parabola.cs +47 -47
  128. package/Runtime/Core/Math/PointPolygonCheck.cs +36 -36
  129. package/Runtime/Core/Math/PointPolygonCheck.cs.meta +11 -11
  130. package/Runtime/Core/Math/Range.cs +92 -92
  131. package/Runtime/Core/Math/XXHash.cs +310 -310
  132. package/Runtime/Core/Math/XXHash.cs.meta +11 -11
  133. package/Runtime/Core/Model/Direction.cs +43 -43
  134. package/Runtime/Core/OneOf/FastOneOf.cs +152 -152
  135. package/Runtime/Core/OneOf/None.cs +4 -4
  136. package/Runtime/Core/Random/AbstractRandom.cs +585 -585
  137. package/Runtime/Core/Random/DotNetRandom.cs +54 -54
  138. package/Runtime/Core/Random/DotNetRandom.cs.meta +2 -2
  139. package/Runtime/Core/Random/IRandom.cs +161 -161
  140. package/Runtime/Core/Random/LinearCongruentialGenerator.cs +49 -49
  141. package/Runtime/Core/Random/NativePcgRandom.cs +97 -97
  142. package/Runtime/Core/Random/PRNG.cs +7 -7
  143. package/Runtime/Core/Random/PRNG.cs.meta +2 -2
  144. package/Runtime/Core/Random/PcgRandom.cs +149 -149
  145. package/Runtime/Core/Random/PerlinNoise.cs +369 -369
  146. package/Runtime/Core/Random/PerlinNoise.cs.meta +2 -2
  147. package/Runtime/Core/Random/RandomState.cs +131 -131
  148. package/Runtime/Core/Random/RandomUtilities.cs +26 -26
  149. package/Runtime/Core/Random/RandomUtilities.cs.meta +11 -11
  150. package/Runtime/Core/Random/RomuDuo.cs +116 -116
  151. package/Runtime/Core/Random/RomuDuo.cs.meta +2 -2
  152. package/Runtime/Core/Random/SplitMix64.cs +94 -94
  153. package/Runtime/Core/Random/SplitMix64.cs.meta +2 -2
  154. package/Runtime/Core/Random/SquirrelRandom.cs +84 -84
  155. package/Runtime/Core/Random/SystemRandom.cs +162 -162
  156. package/Runtime/Core/Random/ThreadLocalRandom.cs +12 -12
  157. package/Runtime/Core/Random/UnityRandom.cs +57 -57
  158. package/Runtime/Core/Random/UnityRandom.cs.meta +11 -11
  159. package/Runtime/Core/Random/WyRandom.cs +121 -121
  160. package/Runtime/Core/Random/WyRandom.cs.meta +2 -2
  161. package/Runtime/Core/Random/XorShiftRandom.cs +52 -52
  162. package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -11
  163. package/Runtime/Core/Random/XorShiroRandom.cs +119 -119
  164. package/Runtime/Core/Random/XorShiroRandom.cs.meta +2 -2
  165. package/Runtime/Core/Serialization/JsonConverters/ColorConverter.cs +88 -88
  166. package/Runtime/Core/Serialization/JsonConverters/GameObjectConverter.cs +37 -37
  167. package/Runtime/Core/Serialization/JsonConverters/Matrix4x4Converter.cs +218 -218
  168. package/Runtime/Core/Serialization/JsonConverters/TypeConverter.cs +28 -28
  169. package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +74 -74
  170. package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +81 -81
  171. package/Runtime/Core/Serialization/JsonConverters/Vector4Converter.cs +88 -88
  172. package/Runtime/Core/Serialization/Serializer.cs +195 -195
  173. package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +113 -113
  174. package/Runtime/Protobuf-Net/System.Buffers.dll.meta +33 -33
  175. package/Runtime/Protobuf-Net/System.Collections.Immutable.dll.meta +33 -33
  176. package/Runtime/Protobuf-Net/System.Collections.Immutable.xml +5379 -5379
  177. package/Runtime/Protobuf-Net/System.Collections.Immutable.xml.meta +7 -7
  178. package/Runtime/Protobuf-Net/System.Numerics.Vectors.dll.meta +33 -33
  179. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll.meta +33 -33
  180. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml +290 -290
  181. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml.meta +7 -7
  182. package/Runtime/Protobuf-Net/protobuf-net.Core.dll.meta +33 -33
  183. package/Runtime/Protobuf-Net/protobuf-net.dll.meta +33 -33
  184. package/Runtime/UI/LayeredImage.cs +364 -364
  185. package/Runtime/UI/LayeredImage.cs.meta +2 -2
  186. package/Runtime/UI.meta +2 -2
  187. package/Runtime/Utils/AnimationEventEqualityComparer.cs +161 -161
  188. package/Runtime/Utils/AnimatorEnumStateMachine.cs +88 -88
  189. package/Runtime/Utils/Buffers.cs +33 -33
  190. package/Runtime/Utils/CenterPointOffset.cs +30 -30
  191. package/Runtime/Utils/CenterPointOffset.cs.meta +2 -2
  192. package/Runtime/Utils/CircleLineRenderer.cs +134 -134
  193. package/Runtime/Utils/CoroutineHandler.cs +4 -4
  194. package/Runtime/Utils/CoroutineHandler.cs.meta +2 -2
  195. package/Runtime/Utils/DeferredDisposalResult.cs +23 -23
  196. package/Runtime/Utils/MatchColliderToSprite.cs +94 -94
  197. package/Runtime/Utils/MatchColliderToSprite.cs.meta +2 -2
  198. package/Runtime/Utils/Oscillator.cs +27 -27
  199. package/Runtime/Utils/RuntimeSingleton.cs +69 -69
  200. package/Runtime/Utils/RuntimeSingleton.cs.meta +11 -11
  201. package/Runtime/Utils/SetTextureImportData.cs +69 -69
  202. package/Runtime/Utils/SpriteRendererMetadata.cs +374 -374
  203. package/Runtime/Utils/SpriteRendererMetadata.cs.meta +2 -2
  204. package/Runtime/Utils/SpriteRendererSyncer.cs +100 -100
  205. package/Runtime/Utils/SpriteRendererSyncer.cs.meta +2 -2
  206. package/Runtime/Utils/StartTracker.cs +15 -0
  207. package/Runtime/Utils/StartTracker.cs.meta +3 -0
  208. package/Runtime/Utils/TextureScale.cs +179 -179
  209. package/Runtime/Utils/TextureScale.cs.meta +2 -2
  210. package/Runtime/Utils/UnityObjectNameComparer.cs +33 -0
  211. package/Runtime/Utils/UnityObjectNameComparer.cs.meta +3 -0
  212. package/Runtime/WallstopStudios.UnityHelpers.asmdef +13 -13
  213. package/Tests/Runtime/Attributes/ChildComponentTests.cs +81 -81
  214. package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs +28 -28
  215. package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs +28 -28
  216. package/Tests/Runtime/Attributes/ParentComponentTests.cs +68 -68
  217. package/Tests/Runtime/Components/RelationalComponentTesterComplex.cs +34 -34
  218. package/Tests/Runtime/Components/RelationalComponentTesterComplex.cs.meta +2 -2
  219. package/Tests/Runtime/Components/RelationalComponentsTesterSimple.cs +40 -40
  220. package/Tests/Runtime/Components.meta +2 -2
  221. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs +14 -14
  222. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs.meta +11 -11
  223. package/Tests/Runtime/DataStructures/CyclicBufferTests.cs +324 -324
  224. package/Tests/Runtime/DataStructures/QuadTreeTests.cs +14 -14
  225. package/Tests/Runtime/DataStructures/QuadTreeTests.cs.meta +11 -11
  226. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs +130 -130
  227. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs.meta +11 -11
  228. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs +14 -14
  229. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs.meta +11 -11
  230. package/Tests/Runtime/DataStructures.meta +8 -8
  231. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs +439 -439
  232. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs.meta +2 -2
  233. package/Tests/Runtime/Extensions/EnumExtensionTests.cs +128 -128
  234. package/Tests/Runtime/Extensions/EnumExtensionTests.cs.meta +2 -2
  235. package/Tests/Runtime/Extensions/IListExtensionTests.cs +104 -104
  236. package/Tests/Runtime/Extensions/RandomExtensionTests.cs +27 -27
  237. package/Tests/Runtime/Extensions/RandomExtensionTests.cs.meta +2 -2
  238. package/Tests/Runtime/Extensions/StringExtensionTests.cs +31 -31
  239. package/Tests/Runtime/Extensions/StringExtensionTests.cs.meta +2 -2
  240. package/Tests/Runtime/Extensions.meta +2 -2
  241. package/Tests/Runtime/Helper/ArrayConverterTests.cs +19 -19
  242. package/Tests/Runtime/Helper/ArrayConverterTests.cs.meta +2 -2
  243. package/Tests/Runtime/Helper/FormattingHelperTests.cs +129 -129
  244. package/Tests/Runtime/Helper/FormattingHelperTests.cs.meta +2 -2
  245. package/Tests/Runtime/Helper/ObjectHelperTests.cs +402 -402
  246. package/Tests/Runtime/Helper/ObjectHelperTests.cs.meta +2 -2
  247. package/Tests/Runtime/Helper/ReflectionHelperTests.cs +536 -536
  248. package/Tests/Runtime/Helper/SceneHelperTests.cs +94 -94
  249. package/Tests/Runtime/Helper/WallMathTests.cs +233 -233
  250. package/Tests/Runtime/Helper/WallMathTests.cs.meta +2 -2
  251. package/Tests/Runtime/Helper.meta +2 -2
  252. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs +14 -14
  253. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs.meta +11 -11
  254. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs +14 -14
  255. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs.meta +11 -11
  256. package/Tests/Runtime/Performance/RandomPerformanceTests.cs +157 -157
  257. package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -11
  258. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +61 -61
  259. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +2 -2
  260. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs +154 -154
  261. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs.meta +11 -11
  262. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs +14 -14
  263. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs.meta +11 -11
  264. package/Tests/Runtime/Performance.meta +8 -8
  265. package/Tests/Runtime/Random/DotNetRandomTests.cs +9 -9
  266. package/Tests/Runtime/Random/DotNetRandomTests.cs.meta +2 -2
  267. package/Tests/Runtime/Random/LinearCongruentialGeneratorTests.cs +12 -12
  268. package/Tests/Runtime/Random/PcgRandomTests.cs +9 -9
  269. package/Tests/Runtime/Random/PcgRandomTests.cs.meta +11 -11
  270. package/Tests/Runtime/Random/RandomTestBase.cs +787 -787
  271. package/Tests/Runtime/Random/RandomTestBase.cs.meta +11 -11
  272. package/Tests/Runtime/Random/RomuDuoRandomTests.cs +9 -9
  273. package/Tests/Runtime/Random/RomuDuoRandomTests.cs.meta +2 -2
  274. package/Tests/Runtime/Random/SplitMix64RandomTests.cs +9 -9
  275. package/Tests/Runtime/Random/SplitMix64RandomTests.cs.meta +2 -2
  276. package/Tests/Runtime/Random/SquirrelRandomTests.cs +14 -14
  277. package/Tests/Runtime/Random/SquirrelRandomTests.cs.meta +11 -11
  278. package/Tests/Runtime/Random/SystemRandomTests.cs +10 -10
  279. package/Tests/Runtime/Random/SystemRandomTests.cs.meta +11 -11
  280. package/Tests/Runtime/Random/UnityRandomTests.cs +9 -9
  281. package/Tests/Runtime/Random/UnityRandomTests.cs.meta +11 -11
  282. package/Tests/Runtime/Random/WyRandomTests.cs +9 -9
  283. package/Tests/Runtime/Random/WyRandomTests.cs.meta +2 -2
  284. package/Tests/Runtime/Random/XorShiftRandomTests.cs +9 -9
  285. package/Tests/Runtime/Random/XorShiftRandomTests.cs.meta +11 -11
  286. package/Tests/Runtime/Random/XorShiroRandomTests.cs +9 -9
  287. package/Tests/Runtime/Random/XorShiroRandomTests.cs.meta +2 -2
  288. package/Tests/Runtime/Random.meta +8 -8
  289. package/Tests/Runtime/Serialization/JsonSerializationTest.cs +156 -156
  290. package/Tests/Runtime/Serialization/JsonSerializationTest.cs.meta +2 -2
  291. package/Tests/Runtime/Serialization.meta +2 -2
  292. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs +399 -399
  293. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs.meta +2 -2
  294. package/Tests/Runtime/Utils.meta +2 -2
  295. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef +22 -22
  296. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef.meta +7 -7
  297. package/Tests/Runtime.meta +8 -8
  298. package/package.json +38 -38
@@ -1,388 +1,388 @@
1
- namespace UnityHelpers.Core.Helper
2
- {
3
- using System;
4
- using Extension;
5
- using UnityEngine;
6
- using UnityEngine.SceneManagement;
7
- using Object = UnityEngine.Object;
8
- #if UNITY_EDITOR
9
- using UnityEditor;
10
- using UnityEditor.SceneManagement;
11
- #endif
12
-
13
- public static partial class Helpers
14
- {
15
- public static T Find<T>(this Object component, string tag, bool log = true)
16
- where T : Object
17
- {
18
- if (ObjectsByTag.TryGetValue(tag, out Object value))
19
- {
20
- if (value != null && value is T typed)
21
- {
22
- return typed;
23
- }
24
-
25
- _ = ObjectsByTag.Remove(tag);
26
- }
27
-
28
- GameObject gameObject = GameObject.FindGameObjectWithTag(tag);
29
- if (gameObject == null)
30
- {
31
- if (log)
32
- {
33
- component.LogWarn("Could not find {0}.", tag);
34
- }
35
-
36
- return default;
37
- }
38
-
39
- if (gameObject.TryGetComponent(out T instance))
40
- {
41
- ObjectsByTag[tag] = instance;
42
- return instance;
43
- }
44
-
45
- if (log)
46
- {
47
- component.LogWarn(
48
- "Failed to find {0} on {1} (name: {2}), id [{3}].",
49
- typeof(T).Name,
50
- tag,
51
- gameObject.name,
52
- gameObject.GetInstanceID()
53
- );
54
- }
55
-
56
- return default;
57
- }
58
-
59
- public static T Find<T>(string tag, bool log = true)
60
- where T : MonoBehaviour
61
- {
62
- if (ObjectsByTag.TryGetValue(tag, out Object value))
63
- {
64
- if (value != null && value is T typed)
65
- {
66
- return typed;
67
- }
68
-
69
- _ = ObjectsByTag.Remove(tag);
70
- }
71
-
72
- GameObject gameObject = GameObject.FindGameObjectWithTag(tag);
73
- if (gameObject == null)
74
- {
75
- if (log)
76
- {
77
- LogObject.Log($"Could not find {tag}.");
78
- }
79
-
80
- return default;
81
- }
82
-
83
- if (gameObject.TryGetComponent(out T instance))
84
- {
85
- ObjectsByTag[tag] = instance;
86
- return instance;
87
- }
88
-
89
- if (log)
90
- {
91
- LogObject.Log($"Failed to find {typeof(T).Name} on {tag}");
92
- }
93
-
94
- return default;
95
- }
96
-
97
- public static void SetInstance<T>(string tag, T instance)
98
- where T : MonoBehaviour
99
- {
100
- ObjectsByTag[tag] = instance;
101
- }
102
-
103
- public static void ClearInstance<T>(string tag, T instance)
104
- where T : MonoBehaviour
105
- {
106
- if (ObjectsByTag.TryGetValue(tag, out Object existing) && existing == instance)
107
- {
108
- _ = ObjectsByTag.Remove(tag);
109
- }
110
- }
111
-
112
- public static bool HasComponent<T>(this Object unityObject)
113
- where T : Object
114
- {
115
- return unityObject switch
116
- {
117
- GameObject go => go.HasComponent<T>(),
118
- Component component => component.HasComponent<T>(),
119
- _ => false,
120
- };
121
- }
122
-
123
- public static bool HasComponent<T>(this Component component)
124
- where T : Object
125
- {
126
- return component.TryGetComponent<T>(out _);
127
- }
128
-
129
- public static bool HasComponent<T>(this GameObject gameObject)
130
- where T : Object
131
- {
132
- return gameObject.TryGetComponent<T>(out _);
133
- }
134
-
135
- public static bool HasComponent(this Object unityObject, Type type)
136
- {
137
- return unityObject switch
138
- {
139
- GameObject go => go.TryGetComponent(type, out _),
140
- Component component => component.TryGetComponent(type, out _),
141
- _ => false,
142
- };
143
- }
144
-
145
- public static void EnableRecursively<T>(
146
- this Component component,
147
- bool enabled,
148
- Func<T, bool> exclude = null
149
- )
150
- where T : Behaviour
151
- {
152
- if (component == null)
153
- {
154
- return;
155
- }
156
-
157
- foreach (T behaviour in component.GetComponents<T>())
158
- {
159
- if (behaviour != null && !(exclude?.Invoke(behaviour) ?? false))
160
- {
161
- behaviour.enabled = enabled;
162
- }
163
- }
164
-
165
- Transform transform = (component as Transform) ?? component.transform;
166
- if (transform == null)
167
- {
168
- return;
169
- }
170
-
171
- for (int i = 0; i < transform.childCount; ++i)
172
- {
173
- Transform child = transform.GetChild(i);
174
- EnableRecursively<T>(child, enabled, exclude);
175
- }
176
- }
177
-
178
- public static void EnableRendererRecursively<T>(
179
- this Component component,
180
- bool enabled,
181
- Func<T, bool> exclude = null
182
- )
183
- where T : Renderer
184
- {
185
- if (component == null)
186
- {
187
- return;
188
- }
189
-
190
- T behavior = component as T ?? component.GetComponent<T>();
191
- if (behavior != null && !(exclude?.Invoke(behavior) ?? false))
192
- {
193
- behavior.enabled = enabled;
194
- }
195
-
196
- Transform transform = (component as Transform) ?? component.transform;
197
- if (transform == null)
198
- {
199
- return;
200
- }
201
-
202
- for (int i = 0; i < transform.childCount; ++i)
203
- {
204
- Transform child = transform.GetChild(i);
205
- EnableRendererRecursively<T>(child, enabled, exclude);
206
- }
207
- }
208
-
209
- public static void DestroyAllChildrenGameObjects(this GameObject gameObject)
210
- {
211
- if (Application.isEditor)
212
- {
213
- EditorDestroyAllChildrenGameObjects(gameObject);
214
- }
215
- else
216
- {
217
- PlayDestroyAllChildrenGameObjects(gameObject);
218
- }
219
- }
220
-
221
- public static void DestroyAllComponentsOfType<T>(this GameObject gameObject)
222
- where T : Component
223
- {
224
- foreach (T component in gameObject.GetComponents<T>())
225
- {
226
- SmartDestroy(component);
227
- }
228
- }
229
-
230
- public static void SmartDestroy(this Object obj, float? afterTime = null)
231
- {
232
- if (Application.isEditor && !Application.isPlaying)
233
- {
234
- Object.DestroyImmediate(obj);
235
- }
236
- else
237
- {
238
- if (afterTime.HasValue)
239
- {
240
- Object.Destroy(obj, afterTime.Value);
241
- }
242
- else
243
- {
244
- Object.Destroy(obj);
245
- }
246
- }
247
- }
248
-
249
- public static void DestroyAllChildrenGameObjectsImmediatelyConditionally(
250
- this GameObject gameObject,
251
- Func<GameObject, bool> acceptancePredicate
252
- )
253
- {
254
- InternalDestroyAllChildrenGameObjects(
255
- gameObject,
256
- toDestroy =>
257
- {
258
- if (!acceptancePredicate(toDestroy))
259
- {
260
- return;
261
- }
262
-
263
- Object.DestroyImmediate(toDestroy);
264
- }
265
- );
266
- }
267
-
268
- public static void DestroyAllChildGameObjectsConditionally(
269
- this GameObject gameObject,
270
- Func<GameObject, bool> acceptancePredicate
271
- )
272
- {
273
- InternalDestroyAllChildrenGameObjects(
274
- gameObject,
275
- toDestroy =>
276
- {
277
- if (!acceptancePredicate(toDestroy))
278
- {
279
- return;
280
- }
281
-
282
- toDestroy.Destroy();
283
- }
284
- );
285
- }
286
-
287
- public static void DestroyAllChildrenGameObjectsImmediately(this GameObject gameObject) =>
288
- InternalDestroyAllChildrenGameObjects(gameObject, Object.DestroyImmediate);
289
-
290
- public static void PlayDestroyAllChildrenGameObjects(this GameObject gameObject) =>
291
- InternalDestroyAllChildrenGameObjects(gameObject, go => go.Destroy());
292
-
293
- public static void EditorDestroyAllChildrenGameObjects(this GameObject gameObject) =>
294
- InternalDestroyAllChildrenGameObjects(gameObject, go => go.Destroy());
295
-
296
- private static void InternalDestroyAllChildrenGameObjects(
297
- this GameObject gameObject,
298
- Action<GameObject> destroyFunction
299
- )
300
- {
301
- for (int i = gameObject.transform.childCount - 1; 0 <= i; --i)
302
- {
303
- destroyFunction(gameObject.transform.GetChild(i).gameObject);
304
- }
305
- }
306
-
307
- public static bool IsPrefab(this GameObject gameObject)
308
- {
309
- Scene scene = gameObject.scene;
310
- #if UNITY_EDITOR
311
- if (scene.rootCount == 1 && string.Equals(scene.name, gameObject.name))
312
- {
313
- return true;
314
- }
315
-
316
- return PrefabUtility.GetPrefabAssetType(gameObject) switch
317
- {
318
- PrefabAssetType.NotAPrefab => false,
319
- PrefabAssetType.MissingAsset => scene.rootCount == 0,
320
- _ => true,
321
- };
322
- #else
323
- return scene.rootCount == 0;
324
- #endif
325
- }
326
-
327
- public static bool IsPrefab(this Component component)
328
- {
329
- return IsPrefab(component.gameObject);
330
- }
331
-
332
- public static T GetOrAddComponent<T>(this GameObject unityObject)
333
- where T : Component
334
- {
335
- if (!unityObject.TryGetComponent(out T instance))
336
- {
337
- instance = unityObject.AddComponent<T>();
338
- }
339
-
340
- return instance;
341
- }
342
-
343
- public static Component GetOrAddComponent(this GameObject unityObject, Type componentType)
344
- {
345
- if (!unityObject.TryGetComponent(componentType, out Component instance))
346
- {
347
- instance = unityObject.AddComponent(componentType);
348
- }
349
-
350
- return instance;
351
- }
352
-
353
- public static void ModifyAndSavePrefab(GameObject prefab, Action<GameObject> modifyAction)
354
- {
355
- if (prefab == null)
356
- {
357
- return;
358
- }
359
-
360
- #if UNITY_EDITOR
361
- if (PrefabUtility.IsPartOfPrefabAsset(prefab))
362
- {
363
- string assetPath = AssetDatabase.GetAssetPath(prefab);
364
- GameObject content = PrefabUtility.LoadPrefabContents(assetPath);
365
-
366
- if (content == null)
367
- {
368
- Debug.LogError($"Unable to load {prefab} as a prefab");
369
- return;
370
- }
371
-
372
- modifyAction(content);
373
- _ = PrefabUtility.SaveAsPrefabAsset(content, assetPath);
374
- PrefabUtility.UnloadPrefabContents(content);
375
- }
376
- else
377
- {
378
- modifyAction(prefab);
379
- PrefabStage stage = PrefabStageUtility.GetPrefabStage(prefab);
380
- if (stage)
381
- {
382
- _ = EditorSceneManager.MarkSceneDirty(stage.scene);
383
- }
384
- }
385
- #endif
386
- }
387
- }
388
- }
1
+ namespace UnityHelpers.Core.Helper
2
+ {
3
+ using System;
4
+ using Extension;
5
+ using UnityEngine;
6
+ using UnityEngine.SceneManagement;
7
+ using Object = UnityEngine.Object;
8
+ #if UNITY_EDITOR
9
+ using UnityEditor;
10
+ using UnityEditor.SceneManagement;
11
+ #endif
12
+
13
+ public static partial class Helpers
14
+ {
15
+ public static T Find<T>(this Object component, string tag, bool log = true)
16
+ where T : Object
17
+ {
18
+ if (ObjectsByTag.TryGetValue(tag, out Object value))
19
+ {
20
+ if (value != null && value is T typed)
21
+ {
22
+ return typed;
23
+ }
24
+
25
+ _ = ObjectsByTag.Remove(tag);
26
+ }
27
+
28
+ GameObject gameObject = GameObject.FindGameObjectWithTag(tag);
29
+ if (gameObject == null)
30
+ {
31
+ if (log)
32
+ {
33
+ component.LogWarn("Could not find {0}.", tag);
34
+ }
35
+
36
+ return default;
37
+ }
38
+
39
+ if (gameObject.TryGetComponent(out T instance))
40
+ {
41
+ ObjectsByTag[tag] = instance;
42
+ return instance;
43
+ }
44
+
45
+ if (log)
46
+ {
47
+ component.LogWarn(
48
+ "Failed to find {0} on {1} (name: {2}), id [{3}].",
49
+ typeof(T).Name,
50
+ tag,
51
+ gameObject.name,
52
+ gameObject.GetInstanceID()
53
+ );
54
+ }
55
+
56
+ return default;
57
+ }
58
+
59
+ public static T Find<T>(string tag, bool log = true)
60
+ where T : MonoBehaviour
61
+ {
62
+ if (ObjectsByTag.TryGetValue(tag, out Object value))
63
+ {
64
+ if (value != null && value is T typed)
65
+ {
66
+ return typed;
67
+ }
68
+
69
+ _ = ObjectsByTag.Remove(tag);
70
+ }
71
+
72
+ GameObject gameObject = GameObject.FindGameObjectWithTag(tag);
73
+ if (gameObject == null)
74
+ {
75
+ if (log)
76
+ {
77
+ LogObject.Log($"Could not find {tag}.");
78
+ }
79
+
80
+ return default;
81
+ }
82
+
83
+ if (gameObject.TryGetComponent(out T instance))
84
+ {
85
+ ObjectsByTag[tag] = instance;
86
+ return instance;
87
+ }
88
+
89
+ if (log)
90
+ {
91
+ LogObject.Log($"Failed to find {typeof(T).Name} on {tag}");
92
+ }
93
+
94
+ return default;
95
+ }
96
+
97
+ public static void SetInstance<T>(string tag, T instance)
98
+ where T : MonoBehaviour
99
+ {
100
+ ObjectsByTag[tag] = instance;
101
+ }
102
+
103
+ public static void ClearInstance<T>(string tag, T instance)
104
+ where T : MonoBehaviour
105
+ {
106
+ if (ObjectsByTag.TryGetValue(tag, out Object existing) && existing == instance)
107
+ {
108
+ _ = ObjectsByTag.Remove(tag);
109
+ }
110
+ }
111
+
112
+ public static bool HasComponent<T>(this Object unityObject)
113
+ where T : Object
114
+ {
115
+ return unityObject switch
116
+ {
117
+ GameObject go => go.HasComponent<T>(),
118
+ Component component => component.HasComponent<T>(),
119
+ _ => false,
120
+ };
121
+ }
122
+
123
+ public static bool HasComponent<T>(this Component component)
124
+ where T : Object
125
+ {
126
+ return component.TryGetComponent<T>(out _);
127
+ }
128
+
129
+ public static bool HasComponent<T>(this GameObject gameObject)
130
+ where T : Object
131
+ {
132
+ return gameObject.TryGetComponent<T>(out _);
133
+ }
134
+
135
+ public static bool HasComponent(this Object unityObject, Type type)
136
+ {
137
+ return unityObject switch
138
+ {
139
+ GameObject go => go.TryGetComponent(type, out _),
140
+ Component component => component.TryGetComponent(type, out _),
141
+ _ => false,
142
+ };
143
+ }
144
+
145
+ public static void EnableRecursively<T>(
146
+ this Component component,
147
+ bool enabled,
148
+ Func<T, bool> exclude = null
149
+ )
150
+ where T : Behaviour
151
+ {
152
+ if (component == null)
153
+ {
154
+ return;
155
+ }
156
+
157
+ foreach (T behaviour in component.GetComponents<T>())
158
+ {
159
+ if (behaviour != null && !(exclude?.Invoke(behaviour) ?? false))
160
+ {
161
+ behaviour.enabled = enabled;
162
+ }
163
+ }
164
+
165
+ Transform transform = (component as Transform) ?? component.transform;
166
+ if (transform == null)
167
+ {
168
+ return;
169
+ }
170
+
171
+ for (int i = 0; i < transform.childCount; ++i)
172
+ {
173
+ Transform child = transform.GetChild(i);
174
+ EnableRecursively<T>(child, enabled, exclude);
175
+ }
176
+ }
177
+
178
+ public static void EnableRendererRecursively<T>(
179
+ this Component component,
180
+ bool enabled,
181
+ Func<T, bool> exclude = null
182
+ )
183
+ where T : Renderer
184
+ {
185
+ if (component == null)
186
+ {
187
+ return;
188
+ }
189
+
190
+ T behavior = component as T ?? component.GetComponent<T>();
191
+ if (behavior != null && !(exclude?.Invoke(behavior) ?? false))
192
+ {
193
+ behavior.enabled = enabled;
194
+ }
195
+
196
+ Transform transform = (component as Transform) ?? component.transform;
197
+ if (transform == null)
198
+ {
199
+ return;
200
+ }
201
+
202
+ for (int i = 0; i < transform.childCount; ++i)
203
+ {
204
+ Transform child = transform.GetChild(i);
205
+ EnableRendererRecursively<T>(child, enabled, exclude);
206
+ }
207
+ }
208
+
209
+ public static void DestroyAllChildrenGameObjects(this GameObject gameObject)
210
+ {
211
+ if (Application.isEditor)
212
+ {
213
+ EditorDestroyAllChildrenGameObjects(gameObject);
214
+ }
215
+ else
216
+ {
217
+ PlayDestroyAllChildrenGameObjects(gameObject);
218
+ }
219
+ }
220
+
221
+ public static void DestroyAllComponentsOfType<T>(this GameObject gameObject)
222
+ where T : Component
223
+ {
224
+ foreach (T component in gameObject.GetComponents<T>())
225
+ {
226
+ SmartDestroy(component);
227
+ }
228
+ }
229
+
230
+ public static void SmartDestroy(this Object obj, float? afterTime = null)
231
+ {
232
+ if (Application.isEditor && !Application.isPlaying)
233
+ {
234
+ Object.DestroyImmediate(obj);
235
+ }
236
+ else
237
+ {
238
+ if (afterTime.HasValue)
239
+ {
240
+ Object.Destroy(obj, afterTime.Value);
241
+ }
242
+ else
243
+ {
244
+ Object.Destroy(obj);
245
+ }
246
+ }
247
+ }
248
+
249
+ public static void DestroyAllChildrenGameObjectsImmediatelyConditionally(
250
+ this GameObject gameObject,
251
+ Func<GameObject, bool> acceptancePredicate
252
+ )
253
+ {
254
+ InternalDestroyAllChildrenGameObjects(
255
+ gameObject,
256
+ toDestroy =>
257
+ {
258
+ if (!acceptancePredicate(toDestroy))
259
+ {
260
+ return;
261
+ }
262
+
263
+ Object.DestroyImmediate(toDestroy);
264
+ }
265
+ );
266
+ }
267
+
268
+ public static void DestroyAllChildGameObjectsConditionally(
269
+ this GameObject gameObject,
270
+ Func<GameObject, bool> acceptancePredicate
271
+ )
272
+ {
273
+ InternalDestroyAllChildrenGameObjects(
274
+ gameObject,
275
+ toDestroy =>
276
+ {
277
+ if (!acceptancePredicate(toDestroy))
278
+ {
279
+ return;
280
+ }
281
+
282
+ toDestroy.Destroy();
283
+ }
284
+ );
285
+ }
286
+
287
+ public static void DestroyAllChildrenGameObjectsImmediately(this GameObject gameObject) =>
288
+ InternalDestroyAllChildrenGameObjects(gameObject, Object.DestroyImmediate);
289
+
290
+ public static void PlayDestroyAllChildrenGameObjects(this GameObject gameObject) =>
291
+ InternalDestroyAllChildrenGameObjects(gameObject, go => go.Destroy());
292
+
293
+ public static void EditorDestroyAllChildrenGameObjects(this GameObject gameObject) =>
294
+ InternalDestroyAllChildrenGameObjects(gameObject, go => go.Destroy());
295
+
296
+ private static void InternalDestroyAllChildrenGameObjects(
297
+ this GameObject gameObject,
298
+ Action<GameObject> destroyFunction
299
+ )
300
+ {
301
+ for (int i = gameObject.transform.childCount - 1; 0 <= i; --i)
302
+ {
303
+ destroyFunction(gameObject.transform.GetChild(i).gameObject);
304
+ }
305
+ }
306
+
307
+ public static bool IsPrefab(this GameObject gameObject)
308
+ {
309
+ Scene scene = gameObject.scene;
310
+ #if UNITY_EDITOR
311
+ if (scene.rootCount == 1 && string.Equals(scene.name, gameObject.name))
312
+ {
313
+ return true;
314
+ }
315
+
316
+ return PrefabUtility.GetPrefabAssetType(gameObject) switch
317
+ {
318
+ PrefabAssetType.NotAPrefab => false,
319
+ PrefabAssetType.MissingAsset => scene.rootCount == 0,
320
+ _ => true,
321
+ };
322
+ #else
323
+ return scene.rootCount == 0;
324
+ #endif
325
+ }
326
+
327
+ public static bool IsPrefab(this Component component)
328
+ {
329
+ return IsPrefab(component.gameObject);
330
+ }
331
+
332
+ public static T GetOrAddComponent<T>(this GameObject unityObject)
333
+ where T : Component
334
+ {
335
+ if (!unityObject.TryGetComponent(out T instance))
336
+ {
337
+ instance = unityObject.AddComponent<T>();
338
+ }
339
+
340
+ return instance;
341
+ }
342
+
343
+ public static Component GetOrAddComponent(this GameObject unityObject, Type componentType)
344
+ {
345
+ if (!unityObject.TryGetComponent(componentType, out Component instance))
346
+ {
347
+ instance = unityObject.AddComponent(componentType);
348
+ }
349
+
350
+ return instance;
351
+ }
352
+
353
+ public static void ModifyAndSavePrefab(GameObject prefab, Action<GameObject> modifyAction)
354
+ {
355
+ if (prefab == null)
356
+ {
357
+ return;
358
+ }
359
+
360
+ #if UNITY_EDITOR
361
+ if (PrefabUtility.IsPartOfPrefabAsset(prefab))
362
+ {
363
+ string assetPath = AssetDatabase.GetAssetPath(prefab);
364
+ GameObject content = PrefabUtility.LoadPrefabContents(assetPath);
365
+
366
+ if (content == null)
367
+ {
368
+ Debug.LogError($"Unable to load {prefab} as a prefab", prefab);
369
+ return;
370
+ }
371
+
372
+ modifyAction(content);
373
+ _ = PrefabUtility.SaveAsPrefabAsset(content, assetPath);
374
+ PrefabUtility.UnloadPrefabContents(content);
375
+ }
376
+ else
377
+ {
378
+ modifyAction(prefab);
379
+ PrefabStage stage = PrefabStageUtility.GetPrefabStage(prefab);
380
+ if (stage)
381
+ {
382
+ _ = EditorSceneManager.MarkSceneDirty(stage.scene);
383
+ }
384
+ }
385
+ #endif
386
+ }
387
+ }
388
+ }