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,402 +1,402 @@
1
- namespace UnityHelpers.Tests.Tests.Runtime.Helper
2
- {
3
- using System.Collections;
4
- using Core.Helper;
5
- using JetBrains.Annotations;
6
- using NUnit.Framework;
7
- using UnityEngine;
8
- using UnityEngine.TestTools;
9
-
10
- [UsedImplicitly]
11
- public sealed class ObjectHelperComponent : MonoBehaviour { }
12
-
13
- public sealed class ObjectHelperTests
14
- {
15
- [UnityTest]
16
- public IEnumerator HasComponent()
17
- {
18
- GameObject go = new("Test SpriteRenderer", typeof(SpriteRenderer));
19
- SpriteRenderer spriteRenderer = go.GetComponent<SpriteRenderer>();
20
-
21
- Assert.IsTrue(go.HasComponent(typeof(SpriteRenderer)));
22
- Assert.IsTrue(go.HasComponent<SpriteRenderer>());
23
- Assert.IsTrue(spriteRenderer.HasComponent<SpriteRenderer>());
24
- Assert.IsTrue(spriteRenderer.HasComponent(typeof(SpriteRenderer)));
25
-
26
- Assert.IsFalse(go.HasComponent<LineRenderer>());
27
- Assert.IsFalse(go.HasComponent(typeof(LineRenderer)));
28
- Assert.IsFalse(spriteRenderer.HasComponent<LineRenderer>());
29
- Assert.IsFalse(spriteRenderer.HasComponent(typeof(LineRenderer)));
30
-
31
- Object obj = go;
32
- Assert.IsTrue(obj.HasComponent<SpriteRenderer>());
33
- Assert.IsTrue(obj.HasComponent(typeof(SpriteRenderer)));
34
- Assert.IsFalse(obj.HasComponent<LineRenderer>());
35
- Assert.IsFalse(obj.HasComponent(typeof(LineRenderer)));
36
-
37
- yield break;
38
- }
39
-
40
- [UnityTest]
41
- public IEnumerator EnableRendererRecursively()
42
- {
43
- GameObject one = New("1");
44
- GameObject two = New("2");
45
- two.transform.SetParent(one.transform);
46
- GameObject three = New("3");
47
- three.transform.SetParent(two.transform);
48
- GameObject four = New("4");
49
- four.transform.SetParent(three.transform);
50
-
51
- // Act
52
- two.transform.EnableRendererRecursively<SpriteRenderer>(false);
53
- Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
54
- Assert.IsFalse(two.GetComponent<SpriteRenderer>().enabled);
55
- Assert.IsFalse(three.GetComponent<SpriteRenderer>().enabled);
56
- Assert.IsFalse(four.GetComponent<SpriteRenderer>().enabled);
57
-
58
- Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
59
- Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
60
- Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
61
- Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
62
-
63
- // Act
64
- three.transform.EnableRendererRecursively<SpriteRenderer>(true);
65
-
66
- Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
67
- Assert.IsFalse(two.GetComponent<SpriteRenderer>().enabled);
68
- Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
69
- Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
70
-
71
- Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
72
- Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
73
- Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
74
- Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
75
-
76
- // Act
77
- one.transform.EnableRendererRecursively<SpriteRenderer>(true);
78
-
79
- Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
80
- Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
81
- Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
82
- Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
83
-
84
- Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
85
- Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
86
- Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
87
- Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
88
-
89
- // Act
90
- two.transform.EnableRendererRecursively<SpriteRenderer>(
91
- false,
92
- renderer => renderer.gameObject == three
93
- );
94
-
95
- Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
96
- Assert.IsFalse(two.GetComponent<SpriteRenderer>().enabled);
97
- Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
98
- Assert.IsFalse(four.GetComponent<SpriteRenderer>().enabled);
99
-
100
- Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
101
- Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
102
- Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
103
- Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
104
-
105
- // Act
106
- one.transform.EnableRendererRecursively<SpriteRenderer>(
107
- true,
108
- renderer => renderer.gameObject == four
109
- );
110
-
111
- Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
112
- Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
113
- Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
114
- Assert.IsFalse(four.GetComponent<SpriteRenderer>().enabled);
115
-
116
- Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
117
- Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
118
- Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
119
- Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
120
-
121
- yield break;
122
-
123
- GameObject New(string name)
124
- {
125
- return new GameObject(name, typeof(SpriteRenderer), typeof(CircleCollider2D));
126
- }
127
- }
128
-
129
- [UnityTest]
130
- public IEnumerator EnableRecursively()
131
- {
132
- GameObject one = New("1");
133
- GameObject two = New("2");
134
- two.transform.SetParent(one.transform);
135
- GameObject three = New("3");
136
- three.transform.SetParent(two.transform);
137
- GameObject four = New("4");
138
- four.transform.SetParent(three.transform);
139
-
140
- // Act
141
- two.transform.EnableRecursively<CircleCollider2D>(false);
142
- Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
143
- Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
144
- Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
145
- Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
146
-
147
- Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
148
- Assert.IsFalse(two.GetComponent<CircleCollider2D>().enabled);
149
- Assert.IsFalse(three.GetComponent<CircleCollider2D>().enabled);
150
- Assert.IsFalse(four.GetComponent<CircleCollider2D>().enabled);
151
-
152
- // Act
153
- three.transform.EnableRecursively<CircleCollider2D>(true);
154
-
155
- Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
156
- Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
157
- Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
158
- Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
159
-
160
- Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
161
- Assert.IsFalse(two.GetComponent<CircleCollider2D>().enabled);
162
- Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
163
- Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
164
-
165
- // Act
166
- one.transform.EnableRecursively<CircleCollider2D>(true);
167
-
168
- Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
169
- Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
170
- Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
171
- Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
172
-
173
- Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
174
- Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
175
- Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
176
- Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
177
-
178
- // Act
179
- two.transform.EnableRecursively<CircleCollider2D>(
180
- false,
181
- collider => collider.gameObject == three
182
- );
183
-
184
- Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
185
- Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
186
- Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
187
- Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
188
-
189
- Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
190
- Assert.IsFalse(two.GetComponent<CircleCollider2D>().enabled);
191
- Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
192
- Assert.IsFalse(four.GetComponent<CircleCollider2D>().enabled);
193
-
194
- // Act
195
- one.transform.EnableRecursively<CircleCollider2D>(
196
- true,
197
- collider => collider.gameObject == four
198
- );
199
-
200
- Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
201
- Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
202
- Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
203
- Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
204
-
205
- Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
206
- Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
207
- Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
208
- Assert.IsFalse(four.GetComponent<CircleCollider2D>().enabled);
209
-
210
- yield break;
211
-
212
- GameObject New(string name)
213
- {
214
- return new GameObject(name, typeof(SpriteRenderer), typeof(CircleCollider2D));
215
- }
216
- }
217
-
218
- [UnityTest]
219
- public IEnumerator DestroyAllChildGameObjects()
220
- {
221
- GameObject one = new("1");
222
- GameObject two = new("2");
223
- two.transform.SetParent(one.transform);
224
- GameObject three = new("3");
225
- three.transform.SetParent(two.transform);
226
- GameObject four = new("4");
227
- four.transform.SetParent(three.transform);
228
-
229
- // Act
230
- two.DestroyAllChildrenGameObjects();
231
- yield return null;
232
-
233
- Assert.IsTrue(one != null);
234
- Assert.IsTrue(two != null);
235
- Assert.IsTrue(three == null);
236
- Assert.IsTrue(four == null);
237
-
238
- three = new GameObject("3");
239
- three.transform.SetParent(two.transform);
240
- four = new GameObject("4");
241
- four.transform.SetParent(three.transform);
242
-
243
- // Act
244
- one.DestroyAllChildrenGameObjects();
245
- yield return null;
246
-
247
- Assert.IsTrue(one != null);
248
- Assert.IsTrue(two == null);
249
- Assert.IsTrue(three == null);
250
- Assert.IsTrue(four == null);
251
- }
252
-
253
- [UnityTest]
254
- public IEnumerator DestroyAllComponentsOfType()
255
- {
256
- GameObject one = New("1");
257
- Assert.AreEqual(4, one.GetComponents<ObjectHelperComponent>().Length);
258
-
259
- GameObject two = New("2");
260
- two.transform.SetParent(one.transform);
261
-
262
- one.DestroyAllComponentsOfType<ObjectHelperComponent>();
263
- yield return null;
264
- Assert.AreEqual(0, one.GetComponents<ObjectHelperComponent>().Length);
265
- Assert.IsTrue(one.GetComponent<SpriteRenderer>() != null);
266
- Assert.AreEqual(4, two.GetComponents<ObjectHelperComponent>().Length);
267
-
268
- two.DestroyAllComponentsOfType<ObjectHelperComponent>();
269
- yield return null;
270
- Assert.AreEqual(0, one.GetComponents<ObjectHelperComponent>().Length);
271
- Assert.IsTrue(one.GetComponent<SpriteRenderer>() != null);
272
- Assert.AreEqual(0, two.GetComponents<ObjectHelperComponent>().Length);
273
- Assert.IsTrue(two.GetComponent<SpriteRenderer>() != null);
274
-
275
- GameObject New(string name)
276
- {
277
- return new GameObject(
278
- name,
279
- typeof(SpriteRenderer),
280
- typeof(ObjectHelperComponent),
281
- typeof(ObjectHelperComponent),
282
- typeof(ObjectHelperComponent),
283
- typeof(ObjectHelperComponent)
284
- );
285
- }
286
- }
287
-
288
- [UnityTest]
289
- public IEnumerator SmartDestroy()
290
- {
291
- GameObject one = new("1");
292
-
293
- one.SmartDestroy();
294
- yield return null;
295
- Assert.IsTrue(one == null);
296
-
297
- GameObject two = new("2");
298
- two.SmartDestroy(1.5f);
299
- yield return null;
300
- Assert.IsTrue(two != null);
301
- yield return new WaitForSeconds(1.6f);
302
-
303
- Assert.IsTrue(two == null);
304
- }
305
-
306
- [UnityTest]
307
- public IEnumerator DestroyAllChildrenGameObjectsImmediatelyConditionally()
308
- {
309
- GameObject one = new("1");
310
- GameObject two = new("2");
311
- two.transform.SetParent(one.transform);
312
- GameObject three = new("3");
313
- three.transform.SetParent(two.transform);
314
- GameObject four = new("4");
315
- four.transform.SetParent(two.transform);
316
-
317
- two.DestroyAllChildrenGameObjectsImmediatelyConditionally(go => go == four);
318
- Assert.IsTrue(one != null);
319
- Assert.IsTrue(two != null);
320
- Assert.IsTrue(three != null);
321
- Assert.IsTrue(four == null);
322
-
323
- one.DestroyAllChildrenGameObjectsImmediatelyConditionally(go => go != two);
324
- Assert.IsTrue(one != null);
325
- Assert.IsTrue(two != null);
326
- Assert.IsTrue(three != null);
327
- Assert.IsTrue(four == null);
328
-
329
- one.DestroyAllChildrenGameObjectsImmediatelyConditionally(go => go == two);
330
- Assert.IsTrue(one != null);
331
- Assert.IsTrue(two == null);
332
- Assert.IsTrue(three == null);
333
- Assert.IsTrue(four == null);
334
-
335
- yield break;
336
- }
337
-
338
- [UnityTest]
339
- public IEnumerator DestroyAllChildGameObjectsConditionally()
340
- {
341
- GameObject one = new("1");
342
- GameObject two = new("2");
343
- two.transform.SetParent(one.transform);
344
- GameObject three = new("3");
345
- three.transform.SetParent(two.transform);
346
- GameObject four = new("4");
347
- four.transform.SetParent(two.transform);
348
-
349
- two.DestroyAllChildGameObjectsConditionally(go => go == four);
350
- yield return null;
351
- Assert.IsTrue(one != null);
352
- Assert.IsTrue(two != null);
353
- Assert.IsTrue(three != null);
354
- Assert.IsTrue(four == null);
355
-
356
- one.DestroyAllChildGameObjectsConditionally(go => go != two);
357
- yield return null;
358
- Assert.IsTrue(one != null);
359
- Assert.IsTrue(two != null);
360
- Assert.IsTrue(three != null);
361
- Assert.IsTrue(four == null);
362
-
363
- one.DestroyAllChildGameObjectsConditionally(go => go == two);
364
- yield return null;
365
- Assert.IsTrue(one != null);
366
- Assert.IsTrue(two == null);
367
- Assert.IsTrue(three == null);
368
- Assert.IsTrue(four == null);
369
- }
370
-
371
- [UnityTest]
372
- public IEnumerator DestroyAllChildrenGameObjectsImmediately()
373
- {
374
- GameObject one = new("1");
375
- GameObject two = new("2");
376
- two.transform.SetParent(one.transform);
377
- GameObject three = new("3");
378
- three.transform.SetParent(two.transform);
379
- GameObject four = new("4");
380
- four.transform.SetParent(two.transform);
381
-
382
- two.DestroyAllChildrenGameObjectsImmediately();
383
- Assert.IsTrue(one != null);
384
- Assert.IsTrue(two != null);
385
- Assert.IsTrue(three == null);
386
- Assert.IsTrue(four == null);
387
-
388
- three = new GameObject("3");
389
- three.transform.SetParent(two.transform);
390
- four = new("4");
391
- four.transform.SetParent(two.transform);
392
-
393
- one.DestroyAllChildrenGameObjectsImmediately();
394
- Assert.IsTrue(one != null);
395
- Assert.IsTrue(two == null);
396
- Assert.IsTrue(three == null);
397
- Assert.IsTrue(four == null);
398
-
399
- yield break;
400
- }
401
- }
402
- }
1
+ namespace UnityHelpers.Tests.Tests.Runtime.Helper
2
+ {
3
+ using System.Collections;
4
+ using Core.Helper;
5
+ using JetBrains.Annotations;
6
+ using NUnit.Framework;
7
+ using UnityEngine;
8
+ using UnityEngine.TestTools;
9
+
10
+ [UsedImplicitly]
11
+ public sealed class ObjectHelperComponent : MonoBehaviour { }
12
+
13
+ public sealed class ObjectHelperTests
14
+ {
15
+ [UnityTest]
16
+ public IEnumerator HasComponent()
17
+ {
18
+ GameObject go = new("Test SpriteRenderer", typeof(SpriteRenderer));
19
+ SpriteRenderer spriteRenderer = go.GetComponent<SpriteRenderer>();
20
+
21
+ Assert.IsTrue(go.HasComponent(typeof(SpriteRenderer)));
22
+ Assert.IsTrue(go.HasComponent<SpriteRenderer>());
23
+ Assert.IsTrue(spriteRenderer.HasComponent<SpriteRenderer>());
24
+ Assert.IsTrue(spriteRenderer.HasComponent(typeof(SpriteRenderer)));
25
+
26
+ Assert.IsFalse(go.HasComponent<LineRenderer>());
27
+ Assert.IsFalse(go.HasComponent(typeof(LineRenderer)));
28
+ Assert.IsFalse(spriteRenderer.HasComponent<LineRenderer>());
29
+ Assert.IsFalse(spriteRenderer.HasComponent(typeof(LineRenderer)));
30
+
31
+ Object obj = go;
32
+ Assert.IsTrue(obj.HasComponent<SpriteRenderer>());
33
+ Assert.IsTrue(obj.HasComponent(typeof(SpriteRenderer)));
34
+ Assert.IsFalse(obj.HasComponent<LineRenderer>());
35
+ Assert.IsFalse(obj.HasComponent(typeof(LineRenderer)));
36
+
37
+ yield break;
38
+ }
39
+
40
+ [UnityTest]
41
+ public IEnumerator EnableRendererRecursively()
42
+ {
43
+ GameObject one = New("1");
44
+ GameObject two = New("2");
45
+ two.transform.SetParent(one.transform);
46
+ GameObject three = New("3");
47
+ three.transform.SetParent(two.transform);
48
+ GameObject four = New("4");
49
+ four.transform.SetParent(three.transform);
50
+
51
+ // Act
52
+ two.transform.EnableRendererRecursively<SpriteRenderer>(false);
53
+ Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
54
+ Assert.IsFalse(two.GetComponent<SpriteRenderer>().enabled);
55
+ Assert.IsFalse(three.GetComponent<SpriteRenderer>().enabled);
56
+ Assert.IsFalse(four.GetComponent<SpriteRenderer>().enabled);
57
+
58
+ Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
59
+ Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
60
+ Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
61
+ Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
62
+
63
+ // Act
64
+ three.transform.EnableRendererRecursively<SpriteRenderer>(true);
65
+
66
+ Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
67
+ Assert.IsFalse(two.GetComponent<SpriteRenderer>().enabled);
68
+ Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
69
+ Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
70
+
71
+ Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
72
+ Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
73
+ Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
74
+ Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
75
+
76
+ // Act
77
+ one.transform.EnableRendererRecursively<SpriteRenderer>(true);
78
+
79
+ Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
80
+ Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
81
+ Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
82
+ Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
83
+
84
+ Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
85
+ Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
86
+ Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
87
+ Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
88
+
89
+ // Act
90
+ two.transform.EnableRendererRecursively<SpriteRenderer>(
91
+ false,
92
+ renderer => renderer.gameObject == three
93
+ );
94
+
95
+ Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
96
+ Assert.IsFalse(two.GetComponent<SpriteRenderer>().enabled);
97
+ Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
98
+ Assert.IsFalse(four.GetComponent<SpriteRenderer>().enabled);
99
+
100
+ Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
101
+ Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
102
+ Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
103
+ Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
104
+
105
+ // Act
106
+ one.transform.EnableRendererRecursively<SpriteRenderer>(
107
+ true,
108
+ renderer => renderer.gameObject == four
109
+ );
110
+
111
+ Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
112
+ Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
113
+ Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
114
+ Assert.IsFalse(four.GetComponent<SpriteRenderer>().enabled);
115
+
116
+ Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
117
+ Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
118
+ Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
119
+ Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
120
+
121
+ yield break;
122
+
123
+ GameObject New(string name)
124
+ {
125
+ return new GameObject(name, typeof(SpriteRenderer), typeof(CircleCollider2D));
126
+ }
127
+ }
128
+
129
+ [UnityTest]
130
+ public IEnumerator EnableRecursively()
131
+ {
132
+ GameObject one = New("1");
133
+ GameObject two = New("2");
134
+ two.transform.SetParent(one.transform);
135
+ GameObject three = New("3");
136
+ three.transform.SetParent(two.transform);
137
+ GameObject four = New("4");
138
+ four.transform.SetParent(three.transform);
139
+
140
+ // Act
141
+ two.transform.EnableRecursively<CircleCollider2D>(false);
142
+ Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
143
+ Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
144
+ Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
145
+ Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
146
+
147
+ Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
148
+ Assert.IsFalse(two.GetComponent<CircleCollider2D>().enabled);
149
+ Assert.IsFalse(three.GetComponent<CircleCollider2D>().enabled);
150
+ Assert.IsFalse(four.GetComponent<CircleCollider2D>().enabled);
151
+
152
+ // Act
153
+ three.transform.EnableRecursively<CircleCollider2D>(true);
154
+
155
+ Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
156
+ Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
157
+ Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
158
+ Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
159
+
160
+ Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
161
+ Assert.IsFalse(two.GetComponent<CircleCollider2D>().enabled);
162
+ Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
163
+ Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
164
+
165
+ // Act
166
+ one.transform.EnableRecursively<CircleCollider2D>(true);
167
+
168
+ Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
169
+ Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
170
+ Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
171
+ Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
172
+
173
+ Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
174
+ Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
175
+ Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
176
+ Assert.IsTrue(four.GetComponent<CircleCollider2D>().enabled);
177
+
178
+ // Act
179
+ two.transform.EnableRecursively<CircleCollider2D>(
180
+ false,
181
+ collider => collider.gameObject == three
182
+ );
183
+
184
+ Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
185
+ Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
186
+ Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
187
+ Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
188
+
189
+ Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
190
+ Assert.IsFalse(two.GetComponent<CircleCollider2D>().enabled);
191
+ Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
192
+ Assert.IsFalse(four.GetComponent<CircleCollider2D>().enabled);
193
+
194
+ // Act
195
+ one.transform.EnableRecursively<CircleCollider2D>(
196
+ true,
197
+ collider => collider.gameObject == four
198
+ );
199
+
200
+ Assert.IsTrue(one.GetComponent<SpriteRenderer>().enabled);
201
+ Assert.IsTrue(two.GetComponent<SpriteRenderer>().enabled);
202
+ Assert.IsTrue(three.GetComponent<SpriteRenderer>().enabled);
203
+ Assert.IsTrue(four.GetComponent<SpriteRenderer>().enabled);
204
+
205
+ Assert.IsTrue(one.GetComponent<CircleCollider2D>().enabled);
206
+ Assert.IsTrue(two.GetComponent<CircleCollider2D>().enabled);
207
+ Assert.IsTrue(three.GetComponent<CircleCollider2D>().enabled);
208
+ Assert.IsFalse(four.GetComponent<CircleCollider2D>().enabled);
209
+
210
+ yield break;
211
+
212
+ GameObject New(string name)
213
+ {
214
+ return new GameObject(name, typeof(SpriteRenderer), typeof(CircleCollider2D));
215
+ }
216
+ }
217
+
218
+ [UnityTest]
219
+ public IEnumerator DestroyAllChildGameObjects()
220
+ {
221
+ GameObject one = new("1");
222
+ GameObject two = new("2");
223
+ two.transform.SetParent(one.transform);
224
+ GameObject three = new("3");
225
+ three.transform.SetParent(two.transform);
226
+ GameObject four = new("4");
227
+ four.transform.SetParent(three.transform);
228
+
229
+ // Act
230
+ two.DestroyAllChildrenGameObjects();
231
+ yield return null;
232
+
233
+ Assert.IsTrue(one != null);
234
+ Assert.IsTrue(two != null);
235
+ Assert.IsTrue(three == null);
236
+ Assert.IsTrue(four == null);
237
+
238
+ three = new GameObject("3");
239
+ three.transform.SetParent(two.transform);
240
+ four = new GameObject("4");
241
+ four.transform.SetParent(three.transform);
242
+
243
+ // Act
244
+ one.DestroyAllChildrenGameObjects();
245
+ yield return null;
246
+
247
+ Assert.IsTrue(one != null);
248
+ Assert.IsTrue(two == null);
249
+ Assert.IsTrue(three == null);
250
+ Assert.IsTrue(four == null);
251
+ }
252
+
253
+ [UnityTest]
254
+ public IEnumerator DestroyAllComponentsOfType()
255
+ {
256
+ GameObject one = New("1");
257
+ Assert.AreEqual(4, one.GetComponents<ObjectHelperComponent>().Length);
258
+
259
+ GameObject two = New("2");
260
+ two.transform.SetParent(one.transform);
261
+
262
+ one.DestroyAllComponentsOfType<ObjectHelperComponent>();
263
+ yield return null;
264
+ Assert.AreEqual(0, one.GetComponents<ObjectHelperComponent>().Length);
265
+ Assert.IsTrue(one.GetComponent<SpriteRenderer>() != null);
266
+ Assert.AreEqual(4, two.GetComponents<ObjectHelperComponent>().Length);
267
+
268
+ two.DestroyAllComponentsOfType<ObjectHelperComponent>();
269
+ yield return null;
270
+ Assert.AreEqual(0, one.GetComponents<ObjectHelperComponent>().Length);
271
+ Assert.IsTrue(one.GetComponent<SpriteRenderer>() != null);
272
+ Assert.AreEqual(0, two.GetComponents<ObjectHelperComponent>().Length);
273
+ Assert.IsTrue(two.GetComponent<SpriteRenderer>() != null);
274
+
275
+ GameObject New(string name)
276
+ {
277
+ return new GameObject(
278
+ name,
279
+ typeof(SpriteRenderer),
280
+ typeof(ObjectHelperComponent),
281
+ typeof(ObjectHelperComponent),
282
+ typeof(ObjectHelperComponent),
283
+ typeof(ObjectHelperComponent)
284
+ );
285
+ }
286
+ }
287
+
288
+ [UnityTest]
289
+ public IEnumerator SmartDestroy()
290
+ {
291
+ GameObject one = new("1");
292
+
293
+ one.SmartDestroy();
294
+ yield return null;
295
+ Assert.IsTrue(one == null);
296
+
297
+ GameObject two = new("2");
298
+ two.SmartDestroy(1.5f);
299
+ yield return null;
300
+ Assert.IsTrue(two != null);
301
+ yield return new WaitForSeconds(1.6f);
302
+
303
+ Assert.IsTrue(two == null);
304
+ }
305
+
306
+ [UnityTest]
307
+ public IEnumerator DestroyAllChildrenGameObjectsImmediatelyConditionally()
308
+ {
309
+ GameObject one = new("1");
310
+ GameObject two = new("2");
311
+ two.transform.SetParent(one.transform);
312
+ GameObject three = new("3");
313
+ three.transform.SetParent(two.transform);
314
+ GameObject four = new("4");
315
+ four.transform.SetParent(two.transform);
316
+
317
+ two.DestroyAllChildrenGameObjectsImmediatelyConditionally(go => go == four);
318
+ Assert.IsTrue(one != null);
319
+ Assert.IsTrue(two != null);
320
+ Assert.IsTrue(three != null);
321
+ Assert.IsTrue(four == null);
322
+
323
+ one.DestroyAllChildrenGameObjectsImmediatelyConditionally(go => go != two);
324
+ Assert.IsTrue(one != null);
325
+ Assert.IsTrue(two != null);
326
+ Assert.IsTrue(three != null);
327
+ Assert.IsTrue(four == null);
328
+
329
+ one.DestroyAllChildrenGameObjectsImmediatelyConditionally(go => go == two);
330
+ Assert.IsTrue(one != null);
331
+ Assert.IsTrue(two == null);
332
+ Assert.IsTrue(three == null);
333
+ Assert.IsTrue(four == null);
334
+
335
+ yield break;
336
+ }
337
+
338
+ [UnityTest]
339
+ public IEnumerator DestroyAllChildGameObjectsConditionally()
340
+ {
341
+ GameObject one = new("1");
342
+ GameObject two = new("2");
343
+ two.transform.SetParent(one.transform);
344
+ GameObject three = new("3");
345
+ three.transform.SetParent(two.transform);
346
+ GameObject four = new("4");
347
+ four.transform.SetParent(two.transform);
348
+
349
+ two.DestroyAllChildGameObjectsConditionally(go => go == four);
350
+ yield return null;
351
+ Assert.IsTrue(one != null);
352
+ Assert.IsTrue(two != null);
353
+ Assert.IsTrue(three != null);
354
+ Assert.IsTrue(four == null);
355
+
356
+ one.DestroyAllChildGameObjectsConditionally(go => go != two);
357
+ yield return null;
358
+ Assert.IsTrue(one != null);
359
+ Assert.IsTrue(two != null);
360
+ Assert.IsTrue(three != null);
361
+ Assert.IsTrue(four == null);
362
+
363
+ one.DestroyAllChildGameObjectsConditionally(go => go == two);
364
+ yield return null;
365
+ Assert.IsTrue(one != null);
366
+ Assert.IsTrue(two == null);
367
+ Assert.IsTrue(three == null);
368
+ Assert.IsTrue(four == null);
369
+ }
370
+
371
+ [UnityTest]
372
+ public IEnumerator DestroyAllChildrenGameObjectsImmediately()
373
+ {
374
+ GameObject one = new("1");
375
+ GameObject two = new("2");
376
+ two.transform.SetParent(one.transform);
377
+ GameObject three = new("3");
378
+ three.transform.SetParent(two.transform);
379
+ GameObject four = new("4");
380
+ four.transform.SetParent(two.transform);
381
+
382
+ two.DestroyAllChildrenGameObjectsImmediately();
383
+ Assert.IsTrue(one != null);
384
+ Assert.IsTrue(two != null);
385
+ Assert.IsTrue(three == null);
386
+ Assert.IsTrue(four == null);
387
+
388
+ three = new GameObject("3");
389
+ three.transform.SetParent(two.transform);
390
+ four = new("4");
391
+ four.transform.SetParent(two.transform);
392
+
393
+ one.DestroyAllChildrenGameObjectsImmediately();
394
+ Assert.IsTrue(one != null);
395
+ Assert.IsTrue(two == null);
396
+ Assert.IsTrue(three == null);
397
+ Assert.IsTrue(four == null);
398
+
399
+ yield break;
400
+ }
401
+ }
402
+ }