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

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 (266) hide show
  1. package/.gitattributes +63 -63
  2. package/.github/workflows/npm-publish.yml +60 -0
  3. package/.github/workflows/unity-package.yml +87 -0
  4. package/Editor/AnimationCopier.cs +158 -158
  5. package/Editor/AnimationCopier.cs.meta +2 -2
  6. package/Editor/AnimationCreator.cs +262 -262
  7. package/Editor/AnimationCreator.cs.meta +11 -11
  8. package/Editor/AnimationEventEditor.cs +887 -887
  9. package/Editor/AnimatorControllerCopier.cs +162 -162
  10. package/Editor/AnimatorControllerCopier.cs.meta +2 -2
  11. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs +34 -34
  12. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs.meta +2 -2
  13. package/Editor/CustomEditors.meta +2 -2
  14. package/Editor/EnsureTextureSizeWizard.cs +110 -110
  15. package/Editor/EnsureTextureSizeWizard.cs.meta +2 -2
  16. package/Editor/PrefabCheckWizard.cs +165 -165
  17. package/Editor/PrefabCheckWizard.cs.meta +11 -11
  18. package/Editor/SpriteSettingsApplier.cs +168 -168
  19. package/Editor/SpriteSettingsApplier.cs.meta +2 -2
  20. package/Editor/StringInListeDrawer.cs +56 -56
  21. package/Editor/TextureResizerWizard.cs +181 -181
  22. package/Editor/TextureResizerWizard.cs.meta +2 -2
  23. package/Editor/TextureSettingsApplier.cs +171 -171
  24. package/Editor/TextureSettingsApplier.cs.meta +2 -2
  25. package/Editor/Utils/EditorUtilities.cs +22 -22
  26. package/Editor/Utils/EditorUtilities.cs.meta +11 -11
  27. package/Editor/Utils/ReadOnlyPropertyDrawer.cs +26 -26
  28. package/Editor/Utils/ReadOnlyPropertyDrawer.cs.meta +11 -11
  29. package/Editor/Utils.meta +8 -8
  30. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef +17 -17
  31. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef.meta +7 -7
  32. package/LICENSE +21 -21
  33. package/LICENSE.md +6 -6
  34. package/LICENSE.meta +7 -7
  35. package/README.md +117 -117
  36. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll.meta +33 -33
  37. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml +223 -223
  38. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml.meta +7 -7
  39. package/Runtime/Binaries/System.Text.Encodings.Web.dll.meta +33 -33
  40. package/Runtime/Binaries/System.Text.Encodings.Web.xml +935 -935
  41. package/Runtime/Binaries/System.Text.Encodings.Web.xml.meta +7 -7
  42. package/Runtime/Binaries/System.Text.Json.dll.meta +33 -33
  43. package/Runtime/Binaries/System.Text.Json.xml +4829 -4829
  44. package/Runtime/Binaries/System.Text.Json.xml.meta +7 -7
  45. package/Runtime/Binaries.meta +8 -8
  46. package/Runtime/Core/Attributes/AnimationEventAttribute.cs +131 -131
  47. package/Runtime/Core/Attributes/ChildComponentAttribute.cs +189 -189
  48. package/Runtime/Core/Attributes/KSerializableAttribute.cs +19 -19
  49. package/Runtime/Core/Attributes/NotNullAttribute.cs +32 -32
  50. package/Runtime/Core/Attributes/ParentComponent.cs +184 -184
  51. package/Runtime/Core/Attributes/ReadOnlyAttribute.cs +6 -6
  52. package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +14 -14
  53. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +119 -119
  54. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs.meta +11 -11
  55. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs +101 -101
  56. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs.meta +11 -11
  57. package/Runtime/Core/Attributes.meta +8 -8
  58. package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs +92 -92
  59. package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs +185 -185
  60. package/Runtime/Core/DataStructure/Adapters/KGuid.cs +305 -305
  61. package/Runtime/Core/DataStructure/Adapters/KVector2.cs +80 -80
  62. package/Runtime/Core/DataStructure/Circle.cs +50 -50
  63. package/Runtime/Core/DataStructure/CyclicBuffer.cs +155 -155
  64. package/Runtime/Core/DataStructure/ISpatialTree.cs +60 -60
  65. package/Runtime/Core/DataStructure/ISpatialTree.cs.meta +11 -11
  66. package/Runtime/Core/DataStructure/KDTree.cs +290 -290
  67. package/Runtime/Core/DataStructure/KDTree.cs.meta +11 -11
  68. package/Runtime/Core/DataStructure/QuadTree.cs +279 -279
  69. package/Runtime/Core/DataStructure/RTree.cs +336 -336
  70. package/Runtime/Core/DataStructure/RTree.cs.meta +11 -11
  71. package/Runtime/Core/DataStructure/StringWrapper.cs +91 -91
  72. package/Runtime/Core/DataStructure/TimedCache.cs +51 -51
  73. package/Runtime/Core/Extension/AnimatorExtensions.cs +25 -25
  74. package/Runtime/Core/Extension/CircleExtensions.cs +25 -25
  75. package/Runtime/Core/Extension/ColorExtensions.cs +338 -338
  76. package/Runtime/Core/Extension/DictionaryExtensions.cs +251 -251
  77. package/Runtime/Core/Extension/DirectionExtensions.cs +213 -213
  78. package/Runtime/Core/Extension/HashSetExtensions.cs +12 -12
  79. package/Runtime/Core/Extension/IEnumerableExtensions.cs +122 -122
  80. package/Runtime/Core/Extension/IListExtensions.cs +89 -89
  81. package/Runtime/Core/Extension/LoggingExtensions.cs +258 -258
  82. package/Runtime/Core/Extension/RandomExtensions.cs +109 -109
  83. package/Runtime/Core/Extension/StringExtensions.cs +151 -151
  84. package/Runtime/Core/Extension/UnityExtensions.cs +1607 -1607
  85. package/Runtime/Core/Helper/ArrayConverter.cs +39 -39
  86. package/Runtime/Core/Helper/ArrayConverter.cs.meta +2 -2
  87. package/Runtime/Core/Helper/AssignUtilities.cs +14 -14
  88. package/Runtime/Core/Helper/AssignUtilities.cs.meta +11 -11
  89. package/Runtime/Core/Helper/Enumerables.cs +17 -17
  90. package/Runtime/Core/Helper/Geometry.cs +43 -43
  91. package/Runtime/Core/Helper/Helpers.cs +722 -722
  92. package/Runtime/Core/Helper/Helpers.cs.meta +11 -11
  93. package/Runtime/Core/Helper/IterationHelpers.cs +32 -32
  94. package/Runtime/Core/Helper/IterationHelpers.cs.meta +11 -11
  95. package/Runtime/Core/Helper/LifetimeHelpers.cs +13 -13
  96. package/Runtime/Core/Helper/Objects.cs +767 -767
  97. package/Runtime/Core/Helper/Partials/LogHelpers.cs +13 -13
  98. package/Runtime/Core/Helper/Partials/LogHelpers.cs.meta +2 -2
  99. package/Runtime/Core/Helper/Partials/MathHelpers.cs +30 -30
  100. package/Runtime/Core/Helper/Partials/MathHelpers.cs.meta +2 -2
  101. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +388 -388
  102. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs.meta +2 -2
  103. package/Runtime/Core/Helper/Partials/TransformHelpers.cs +167 -167
  104. package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +2 -2
  105. package/Runtime/Core/Helper/Partials.meta +2 -2
  106. package/Runtime/Core/Helper/ReflectionHelpers.cs +152 -152
  107. package/Runtime/Core/Helper/ReflectionHelpers.cs.meta +2 -2
  108. package/Runtime/Core/Helper/SpriteHelpers.cs +86 -86
  109. package/Runtime/Core/Helper/SpriteHelpers.cs.meta +11 -11
  110. package/Runtime/Core/Helper/StringInList.cs +31 -31
  111. package/Runtime/Core/Helper/StringInList.cs.meta +11 -11
  112. package/Runtime/Core/Helper/WallMath.cs +166 -166
  113. package/Runtime/Core/Math/Line.cs +55 -55
  114. package/Runtime/Core/Math/Parabola.cs +47 -47
  115. package/Runtime/Core/Math/PointPolygonCheck.cs +36 -36
  116. package/Runtime/Core/Math/PointPolygonCheck.cs.meta +11 -11
  117. package/Runtime/Core/Math/Range.cs +92 -92
  118. package/Runtime/Core/Math/XXHash.cs +310 -310
  119. package/Runtime/Core/Math/XXHash.cs.meta +11 -11
  120. package/Runtime/Core/Model/Direction.cs +43 -43
  121. package/Runtime/Core/OneOf/FastOneOf.cs +152 -152
  122. package/Runtime/Core/OneOf/None.cs +4 -4
  123. package/Runtime/Core/Random/AbstractRandom.cs +561 -561
  124. package/Runtime/Core/Random/DotNetRandom.cs +52 -52
  125. package/Runtime/Core/Random/DotNetRandom.cs.meta +2 -2
  126. package/Runtime/Core/Random/IRandom.cs +160 -160
  127. package/Runtime/Core/Random/NativePcgRandom.cs +97 -97
  128. package/Runtime/Core/Random/PRNG.cs +7 -7
  129. package/Runtime/Core/Random/PRNG.cs.meta +2 -2
  130. package/Runtime/Core/Random/PcgRandom.cs +149 -149
  131. package/Runtime/Core/Random/PerlinNoise.cs +369 -369
  132. package/Runtime/Core/Random/PerlinNoise.cs.meta +2 -2
  133. package/Runtime/Core/Random/RandomState.cs +131 -131
  134. package/Runtime/Core/Random/RandomUtilities.cs +26 -26
  135. package/Runtime/Core/Random/RandomUtilities.cs.meta +11 -11
  136. package/Runtime/Core/Random/RomuDuo.cs +116 -116
  137. package/Runtime/Core/Random/RomuDuo.cs.meta +2 -2
  138. package/Runtime/Core/Random/SplitMix64.cs +94 -94
  139. package/Runtime/Core/Random/SplitMix64.cs.meta +2 -2
  140. package/Runtime/Core/Random/SquirrelRandom.cs +84 -84
  141. package/Runtime/Core/Random/SystemRandom.cs +162 -162
  142. package/Runtime/Core/Random/ThreadLocalRandom.cs +12 -12
  143. package/Runtime/Core/Random/UnityRandom.cs +57 -57
  144. package/Runtime/Core/Random/UnityRandom.cs.meta +11 -11
  145. package/Runtime/Core/Random/WyRandom.cs +121 -121
  146. package/Runtime/Core/Random/WyRandom.cs.meta +2 -2
  147. package/Runtime/Core/Random/XorShiftRandom.cs +47 -47
  148. package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -11
  149. package/Runtime/Core/Random/XorShiroRandom.cs +117 -117
  150. package/Runtime/Core/Random/XorShiroRandom.cs.meta +2 -2
  151. package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +74 -74
  152. package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +81 -81
  153. package/Runtime/Core/Serialization/Serializer.cs +184 -184
  154. package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +107 -107
  155. package/Runtime/Protobuf-Net/System.Buffers.dll.meta +33 -33
  156. package/Runtime/Protobuf-Net/System.Collections.Immutable.dll.meta +33 -33
  157. package/Runtime/Protobuf-Net/System.Collections.Immutable.xml +5379 -5379
  158. package/Runtime/Protobuf-Net/System.Collections.Immutable.xml.meta +7 -7
  159. package/Runtime/Protobuf-Net/System.Numerics.Vectors.dll.meta +33 -33
  160. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll.meta +33 -33
  161. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml +290 -290
  162. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml.meta +7 -7
  163. package/Runtime/Protobuf-Net/protobuf-net.Core.dll.meta +33 -33
  164. package/Runtime/Protobuf-Net/protobuf-net.dll.meta +33 -33
  165. package/Runtime/UI/LayeredImage.cs +364 -364
  166. package/Runtime/UI/LayeredImage.cs.meta +2 -2
  167. package/Runtime/UI.meta +2 -2
  168. package/Runtime/Utils/AnimationEventEqualityComparer.cs +161 -161
  169. package/Runtime/Utils/AnimatorEnumStateMachine.cs +88 -88
  170. package/Runtime/Utils/Buffers.cs +32 -32
  171. package/Runtime/Utils/CenterPointOffset.cs +30 -30
  172. package/Runtime/Utils/CenterPointOffset.cs.meta +2 -2
  173. package/Runtime/Utils/CircleLineRenderer.cs +134 -134
  174. package/Runtime/Utils/CoroutineHandler.cs +4 -4
  175. package/Runtime/Utils/CoroutineHandler.cs.meta +2 -2
  176. package/Runtime/Utils/MatchColliderToSprite.cs +94 -94
  177. package/Runtime/Utils/MatchColliderToSprite.cs.meta +2 -2
  178. package/Runtime/Utils/Oscillator.cs +27 -27
  179. package/Runtime/Utils/RuntimeSingleton.cs +57 -57
  180. package/Runtime/Utils/RuntimeSingleton.cs.meta +11 -11
  181. package/Runtime/Utils/SetTextureImportData.cs +69 -69
  182. package/Runtime/Utils/SpriteRendererMetadata.cs +312 -312
  183. package/Runtime/Utils/SpriteRendererMetadata.cs.meta +2 -2
  184. package/Runtime/Utils/SpriteRendererSyncer.cs +100 -100
  185. package/Runtime/Utils/SpriteRendererSyncer.cs.meta +2 -2
  186. package/Runtime/Utils/TextureScale.cs +179 -179
  187. package/Runtime/Utils/TextureScale.cs.meta +2 -2
  188. package/Runtime/WallstopStudios.UnityHelpers.asmdef +13 -13
  189. package/Tests/Runtime/Attributes/ChildComponentTests.cs +81 -81
  190. package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs +28 -28
  191. package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs +28 -28
  192. package/Tests/Runtime/Attributes/ParentComponentTests.cs +68 -68
  193. package/Tests/Runtime/Components/RelationalComponentTester.cs +34 -34
  194. package/Tests/Runtime/Components/RelationalComponentTester.cs.meta +2 -2
  195. package/Tests/Runtime/Components.meta +2 -2
  196. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs +14 -14
  197. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs.meta +11 -11
  198. package/Tests/Runtime/DataStructures/CyclicBufferTests.cs +324 -324
  199. package/Tests/Runtime/DataStructures/QuadTreeTests.cs +14 -14
  200. package/Tests/Runtime/DataStructures/QuadTreeTests.cs.meta +11 -11
  201. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs +130 -130
  202. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs.meta +11 -11
  203. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs +14 -14
  204. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs.meta +11 -11
  205. package/Tests/Runtime/DataStructures.meta +8 -8
  206. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs +439 -439
  207. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs.meta +2 -2
  208. package/Tests/Runtime/Extensions/IListExtensionTests.cs +76 -76
  209. package/Tests/Runtime/Extensions/RandomExtensionTests.cs +27 -27
  210. package/Tests/Runtime/Extensions/RandomExtensionTests.cs.meta +2 -2
  211. package/Tests/Runtime/Extensions/StringExtensionTests.cs +31 -31
  212. package/Tests/Runtime/Extensions/StringExtensionTests.cs.meta +2 -2
  213. package/Tests/Runtime/Extensions.meta +2 -2
  214. package/Tests/Runtime/Helper/ArrayConverterTests.cs +19 -19
  215. package/Tests/Runtime/Helper/ArrayConverterTests.cs.meta +2 -2
  216. package/Tests/Runtime/Helper/ObjectHelperTests.cs +402 -402
  217. package/Tests/Runtime/Helper/ObjectHelperTests.cs.meta +2 -2
  218. package/Tests/Runtime/Helper/WallMathTests.cs +233 -233
  219. package/Tests/Runtime/Helper/WallMathTests.cs.meta +2 -2
  220. package/Tests/Runtime/Helper.meta +2 -2
  221. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs +14 -14
  222. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs.meta +11 -11
  223. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs +14 -14
  224. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs.meta +11 -11
  225. package/Tests/Runtime/Performance/RandomPerformanceTests.cs +139 -139
  226. package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -11
  227. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +37 -37
  228. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +2 -2
  229. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs +154 -154
  230. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs.meta +11 -11
  231. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs +14 -14
  232. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs.meta +11 -11
  233. package/Tests/Runtime/Performance.meta +8 -8
  234. package/Tests/Runtime/Random/DotNetRandomTests.cs +9 -9
  235. package/Tests/Runtime/Random/DotNetRandomTests.cs.meta +2 -2
  236. package/Tests/Runtime/Random/PcgRandomTests.cs +9 -9
  237. package/Tests/Runtime/Random/PcgRandomTests.cs.meta +11 -11
  238. package/Tests/Runtime/Random/RandomTestBase.cs +787 -787
  239. package/Tests/Runtime/Random/RandomTestBase.cs.meta +11 -11
  240. package/Tests/Runtime/Random/RomuDuoRandomTests.cs +9 -9
  241. package/Tests/Runtime/Random/RomuDuoRandomTests.cs.meta +2 -2
  242. package/Tests/Runtime/Random/SplitMix64RandomTests.cs +9 -9
  243. package/Tests/Runtime/Random/SplitMix64RandomTests.cs.meta +2 -2
  244. package/Tests/Runtime/Random/SquirrelRandomTests.cs +14 -14
  245. package/Tests/Runtime/Random/SquirrelRandomTests.cs.meta +11 -11
  246. package/Tests/Runtime/Random/SystemRandomTests.cs +10 -10
  247. package/Tests/Runtime/Random/SystemRandomTests.cs.meta +11 -11
  248. package/Tests/Runtime/Random/UnityRandomTests.cs +9 -9
  249. package/Tests/Runtime/Random/UnityRandomTests.cs.meta +11 -11
  250. package/Tests/Runtime/Random/WyRandomTests.cs +9 -9
  251. package/Tests/Runtime/Random/WyRandomTests.cs.meta +2 -2
  252. package/Tests/Runtime/Random/XorShiftRandomTests.cs +9 -9
  253. package/Tests/Runtime/Random/XorShiftRandomTests.cs.meta +11 -11
  254. package/Tests/Runtime/Random/XorShiroRandomTests.cs +9 -9
  255. package/Tests/Runtime/Random/XorShiroRandomTests.cs.meta +2 -2
  256. package/Tests/Runtime/Random.meta +8 -8
  257. package/Tests/Runtime/Serialization/JsonSerializationTest.cs +84 -84
  258. package/Tests/Runtime/Serialization/JsonSerializationTest.cs.meta +2 -2
  259. package/Tests/Runtime/Serialization.meta +2 -2
  260. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs +399 -399
  261. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs.meta +2 -2
  262. package/Tests/Runtime/Utils.meta +2 -2
  263. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef +22 -22
  264. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef.meta +7 -7
  265. package/Tests/Runtime.meta +8 -8
  266. package/package.json +38 -38
@@ -1,3 +1,3 @@
1
- fileFormatVersion: 2
2
- guid: 321716db87b24857a466b1c6c895c72b
1
+ fileFormatVersion: 2
2
+ guid: 321716db87b24857a466b1c6c895c72b
3
3
  timeCreated: 1732646645
@@ -1,167 +1,167 @@
1
- namespace UnityHelpers.Core.Helper
2
- {
3
- using System.Collections.Generic;
4
- using UnityEngine;
5
-
6
- public static partial class Helpers
7
- {
8
- public static IEnumerable<GameObject> IterateOverChildGameObjects(
9
- this GameObject gameObject
10
- )
11
- {
12
- for (int i = 0; i < gameObject.transform.childCount; i++)
13
- {
14
- yield return gameObject.transform.GetChild(i).gameObject;
15
- }
16
- }
17
-
18
- public static IEnumerable<GameObject> IterateOverChildGameObjectsRecursively(
19
- this GameObject gameObject
20
- )
21
- {
22
- for (int i = 0; i < gameObject.transform.childCount; i++)
23
- {
24
- GameObject child = gameObject.transform.GetChild(i).gameObject;
25
- yield return child;
26
- foreach (GameObject go in child.IterateOverChildGameObjectsRecursively())
27
- {
28
- yield return go;
29
- }
30
- }
31
- }
32
-
33
- public static IEnumerable<GameObject> IterateOverChildGameObjectsRecursivelyIncludingSelf(
34
- this GameObject gameObject
35
- )
36
- {
37
- yield return gameObject;
38
-
39
- for (int i = 0; i < gameObject.transform.childCount; ++i)
40
- {
41
- GameObject child = gameObject.transform.GetChild(i).gameObject;
42
- foreach (
43
- GameObject c in child.IterateOverChildGameObjectsRecursivelyIncludingSelf()
44
- )
45
- {
46
- yield return c;
47
- }
48
- }
49
- }
50
-
51
- public static IEnumerable<GameObject> IterateOverParentGameObjects(
52
- this GameObject gameObject
53
- )
54
- {
55
- Transform currentTransform = gameObject.transform.parent;
56
- while (currentTransform != null)
57
- {
58
- yield return currentTransform.gameObject;
59
- currentTransform = currentTransform.parent;
60
- }
61
- }
62
-
63
- public static IEnumerable<GameObject> IterateOverParentGameObjectsRecursivelyIncludingSelf(
64
- this GameObject gameObject
65
- )
66
- {
67
- yield return gameObject;
68
-
69
- foreach (GameObject parent in IterateOverParentGameObjects(gameObject))
70
- {
71
- yield return parent;
72
- }
73
- }
74
-
75
- public static IEnumerable<T> IterateOverAllChildComponentsRecursively<T>(
76
- this Component component
77
- )
78
- {
79
- if (component == null)
80
- {
81
- yield break;
82
- }
83
-
84
- foreach (T c in component.gameObject.GetComponents<T>())
85
- {
86
- yield return c;
87
- }
88
-
89
- for (int i = 0; i < component.transform.childCount; ++i)
90
- {
91
- Transform child = component.transform.GetChild(i);
92
-
93
- foreach (T c in child.IterateOverAllChildComponentsRecursively<T>())
94
- {
95
- yield return c;
96
- }
97
- }
98
- }
99
-
100
- public static IEnumerable<Transform> IterateOverAllChildren(this Component component)
101
- {
102
- if (component == null)
103
- {
104
- yield break;
105
- }
106
-
107
- for (int i = 0; i < component.transform.childCount; ++i)
108
- {
109
- yield return component.transform.GetChild(i);
110
- }
111
- }
112
-
113
- public static IEnumerable<Transform> IterateOverAllParents(this Component component)
114
- {
115
- if (component == null)
116
- {
117
- yield break;
118
- }
119
-
120
- Transform transform = component.transform;
121
- while (transform.parent != null)
122
- {
123
- yield return transform.parent;
124
- transform = transform.parent;
125
- }
126
- }
127
-
128
- public static IEnumerable<Transform> IterateOverAllParentsIncludingSelf(
129
- this Component component
130
- )
131
- {
132
- if (component == null)
133
- {
134
- yield break;
135
- }
136
-
137
- Transform transform = component.transform;
138
- while (transform != null)
139
- {
140
- yield return transform;
141
- transform = transform.parent;
142
- }
143
- }
144
-
145
- public static IEnumerable<Transform> IterateOverAllChildrenRecursively(
146
- this Component component
147
- )
148
- {
149
- if (component == null)
150
- {
151
- yield break;
152
- }
153
-
154
- for (int i = 0; i < component.transform.childCount; ++i)
155
- {
156
- Transform childTransform = component.transform.GetChild(i);
157
- yield return childTransform;
158
- foreach (
159
- Transform childChildTransform in childTransform.IterateOverAllChildrenRecursively()
160
- )
161
- {
162
- yield return childChildTransform;
163
- }
164
- }
165
- }
166
- }
167
- }
1
+ namespace UnityHelpers.Core.Helper
2
+ {
3
+ using System.Collections.Generic;
4
+ using UnityEngine;
5
+
6
+ public static partial class Helpers
7
+ {
8
+ public static IEnumerable<GameObject> IterateOverChildGameObjects(
9
+ this GameObject gameObject
10
+ )
11
+ {
12
+ for (int i = 0; i < gameObject.transform.childCount; i++)
13
+ {
14
+ yield return gameObject.transform.GetChild(i).gameObject;
15
+ }
16
+ }
17
+
18
+ public static IEnumerable<GameObject> IterateOverChildGameObjectsRecursively(
19
+ this GameObject gameObject
20
+ )
21
+ {
22
+ for (int i = 0; i < gameObject.transform.childCount; i++)
23
+ {
24
+ GameObject child = gameObject.transform.GetChild(i).gameObject;
25
+ yield return child;
26
+ foreach (GameObject go in child.IterateOverChildGameObjectsRecursively())
27
+ {
28
+ yield return go;
29
+ }
30
+ }
31
+ }
32
+
33
+ public static IEnumerable<GameObject> IterateOverChildGameObjectsRecursivelyIncludingSelf(
34
+ this GameObject gameObject
35
+ )
36
+ {
37
+ yield return gameObject;
38
+
39
+ for (int i = 0; i < gameObject.transform.childCount; ++i)
40
+ {
41
+ GameObject child = gameObject.transform.GetChild(i).gameObject;
42
+ foreach (
43
+ GameObject c in child.IterateOverChildGameObjectsRecursivelyIncludingSelf()
44
+ )
45
+ {
46
+ yield return c;
47
+ }
48
+ }
49
+ }
50
+
51
+ public static IEnumerable<GameObject> IterateOverParentGameObjects(
52
+ this GameObject gameObject
53
+ )
54
+ {
55
+ Transform currentTransform = gameObject.transform.parent;
56
+ while (currentTransform != null)
57
+ {
58
+ yield return currentTransform.gameObject;
59
+ currentTransform = currentTransform.parent;
60
+ }
61
+ }
62
+
63
+ public static IEnumerable<GameObject> IterateOverParentGameObjectsRecursivelyIncludingSelf(
64
+ this GameObject gameObject
65
+ )
66
+ {
67
+ yield return gameObject;
68
+
69
+ foreach (GameObject parent in IterateOverParentGameObjects(gameObject))
70
+ {
71
+ yield return parent;
72
+ }
73
+ }
74
+
75
+ public static IEnumerable<T> IterateOverAllChildComponentsRecursively<T>(
76
+ this Component component
77
+ )
78
+ {
79
+ if (component == null)
80
+ {
81
+ yield break;
82
+ }
83
+
84
+ foreach (T c in component.gameObject.GetComponents<T>())
85
+ {
86
+ yield return c;
87
+ }
88
+
89
+ for (int i = 0; i < component.transform.childCount; ++i)
90
+ {
91
+ Transform child = component.transform.GetChild(i);
92
+
93
+ foreach (T c in child.IterateOverAllChildComponentsRecursively<T>())
94
+ {
95
+ yield return c;
96
+ }
97
+ }
98
+ }
99
+
100
+ public static IEnumerable<Transform> IterateOverAllChildren(this Component component)
101
+ {
102
+ if (component == null)
103
+ {
104
+ yield break;
105
+ }
106
+
107
+ for (int i = 0; i < component.transform.childCount; ++i)
108
+ {
109
+ yield return component.transform.GetChild(i);
110
+ }
111
+ }
112
+
113
+ public static IEnumerable<Transform> IterateOverAllParents(this Component component)
114
+ {
115
+ if (component == null)
116
+ {
117
+ yield break;
118
+ }
119
+
120
+ Transform transform = component.transform;
121
+ while (transform.parent != null)
122
+ {
123
+ yield return transform.parent;
124
+ transform = transform.parent;
125
+ }
126
+ }
127
+
128
+ public static IEnumerable<Transform> IterateOverAllParentsIncludingSelf(
129
+ this Component component
130
+ )
131
+ {
132
+ if (component == null)
133
+ {
134
+ yield break;
135
+ }
136
+
137
+ Transform transform = component.transform;
138
+ while (transform != null)
139
+ {
140
+ yield return transform;
141
+ transform = transform.parent;
142
+ }
143
+ }
144
+
145
+ public static IEnumerable<Transform> IterateOverAllChildrenRecursively(
146
+ this Component component
147
+ )
148
+ {
149
+ if (component == null)
150
+ {
151
+ yield break;
152
+ }
153
+
154
+ for (int i = 0; i < component.transform.childCount; ++i)
155
+ {
156
+ Transform childTransform = component.transform.GetChild(i);
157
+ yield return childTransform;
158
+ foreach (
159
+ Transform childChildTransform in childTransform.IterateOverAllChildrenRecursively()
160
+ )
161
+ {
162
+ yield return childChildTransform;
163
+ }
164
+ }
165
+ }
166
+ }
167
+ }
@@ -1,3 +1,3 @@
1
- fileFormatVersion: 2
2
- guid: 6fa254f39ddb413799e14fc26fccc6ea
1
+ fileFormatVersion: 2
2
+ guid: 6fa254f39ddb413799e14fc26fccc6ea
3
3
  timeCreated: 1732647396
@@ -1,3 +1,3 @@
1
- fileFormatVersion: 2
2
- guid: 4316246bccd04b778b1bdeee96f54110
1
+ fileFormatVersion: 2
2
+ guid: 4316246bccd04b778b1bdeee96f54110
3
3
  timeCreated: 1732646634
@@ -1,152 +1,152 @@
1
- namespace UnityHelpers.Core.Helper
2
- {
3
- using System;
4
- using System.Collections;
5
- using System.Collections.Generic;
6
- using System.Reflection;
7
- using System.Reflection.Emit;
8
- using System.Runtime.CompilerServices;
9
- using Extension;
10
-
11
- public static class ReflectionHelpers
12
- {
13
- private static readonly Dictionary<Type, Func<int, Array>> ArrayCreators = new();
14
- private static readonly Dictionary<Type, Func<IList>> ListCreators = new();
15
- private static readonly Dictionary<Type, Func<int, IList>> ListWithCapacityCreators = new();
16
-
17
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
18
- public static Func<int, Array> GetOrCreateArrayCreator(Type type)
19
- {
20
- return ArrayCreators.GetOrAdd(type, elementType => GetArrayCreator(elementType));
21
- }
22
-
23
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
24
- public static Array CreateArray(Type type, int length)
25
- {
26
- return GetOrCreateArrayCreator(type).Invoke(length);
27
- }
28
-
29
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
30
- public static IList CreateList(Type elementType, int length)
31
- {
32
- return ListWithCapacityCreators
33
- .GetOrAdd(elementType, type => GetListWithCapacityCreator(type))
34
- .Invoke(length);
35
- }
36
-
37
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
38
- public static IList CreateList(Type elementType)
39
- {
40
- return ListCreators.GetOrAdd(elementType, type => GetListCreator(type)).Invoke();
41
- }
42
-
43
- public static Action<object, object> CreateFieldSetter(Type type, FieldInfo field)
44
- {
45
- #if WEB_GL
46
- return field.SetValue;
47
- #else
48
- DynamicMethod dynamicMethod = new(
49
- $"SetField{field.Name}",
50
- null,
51
- new[] { typeof(object), typeof(object) },
52
- type.Module,
53
- true
54
- );
55
-
56
- ILGenerator il = dynamicMethod.GetILGenerator();
57
-
58
- il.Emit(OpCodes.Ldarg_0); // Load the object (arg0)
59
- il.Emit(OpCodes.Castclass, type); // Cast to the actual type
60
-
61
- il.Emit(OpCodes.Ldarg_1); // Load the value (arg1)
62
- il.Emit(
63
- field.FieldType.IsValueType ? OpCodes.Unbox_Any : OpCodes.Castclass,
64
- field.FieldType
65
- ); // Cast for reference types
66
- // Unbox if it's a value type
67
- il.Emit(OpCodes.Stfld, field); // Set the field
68
- il.Emit(OpCodes.Ret); // Return
69
- return (Action<object, object>)
70
- dynamicMethod.CreateDelegate(typeof(Action<object, object>));
71
- #endif
72
- }
73
-
74
- public static Func<int, Array> GetArrayCreator(Type elementType)
75
- {
76
- #if WEB_GL
77
- return size => Array.CreateInstance(elementType, size);
78
- #else
79
-
80
- DynamicMethod dynamicMethod = new DynamicMethod(
81
- $"CreateArray{elementType.Namespace}",
82
- typeof(Array), // Return type: Array
83
- new[] { typeof(int) }, // Parameter: int (size)
84
- true
85
- );
86
-
87
- ILGenerator il = dynamicMethod.GetILGenerator();
88
- il.Emit(OpCodes.Ldarg_0); // Load the array size
89
- il.Emit(OpCodes.Newarr, elementType); // Create a new array of 'type'
90
- il.Emit(OpCodes.Ret); // Return the array
91
- return (Func<int, Array>)dynamicMethod.CreateDelegate(typeof(Func<int, Array>));
92
- #endif
93
- }
94
-
95
- public static Func<IList> GetListCreator(Type elementType)
96
- {
97
- Type listType = typeof(List<>).MakeGenericType(elementType);
98
- #if WEB_GL
99
- return () => (IList)Activator.CreateInstance(listType);
100
- #else
101
- DynamicMethod dynamicMethod = new DynamicMethod(
102
- $"CreateList{listType.Name}",
103
- typeof(IList), // Return type: IList
104
- Type.EmptyTypes, // No parameters
105
- true
106
- );
107
-
108
- ILGenerator il = dynamicMethod.GetILGenerator();
109
- ConstructorInfo constructor = listType.GetConstructor(Type.EmptyTypes);
110
- if (constructor == null)
111
- {
112
- throw new ArgumentException(
113
- $"Type {listType} does not have a parameterless constructor."
114
- );
115
- }
116
-
117
- il.Emit(OpCodes.Newobj, constructor); // Call List<T> constructor
118
- il.Emit(OpCodes.Ret); // Return the instance
119
- return (Func<IList>)dynamicMethod.CreateDelegate(typeof(Func<IList>));
120
- #endif
121
- }
122
-
123
- public static Func<int, IList> GetListWithCapacityCreator(Type elementType)
124
- {
125
- Type listType = typeof(List<>).MakeGenericType(elementType);
126
- #if WEB_GL
127
- return _ => (IList)Activator.CreateInstance(listType);
128
- #else
129
- DynamicMethod dynamicMethod = new DynamicMethod(
130
- $"CreateListWithCapacity{listType.Name}",
131
- typeof(IList), // Return type: IList
132
- new[] { typeof(int) }, // Parameter: int (size)
133
- true
134
- );
135
-
136
- ILGenerator il = dynamicMethod.GetILGenerator();
137
- ConstructorInfo constructor = listType.GetConstructor(new[] { typeof(int) });
138
- if (constructor == null)
139
- {
140
- throw new ArgumentException(
141
- $"Type {listType} does not have a constructor accepting an int."
142
- );
143
- }
144
-
145
- il.Emit(OpCodes.Ldarg_0); // Load capacity argument
146
- il.Emit(OpCodes.Newobj, constructor); // Call List<T>(int capacity) constructor
147
- il.Emit(OpCodes.Ret); // Return the instance
148
- return (Func<int, IList>)dynamicMethod.CreateDelegate(typeof(Func<int, IList>));
149
- #endif
150
- }
151
- }
152
- }
1
+ namespace UnityHelpers.Core.Helper
2
+ {
3
+ using System;
4
+ using System.Collections;
5
+ using System.Collections.Generic;
6
+ using System.Reflection;
7
+ using System.Reflection.Emit;
8
+ using System.Runtime.CompilerServices;
9
+ using Extension;
10
+
11
+ public static class ReflectionHelpers
12
+ {
13
+ private static readonly Dictionary<Type, Func<int, Array>> ArrayCreators = new();
14
+ private static readonly Dictionary<Type, Func<IList>> ListCreators = new();
15
+ private static readonly Dictionary<Type, Func<int, IList>> ListWithCapacityCreators = new();
16
+
17
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
18
+ public static Func<int, Array> GetOrCreateArrayCreator(Type type)
19
+ {
20
+ return ArrayCreators.GetOrAdd(type, elementType => GetArrayCreator(elementType));
21
+ }
22
+
23
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
24
+ public static Array CreateArray(Type type, int length)
25
+ {
26
+ return GetOrCreateArrayCreator(type).Invoke(length);
27
+ }
28
+
29
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
30
+ public static IList CreateList(Type elementType, int length)
31
+ {
32
+ return ListWithCapacityCreators
33
+ .GetOrAdd(elementType, type => GetListWithCapacityCreator(type))
34
+ .Invoke(length);
35
+ }
36
+
37
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
38
+ public static IList CreateList(Type elementType)
39
+ {
40
+ return ListCreators.GetOrAdd(elementType, type => GetListCreator(type)).Invoke();
41
+ }
42
+
43
+ public static Action<object, object> CreateFieldSetter(Type type, FieldInfo field)
44
+ {
45
+ #if WEB_GL
46
+ return field.SetValue;
47
+ #else
48
+ DynamicMethod dynamicMethod = new(
49
+ $"SetField{field.Name}",
50
+ null,
51
+ new[] { typeof(object), typeof(object) },
52
+ type.Module,
53
+ true
54
+ );
55
+
56
+ ILGenerator il = dynamicMethod.GetILGenerator();
57
+
58
+ il.Emit(OpCodes.Ldarg_0); // Load the object (arg0)
59
+ il.Emit(OpCodes.Castclass, type); // Cast to the actual type
60
+
61
+ il.Emit(OpCodes.Ldarg_1); // Load the value (arg1)
62
+ il.Emit(
63
+ field.FieldType.IsValueType ? OpCodes.Unbox_Any : OpCodes.Castclass,
64
+ field.FieldType
65
+ ); // Cast for reference types
66
+ // Unbox if it's a value type
67
+ il.Emit(OpCodes.Stfld, field); // Set the field
68
+ il.Emit(OpCodes.Ret); // Return
69
+ return (Action<object, object>)
70
+ dynamicMethod.CreateDelegate(typeof(Action<object, object>));
71
+ #endif
72
+ }
73
+
74
+ public static Func<int, Array> GetArrayCreator(Type elementType)
75
+ {
76
+ #if WEB_GL
77
+ return size => Array.CreateInstance(elementType, size);
78
+ #else
79
+
80
+ DynamicMethod dynamicMethod = new DynamicMethod(
81
+ $"CreateArray{elementType.Namespace}",
82
+ typeof(Array), // Return type: Array
83
+ new[] { typeof(int) }, // Parameter: int (size)
84
+ true
85
+ );
86
+
87
+ ILGenerator il = dynamicMethod.GetILGenerator();
88
+ il.Emit(OpCodes.Ldarg_0); // Load the array size
89
+ il.Emit(OpCodes.Newarr, elementType); // Create a new array of 'type'
90
+ il.Emit(OpCodes.Ret); // Return the array
91
+ return (Func<int, Array>)dynamicMethod.CreateDelegate(typeof(Func<int, Array>));
92
+ #endif
93
+ }
94
+
95
+ public static Func<IList> GetListCreator(Type elementType)
96
+ {
97
+ Type listType = typeof(List<>).MakeGenericType(elementType);
98
+ #if WEB_GL
99
+ return () => (IList)Activator.CreateInstance(listType);
100
+ #else
101
+ DynamicMethod dynamicMethod = new DynamicMethod(
102
+ $"CreateList{listType.Name}",
103
+ typeof(IList), // Return type: IList
104
+ Type.EmptyTypes, // No parameters
105
+ true
106
+ );
107
+
108
+ ILGenerator il = dynamicMethod.GetILGenerator();
109
+ ConstructorInfo constructor = listType.GetConstructor(Type.EmptyTypes);
110
+ if (constructor == null)
111
+ {
112
+ throw new ArgumentException(
113
+ $"Type {listType} does not have a parameterless constructor."
114
+ );
115
+ }
116
+
117
+ il.Emit(OpCodes.Newobj, constructor); // Call List<T> constructor
118
+ il.Emit(OpCodes.Ret); // Return the instance
119
+ return (Func<IList>)dynamicMethod.CreateDelegate(typeof(Func<IList>));
120
+ #endif
121
+ }
122
+
123
+ public static Func<int, IList> GetListWithCapacityCreator(Type elementType)
124
+ {
125
+ Type listType = typeof(List<>).MakeGenericType(elementType);
126
+ #if WEB_GL
127
+ return _ => (IList)Activator.CreateInstance(listType);
128
+ #else
129
+ DynamicMethod dynamicMethod = new DynamicMethod(
130
+ $"CreateListWithCapacity{listType.Name}",
131
+ typeof(IList), // Return type: IList
132
+ new[] { typeof(int) }, // Parameter: int (size)
133
+ true
134
+ );
135
+
136
+ ILGenerator il = dynamicMethod.GetILGenerator();
137
+ ConstructorInfo constructor = listType.GetConstructor(new[] { typeof(int) });
138
+ if (constructor == null)
139
+ {
140
+ throw new ArgumentException(
141
+ $"Type {listType} does not have a constructor accepting an int."
142
+ );
143
+ }
144
+
145
+ il.Emit(OpCodes.Ldarg_0); // Load capacity argument
146
+ il.Emit(OpCodes.Newobj, constructor); // Call List<T>(int capacity) constructor
147
+ il.Emit(OpCodes.Ret); // Return the instance
148
+ return (Func<int, IList>)dynamicMethod.CreateDelegate(typeof(Func<int, IList>));
149
+ #endif
150
+ }
151
+ }
152
+ }
@@ -1,3 +1,3 @@
1
- fileFormatVersion: 2
2
- guid: 7d4e9b4eb4764c7881cc89a54582ec35
1
+ fileFormatVersion: 2
2
+ guid: 7d4e9b4eb4764c7881cc89a54582ec35
3
3
  timeCreated: 1742066830