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

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 (292) 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 +153 -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 +106 -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 +151 -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/Enumerables.cs +17 -17
  98. package/Runtime/Core/Helper/FormattingHelpers.cs +32 -32
  99. package/Runtime/Core/Helper/Geometry.cs +43 -43
  100. package/Runtime/Core/Helper/Helpers.cs +722 -722
  101. package/Runtime/Core/Helper/Helpers.cs.meta +11 -11
  102. package/Runtime/Core/Helper/IterationHelpers.cs +32 -32
  103. package/Runtime/Core/Helper/IterationHelpers.cs.meta +11 -11
  104. package/Runtime/Core/Helper/LifetimeHelpers.cs +13 -13
  105. package/Runtime/Core/Helper/Objects.cs +769 -769
  106. package/Runtime/Core/Helper/Partials/LogHelpers.cs +13 -13
  107. package/Runtime/Core/Helper/Partials/LogHelpers.cs.meta +2 -2
  108. package/Runtime/Core/Helper/Partials/MathHelpers.cs +30 -30
  109. package/Runtime/Core/Helper/Partials/MathHelpers.cs.meta +2 -2
  110. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +388 -388
  111. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs.meta +2 -2
  112. package/Runtime/Core/Helper/Partials/TransformHelpers.cs +189 -189
  113. package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +2 -2
  114. package/Runtime/Core/Helper/Partials.meta +2 -2
  115. package/Runtime/Core/Helper/ReflectionHelpers.cs +452 -452
  116. package/Runtime/Core/Helper/ReflectionHelpers.cs.meta +2 -2
  117. package/Runtime/Core/Helper/SceneHelper.cs +209 -213
  118. package/Runtime/Core/Helper/SpriteHelpers.cs +41 -41
  119. package/Runtime/Core/Helper/SpriteHelpers.cs.meta +11 -11
  120. package/Runtime/Core/Helper/StringInList.cs +31 -31
  121. package/Runtime/Core/Helper/StringInList.cs.meta +11 -11
  122. package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs +82 -82
  123. package/Runtime/Core/Helper/WallMath.cs +166 -166
  124. package/Runtime/Core/Math/Line.cs +55 -55
  125. package/Runtime/Core/Math/Parabola.cs +47 -47
  126. package/Runtime/Core/Math/PointPolygonCheck.cs +36 -36
  127. package/Runtime/Core/Math/PointPolygonCheck.cs.meta +11 -11
  128. package/Runtime/Core/Math/Range.cs +92 -92
  129. package/Runtime/Core/Math/XXHash.cs +310 -310
  130. package/Runtime/Core/Math/XXHash.cs.meta +11 -11
  131. package/Runtime/Core/Model/Direction.cs +43 -43
  132. package/Runtime/Core/OneOf/FastOneOf.cs +152 -152
  133. package/Runtime/Core/OneOf/None.cs +4 -4
  134. package/Runtime/Core/Random/AbstractRandom.cs +585 -585
  135. package/Runtime/Core/Random/DotNetRandom.cs +54 -54
  136. package/Runtime/Core/Random/DotNetRandom.cs.meta +2 -2
  137. package/Runtime/Core/Random/IRandom.cs +161 -161
  138. package/Runtime/Core/Random/LinearCongruentialGenerator.cs +49 -49
  139. package/Runtime/Core/Random/NativePcgRandom.cs +97 -97
  140. package/Runtime/Core/Random/PRNG.cs +7 -7
  141. package/Runtime/Core/Random/PRNG.cs.meta +2 -2
  142. package/Runtime/Core/Random/PcgRandom.cs +149 -149
  143. package/Runtime/Core/Random/PerlinNoise.cs +369 -369
  144. package/Runtime/Core/Random/PerlinNoise.cs.meta +2 -2
  145. package/Runtime/Core/Random/RandomState.cs +131 -131
  146. package/Runtime/Core/Random/RandomUtilities.cs +26 -26
  147. package/Runtime/Core/Random/RandomUtilities.cs.meta +11 -11
  148. package/Runtime/Core/Random/RomuDuo.cs +116 -116
  149. package/Runtime/Core/Random/RomuDuo.cs.meta +2 -2
  150. package/Runtime/Core/Random/SplitMix64.cs +94 -94
  151. package/Runtime/Core/Random/SplitMix64.cs.meta +2 -2
  152. package/Runtime/Core/Random/SquirrelRandom.cs +84 -84
  153. package/Runtime/Core/Random/SystemRandom.cs +162 -162
  154. package/Runtime/Core/Random/ThreadLocalRandom.cs +12 -12
  155. package/Runtime/Core/Random/UnityRandom.cs +57 -57
  156. package/Runtime/Core/Random/UnityRandom.cs.meta +11 -11
  157. package/Runtime/Core/Random/WyRandom.cs +121 -121
  158. package/Runtime/Core/Random/WyRandom.cs.meta +2 -2
  159. package/Runtime/Core/Random/XorShiftRandom.cs +52 -52
  160. package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -11
  161. package/Runtime/Core/Random/XorShiroRandom.cs +119 -119
  162. package/Runtime/Core/Random/XorShiroRandom.cs.meta +2 -2
  163. package/Runtime/Core/Serialization/JsonConverters/ColorConverter.cs +88 -88
  164. package/Runtime/Core/Serialization/JsonConverters/GameObjectConverter.cs +37 -37
  165. package/Runtime/Core/Serialization/JsonConverters/Matrix4x4Converter.cs +218 -218
  166. package/Runtime/Core/Serialization/JsonConverters/TypeConverter.cs +28 -28
  167. package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +74 -74
  168. package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +81 -81
  169. package/Runtime/Core/Serialization/JsonConverters/Vector4Converter.cs +88 -88
  170. package/Runtime/Core/Serialization/Serializer.cs +195 -195
  171. package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +113 -113
  172. package/Runtime/Protobuf-Net/System.Buffers.dll.meta +33 -33
  173. package/Runtime/Protobuf-Net/System.Collections.Immutable.dll.meta +33 -33
  174. package/Runtime/Protobuf-Net/System.Collections.Immutable.xml +5379 -5379
  175. package/Runtime/Protobuf-Net/System.Collections.Immutable.xml.meta +7 -7
  176. package/Runtime/Protobuf-Net/System.Numerics.Vectors.dll.meta +33 -33
  177. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll.meta +33 -33
  178. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml +290 -290
  179. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml.meta +7 -7
  180. package/Runtime/Protobuf-Net/protobuf-net.Core.dll.meta +33 -33
  181. package/Runtime/Protobuf-Net/protobuf-net.dll.meta +33 -33
  182. package/Runtime/UI/LayeredImage.cs +364 -364
  183. package/Runtime/UI/LayeredImage.cs.meta +2 -2
  184. package/Runtime/UI.meta +2 -2
  185. package/Runtime/Utils/AnimationEventEqualityComparer.cs +161 -161
  186. package/Runtime/Utils/AnimatorEnumStateMachine.cs +88 -88
  187. package/Runtime/Utils/Buffers.cs +33 -33
  188. package/Runtime/Utils/CenterPointOffset.cs +30 -30
  189. package/Runtime/Utils/CenterPointOffset.cs.meta +2 -2
  190. package/Runtime/Utils/CircleLineRenderer.cs +134 -134
  191. package/Runtime/Utils/CoroutineHandler.cs +4 -4
  192. package/Runtime/Utils/CoroutineHandler.cs.meta +2 -2
  193. package/Runtime/Utils/DeferredDisposalResult.cs +23 -23
  194. package/Runtime/Utils/MatchColliderToSprite.cs +94 -94
  195. package/Runtime/Utils/MatchColliderToSprite.cs.meta +2 -2
  196. package/Runtime/Utils/Oscillator.cs +27 -27
  197. package/Runtime/Utils/RuntimeSingleton.cs +69 -69
  198. package/Runtime/Utils/RuntimeSingleton.cs.meta +11 -11
  199. package/Runtime/Utils/SetTextureImportData.cs +69 -69
  200. package/Runtime/Utils/SpriteRendererMetadata.cs +374 -374
  201. package/Runtime/Utils/SpriteRendererMetadata.cs.meta +2 -2
  202. package/Runtime/Utils/SpriteRendererSyncer.cs +100 -100
  203. package/Runtime/Utils/SpriteRendererSyncer.cs.meta +2 -2
  204. package/Runtime/Utils/TextureScale.cs +179 -179
  205. package/Runtime/Utils/TextureScale.cs.meta +2 -2
  206. package/Runtime/WallstopStudios.UnityHelpers.asmdef +13 -13
  207. package/Tests/Runtime/Attributes/ChildComponentTests.cs +81 -81
  208. package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs +28 -28
  209. package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs +28 -28
  210. package/Tests/Runtime/Attributes/ParentComponentTests.cs +68 -68
  211. package/Tests/Runtime/Components/RelationalComponentTesterComplex.cs +34 -34
  212. package/Tests/Runtime/Components/RelationalComponentTesterComplex.cs.meta +2 -2
  213. package/Tests/Runtime/Components/RelationalComponentsTesterSimple.cs +40 -40
  214. package/Tests/Runtime/Components.meta +2 -2
  215. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs +14 -14
  216. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs.meta +11 -11
  217. package/Tests/Runtime/DataStructures/CyclicBufferTests.cs +324 -324
  218. package/Tests/Runtime/DataStructures/QuadTreeTests.cs +14 -14
  219. package/Tests/Runtime/DataStructures/QuadTreeTests.cs.meta +11 -11
  220. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs +130 -130
  221. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs.meta +11 -11
  222. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs +14 -14
  223. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs.meta +11 -11
  224. package/Tests/Runtime/DataStructures.meta +8 -8
  225. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs +439 -439
  226. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs.meta +2 -2
  227. package/Tests/Runtime/Extensions/EnumExtensionTests.cs +128 -128
  228. package/Tests/Runtime/Extensions/EnumExtensionTests.cs.meta +2 -2
  229. package/Tests/Runtime/Extensions/IListExtensionTests.cs +104 -104
  230. package/Tests/Runtime/Extensions/RandomExtensionTests.cs +27 -27
  231. package/Tests/Runtime/Extensions/RandomExtensionTests.cs.meta +2 -2
  232. package/Tests/Runtime/Extensions/StringExtensionTests.cs +31 -31
  233. package/Tests/Runtime/Extensions/StringExtensionTests.cs.meta +2 -2
  234. package/Tests/Runtime/Extensions.meta +2 -2
  235. package/Tests/Runtime/Helper/ArrayConverterTests.cs +19 -19
  236. package/Tests/Runtime/Helper/ArrayConverterTests.cs.meta +2 -2
  237. package/Tests/Runtime/Helper/FormattingHelperTests.cs +129 -129
  238. package/Tests/Runtime/Helper/FormattingHelperTests.cs.meta +2 -2
  239. package/Tests/Runtime/Helper/ObjectHelperTests.cs +402 -402
  240. package/Tests/Runtime/Helper/ObjectHelperTests.cs.meta +2 -2
  241. package/Tests/Runtime/Helper/ReflectionHelperTests.cs +536 -536
  242. package/Tests/Runtime/Helper/SceneHelperTests.cs +94 -94
  243. package/Tests/Runtime/Helper/WallMathTests.cs +233 -233
  244. package/Tests/Runtime/Helper/WallMathTests.cs.meta +2 -2
  245. package/Tests/Runtime/Helper.meta +2 -2
  246. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs +14 -14
  247. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs.meta +11 -11
  248. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs +14 -14
  249. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs.meta +11 -11
  250. package/Tests/Runtime/Performance/RandomPerformanceTests.cs +157 -157
  251. package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -11
  252. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +61 -61
  253. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +2 -2
  254. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs +154 -154
  255. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs.meta +11 -11
  256. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs +14 -14
  257. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs.meta +11 -11
  258. package/Tests/Runtime/Performance.meta +8 -8
  259. package/Tests/Runtime/Random/DotNetRandomTests.cs +9 -9
  260. package/Tests/Runtime/Random/DotNetRandomTests.cs.meta +2 -2
  261. package/Tests/Runtime/Random/LinearCongruentialGeneratorTests.cs +12 -12
  262. package/Tests/Runtime/Random/PcgRandomTests.cs +9 -9
  263. package/Tests/Runtime/Random/PcgRandomTests.cs.meta +11 -11
  264. package/Tests/Runtime/Random/RandomTestBase.cs +787 -787
  265. package/Tests/Runtime/Random/RandomTestBase.cs.meta +11 -11
  266. package/Tests/Runtime/Random/RomuDuoRandomTests.cs +9 -9
  267. package/Tests/Runtime/Random/RomuDuoRandomTests.cs.meta +2 -2
  268. package/Tests/Runtime/Random/SplitMix64RandomTests.cs +9 -9
  269. package/Tests/Runtime/Random/SplitMix64RandomTests.cs.meta +2 -2
  270. package/Tests/Runtime/Random/SquirrelRandomTests.cs +14 -14
  271. package/Tests/Runtime/Random/SquirrelRandomTests.cs.meta +11 -11
  272. package/Tests/Runtime/Random/SystemRandomTests.cs +10 -10
  273. package/Tests/Runtime/Random/SystemRandomTests.cs.meta +11 -11
  274. package/Tests/Runtime/Random/UnityRandomTests.cs +9 -9
  275. package/Tests/Runtime/Random/UnityRandomTests.cs.meta +11 -11
  276. package/Tests/Runtime/Random/WyRandomTests.cs +9 -9
  277. package/Tests/Runtime/Random/WyRandomTests.cs.meta +2 -2
  278. package/Tests/Runtime/Random/XorShiftRandomTests.cs +9 -9
  279. package/Tests/Runtime/Random/XorShiftRandomTests.cs.meta +11 -11
  280. package/Tests/Runtime/Random/XorShiroRandomTests.cs +9 -9
  281. package/Tests/Runtime/Random/XorShiroRandomTests.cs.meta +2 -2
  282. package/Tests/Runtime/Random.meta +8 -8
  283. package/Tests/Runtime/Serialization/JsonSerializationTest.cs +156 -156
  284. package/Tests/Runtime/Serialization/JsonSerializationTest.cs.meta +2 -2
  285. package/Tests/Runtime/Serialization.meta +2 -2
  286. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs +399 -399
  287. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs.meta +2 -2
  288. package/Tests/Runtime/Utils.meta +2 -2
  289. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef +22 -22
  290. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef.meta +7 -7
  291. package/Tests/Runtime.meta +8 -8
  292. 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");
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
+ }