com.wallstop-studios.unity-helpers 2.0.0-rc26 → 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.
- package/.gitattributes +63 -63
- package/.github/workflows/npm-publish.yml +60 -0
- package/.github/workflows/unity-package.yml +87 -0
- package/Editor/AnimationCopier.cs +158 -158
- package/Editor/AnimationCopier.cs.meta +2 -2
- package/Editor/AnimationCreator.cs +262 -262
- package/Editor/AnimationCreator.cs.meta +11 -11
- package/Editor/AnimationEventEditor.cs +887 -887
- package/Editor/AnimatorControllerCopier.cs +162 -162
- package/Editor/AnimatorControllerCopier.cs.meta +2 -2
- package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs +34 -34
- package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs.meta +2 -2
- package/Editor/CustomEditors.meta +2 -2
- package/Editor/EnsureTextureSizeWizard.cs +110 -110
- package/Editor/EnsureTextureSizeWizard.cs.meta +2 -2
- package/Editor/PrefabCheckWizard.cs +165 -165
- package/Editor/PrefabCheckWizard.cs.meta +11 -11
- package/Editor/SpriteSettingsApplier.cs +168 -168
- package/Editor/SpriteSettingsApplier.cs.meta +2 -2
- package/Editor/StringInListeDrawer.cs +56 -56
- package/Editor/TextureResizerWizard.cs +181 -181
- package/Editor/TextureResizerWizard.cs.meta +2 -2
- package/Editor/TextureSettingsApplier.cs +171 -171
- package/Editor/TextureSettingsApplier.cs.meta +2 -2
- package/Editor/Utils/EditorUtilities.cs +22 -22
- package/Editor/Utils/EditorUtilities.cs.meta +11 -11
- package/Editor/Utils/ReadOnlyPropertyDrawer.cs +26 -26
- package/Editor/Utils/ReadOnlyPropertyDrawer.cs.meta +11 -11
- package/Editor/Utils.meta +8 -8
- package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef +17 -17
- package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef.meta +7 -7
- package/LICENSE +21 -21
- package/LICENSE.md +6 -6
- package/LICENSE.meta +7 -7
- package/README.md +117 -99
- package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll.meta +33 -33
- package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml +223 -223
- package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml.meta +7 -7
- package/Runtime/Binaries/System.Text.Encodings.Web.dll.meta +33 -33
- package/Runtime/Binaries/System.Text.Encodings.Web.xml +935 -935
- package/Runtime/Binaries/System.Text.Encodings.Web.xml.meta +7 -7
- package/Runtime/Binaries/System.Text.Json.dll.meta +33 -33
- package/Runtime/Binaries/System.Text.Json.xml +4829 -4829
- package/Runtime/Binaries/System.Text.Json.xml.meta +7 -7
- package/Runtime/Binaries.meta +8 -8
- package/Runtime/Core/Attributes/AnimationEventAttribute.cs +131 -131
- package/Runtime/Core/Attributes/ChildComponentAttribute.cs +189 -183
- package/Runtime/Core/Attributes/KSerializableAttribute.cs +19 -19
- package/Runtime/Core/Attributes/NotNullAttribute.cs +32 -32
- package/Runtime/Core/Attributes/ParentComponent.cs +184 -178
- package/Runtime/Core/Attributes/ReadOnlyAttribute.cs +6 -6
- package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +14 -14
- package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +119 -111
- package/Runtime/Core/Attributes/SiblingComponentAttribute.cs.meta +11 -11
- package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs +101 -101
- package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs.meta +11 -11
- package/Runtime/Core/Attributes.meta +8 -8
- package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs +92 -92
- package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs +185 -185
- package/Runtime/Core/DataStructure/Adapters/KGuid.cs +305 -305
- package/Runtime/Core/DataStructure/Adapters/KVector2.cs +80 -80
- package/Runtime/Core/DataStructure/Circle.cs +50 -50
- package/Runtime/Core/DataStructure/CyclicBuffer.cs +155 -155
- package/Runtime/Core/DataStructure/ISpatialTree.cs +60 -60
- package/Runtime/Core/DataStructure/ISpatialTree.cs.meta +11 -11
- package/Runtime/Core/DataStructure/KDTree.cs +290 -290
- package/Runtime/Core/DataStructure/KDTree.cs.meta +11 -11
- package/Runtime/Core/DataStructure/QuadTree.cs +279 -279
- package/Runtime/Core/DataStructure/RTree.cs +336 -336
- package/Runtime/Core/DataStructure/RTree.cs.meta +11 -11
- package/Runtime/Core/DataStructure/StringWrapper.cs +91 -91
- package/Runtime/Core/DataStructure/TimedCache.cs +51 -51
- package/Runtime/Core/Extension/AnimatorExtensions.cs +25 -25
- package/Runtime/Core/Extension/CircleExtensions.cs +25 -25
- package/Runtime/Core/Extension/ColorExtensions.cs +338 -338
- package/Runtime/Core/Extension/DictionaryExtensions.cs +251 -251
- package/Runtime/Core/Extension/DirectionExtensions.cs +213 -213
- package/Runtime/Core/Extension/HashSetExtensions.cs +12 -12
- package/Runtime/Core/Extension/IEnumerableExtensions.cs +122 -122
- package/Runtime/Core/Extension/IListExtensions.cs +89 -89
- package/Runtime/Core/Extension/LoggingExtensions.cs +258 -258
- package/Runtime/Core/Extension/RandomExtensions.cs +109 -109
- package/Runtime/Core/Extension/StringExtensions.cs +151 -151
- package/Runtime/Core/Extension/UnityExtensions.cs +1607 -1607
- package/Runtime/Core/Helper/ArrayConverter.cs +39 -39
- package/Runtime/Core/Helper/ArrayConverter.cs.meta +2 -2
- package/Runtime/Core/Helper/AssignUtilities.cs +14 -14
- package/Runtime/Core/Helper/AssignUtilities.cs.meta +11 -11
- package/Runtime/Core/Helper/Enumerables.cs +17 -17
- package/Runtime/Core/Helper/Geometry.cs +43 -43
- package/Runtime/Core/Helper/Helpers.cs +722 -722
- package/Runtime/Core/Helper/Helpers.cs.meta +11 -11
- package/Runtime/Core/Helper/IterationHelpers.cs +32 -32
- package/Runtime/Core/Helper/IterationHelpers.cs.meta +11 -11
- package/Runtime/Core/Helper/LifetimeHelpers.cs +13 -13
- package/Runtime/Core/Helper/Objects.cs +767 -767
- package/Runtime/Core/Helper/Partials/LogHelpers.cs +13 -13
- package/Runtime/Core/Helper/Partials/LogHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials/MathHelpers.cs +30 -30
- package/Runtime/Core/Helper/Partials/MathHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +388 -388
- package/Runtime/Core/Helper/Partials/ObjectHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials/TransformHelpers.cs +167 -167
- package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials.meta +2 -2
- package/Runtime/Core/Helper/ReflectionHelpers.cs +152 -0
- package/Runtime/Core/Helper/ReflectionHelpers.cs.meta +3 -0
- package/Runtime/Core/Helper/SpriteHelpers.cs +86 -86
- package/Runtime/Core/Helper/SpriteHelpers.cs.meta +11 -11
- package/Runtime/Core/Helper/StringInList.cs +31 -31
- package/Runtime/Core/Helper/StringInList.cs.meta +11 -11
- package/Runtime/Core/Helper/WallMath.cs +166 -166
- package/Runtime/Core/Math/Line.cs +55 -55
- package/Runtime/Core/Math/Parabola.cs +47 -47
- package/Runtime/Core/Math/PointPolygonCheck.cs +36 -36
- package/Runtime/Core/Math/PointPolygonCheck.cs.meta +11 -11
- package/Runtime/Core/Math/Range.cs +92 -92
- package/Runtime/Core/Math/XXHash.cs +310 -310
- package/Runtime/Core/Math/XXHash.cs.meta +11 -11
- package/Runtime/Core/Model/Direction.cs +43 -43
- package/Runtime/Core/OneOf/FastOneOf.cs +152 -152
- package/Runtime/Core/OneOf/None.cs +4 -4
- package/Runtime/Core/Random/AbstractRandom.cs +561 -561
- package/Runtime/Core/Random/DotNetRandom.cs +52 -52
- package/Runtime/Core/Random/DotNetRandom.cs.meta +2 -2
- package/Runtime/Core/Random/IRandom.cs +160 -160
- package/Runtime/Core/Random/NativePcgRandom.cs +97 -97
- package/Runtime/Core/Random/PRNG.cs +7 -7
- package/Runtime/Core/Random/PRNG.cs.meta +2 -2
- package/Runtime/Core/Random/PcgRandom.cs +149 -149
- package/Runtime/Core/Random/PerlinNoise.cs +369 -369
- package/Runtime/Core/Random/PerlinNoise.cs.meta +2 -2
- package/Runtime/Core/Random/RandomState.cs +131 -131
- package/Runtime/Core/Random/RandomUtilities.cs +26 -26
- package/Runtime/Core/Random/RandomUtilities.cs.meta +11 -11
- package/Runtime/Core/Random/RomuDuo.cs +116 -116
- package/Runtime/Core/Random/RomuDuo.cs.meta +2 -2
- package/Runtime/Core/Random/SplitMix64.cs +94 -94
- package/Runtime/Core/Random/SplitMix64.cs.meta +2 -2
- package/Runtime/Core/Random/SquirrelRandom.cs +84 -84
- package/Runtime/Core/Random/SystemRandom.cs +162 -162
- package/Runtime/Core/Random/ThreadLocalRandom.cs +12 -12
- package/Runtime/Core/Random/UnityRandom.cs +57 -57
- package/Runtime/Core/Random/UnityRandom.cs.meta +11 -11
- package/Runtime/Core/Random/WyRandom.cs +121 -121
- package/Runtime/Core/Random/WyRandom.cs.meta +2 -2
- package/Runtime/Core/Random/XorShiftRandom.cs +47 -47
- package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -11
- package/Runtime/Core/Random/XorShiroRandom.cs +117 -117
- package/Runtime/Core/Random/XorShiroRandom.cs.meta +2 -2
- package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +74 -74
- package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +81 -81
- package/Runtime/Core/Serialization/Serializer.cs +184 -184
- package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +107 -107
- package/Runtime/Protobuf-Net/System.Buffers.dll.meta +33 -33
- package/Runtime/Protobuf-Net/System.Collections.Immutable.dll.meta +33 -33
- package/Runtime/Protobuf-Net/System.Collections.Immutable.xml +5379 -5379
- package/Runtime/Protobuf-Net/System.Collections.Immutable.xml.meta +7 -7
- package/Runtime/Protobuf-Net/System.Numerics.Vectors.dll.meta +33 -33
- package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll.meta +33 -33
- package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml +290 -290
- package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml.meta +7 -7
- package/Runtime/Protobuf-Net/protobuf-net.Core.dll.meta +33 -33
- package/Runtime/Protobuf-Net/protobuf-net.dll.meta +33 -33
- package/Runtime/UI/LayeredImage.cs +364 -364
- package/Runtime/UI/LayeredImage.cs.meta +2 -2
- package/Runtime/UI.meta +2 -2
- package/Runtime/Utils/AnimationEventEqualityComparer.cs +161 -161
- package/Runtime/Utils/AnimatorEnumStateMachine.cs +88 -88
- package/Runtime/Utils/Buffers.cs +32 -32
- package/Runtime/Utils/CenterPointOffset.cs +30 -30
- package/Runtime/Utils/CenterPointOffset.cs.meta +2 -2
- package/Runtime/Utils/CircleLineRenderer.cs +134 -134
- package/Runtime/Utils/CoroutineHandler.cs +4 -4
- package/Runtime/Utils/CoroutineHandler.cs.meta +2 -2
- package/Runtime/Utils/MatchColliderToSprite.cs +94 -94
- package/Runtime/Utils/MatchColliderToSprite.cs.meta +2 -2
- package/Runtime/Utils/Oscillator.cs +27 -27
- package/Runtime/Utils/RuntimeSingleton.cs +57 -57
- package/Runtime/Utils/RuntimeSingleton.cs.meta +11 -11
- package/Runtime/Utils/SetTextureImportData.cs +69 -69
- package/Runtime/Utils/SpriteRendererMetadata.cs +312 -312
- package/Runtime/Utils/SpriteRendererMetadata.cs.meta +2 -2
- package/Runtime/Utils/SpriteRendererSyncer.cs +100 -100
- package/Runtime/Utils/SpriteRendererSyncer.cs.meta +2 -2
- package/Runtime/Utils/TextureScale.cs +179 -179
- package/Runtime/Utils/TextureScale.cs.meta +2 -2
- package/Runtime/WallstopStudios.UnityHelpers.asmdef +13 -13
- package/Tests/Runtime/Attributes/ChildComponentTests.cs +81 -81
- package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs +28 -28
- package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs +28 -28
- package/Tests/Runtime/Attributes/ParentComponentTests.cs +68 -68
- package/Tests/Runtime/Components/RelationalComponentTester.cs +34 -0
- package/Tests/Runtime/Components/RelationalComponentTester.cs.meta +3 -0
- package/Tests/Runtime/Components.meta +3 -0
- package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs +14 -14
- package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs.meta +11 -11
- package/Tests/Runtime/DataStructures/CyclicBufferTests.cs +324 -324
- package/Tests/Runtime/DataStructures/QuadTreeTests.cs +14 -14
- package/Tests/Runtime/DataStructures/QuadTreeTests.cs.meta +11 -11
- package/Tests/Runtime/DataStructures/SpatialTreeTests.cs +130 -130
- package/Tests/Runtime/DataStructures/SpatialTreeTests.cs.meta +11 -11
- package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs +14 -14
- package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs.meta +11 -11
- package/Tests/Runtime/DataStructures.meta +8 -8
- package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs +439 -439
- package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs.meta +2 -2
- package/Tests/Runtime/Extensions/IListExtensionTests.cs +76 -76
- package/Tests/Runtime/Extensions/RandomExtensionTests.cs +27 -27
- package/Tests/Runtime/Extensions/RandomExtensionTests.cs.meta +2 -2
- package/Tests/Runtime/Extensions/StringExtensionTests.cs +31 -31
- package/Tests/Runtime/Extensions/StringExtensionTests.cs.meta +2 -2
- package/Tests/Runtime/Extensions.meta +2 -2
- package/Tests/Runtime/Helper/ArrayConverterTests.cs +19 -19
- package/Tests/Runtime/Helper/ArrayConverterTests.cs.meta +2 -2
- package/Tests/Runtime/Helper/ObjectHelperTests.cs +402 -402
- package/Tests/Runtime/Helper/ObjectHelperTests.cs.meta +2 -2
- package/Tests/Runtime/Helper/WallMathTests.cs +233 -233
- package/Tests/Runtime/Helper/WallMathTests.cs.meta +2 -2
- package/Tests/Runtime/Helper.meta +2 -2
- package/Tests/Runtime/Performance/KDTreePerformanceTests.cs +14 -14
- package/Tests/Runtime/Performance/KDTreePerformanceTests.cs.meta +11 -11
- package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs +14 -14
- package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs.meta +11 -11
- package/Tests/Runtime/Performance/RandomPerformanceTests.cs +139 -139
- package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -11
- package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +37 -0
- package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +3 -0
- package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs +154 -154
- package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs.meta +11 -11
- package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs +14 -14
- package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs.meta +11 -11
- package/Tests/Runtime/Performance.meta +8 -8
- package/Tests/Runtime/Random/DotNetRandomTests.cs +9 -9
- package/Tests/Runtime/Random/DotNetRandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random/PcgRandomTests.cs +9 -9
- package/Tests/Runtime/Random/PcgRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/RandomTestBase.cs +787 -787
- package/Tests/Runtime/Random/RandomTestBase.cs.meta +11 -11
- package/Tests/Runtime/Random/RomuDuoRandomTests.cs +9 -9
- package/Tests/Runtime/Random/RomuDuoRandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random/SplitMix64RandomTests.cs +9 -9
- package/Tests/Runtime/Random/SplitMix64RandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random/SquirrelRandomTests.cs +14 -14
- package/Tests/Runtime/Random/SquirrelRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/SystemRandomTests.cs +10 -10
- package/Tests/Runtime/Random/SystemRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/UnityRandomTests.cs +9 -9
- package/Tests/Runtime/Random/UnityRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/WyRandomTests.cs +9 -9
- package/Tests/Runtime/Random/WyRandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random/XorShiftRandomTests.cs +9 -9
- package/Tests/Runtime/Random/XorShiftRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/XorShiroRandomTests.cs +9 -9
- package/Tests/Runtime/Random/XorShiroRandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random.meta +8 -8
- package/Tests/Runtime/Serialization/JsonSerializationTest.cs +84 -84
- package/Tests/Runtime/Serialization/JsonSerializationTest.cs.meta +2 -2
- package/Tests/Runtime/Serialization.meta +2 -2
- package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs +399 -399
- package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs.meta +2 -2
- package/Tests/Runtime/Utils.meta +2 -2
- package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef +22 -22
- package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef.meta +7 -7
- package/Tests/Runtime.meta +8 -8
- 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
|
|
@@ -0,0 +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
|
+
}
|