com.wallstop-studios.unity-helpers 2.0.0-rc56 → 2.0.0-rc58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.config/dotnet-tools.json +9 -9
- package/.editorconfig +184 -184
- package/.gitattributes +63 -63
- package/.github/workflows/npm-publish.yml +66 -66
- package/.pre-commit-config.yaml +21 -21
- package/Editor/AnimationCopier.cs +181 -181
- package/Editor/AnimationCopier.cs.meta +2 -2
- package/Editor/AnimationCreator.cs +253 -253
- 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/FitTextureSizeWizard.cs +147 -147
- package/Editor/FitTextureSizeWizard.cs.meta +2 -2
- package/Editor/PrefabCheckWizard.cs +170 -170
- package/Editor/PrefabCheckWizard.cs.meta +11 -11
- package/Editor/SpriteSettingsApplier.cs +272 -272
- 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 +178 -178
- package/Editor/TextureSettingsApplier.cs.meta +2 -2
- package/Editor/Utils/DxReadOnlyPropertyDrawer.cs +26 -26
- package/Editor/Utils/DxReadOnlyPropertyDrawer.cs.meta +11 -11
- package/Editor/Utils/EditorUtilities.cs +22 -22
- package/Editor/Utils/EditorUtilities.cs.meta +11 -11
- package/Editor/Utils.meta +8 -8
- package/Editor/WShowIfPropertyDrawer.cs +63 -63
- 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 +177 -177
- 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 +209 -209
- package/Runtime/Core/Attributes/DxReadOnlyAttribute.cs +6 -6
- package/Runtime/Core/Attributes/KSerializableAttribute.cs +19 -19
- package/Runtime/Core/Attributes/NotNullAttribute.cs +32 -32
- package/Runtime/Core/Attributes/ParentComponent.cs +185 -185
- package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +14 -14
- package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +117 -117
- 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/WShowIfAttribute.cs +16 -16
- 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 +153 -153
- package/Runtime/Core/DataStructure/ISpatialTree.cs +60 -60
- package/Runtime/Core/DataStructure/ISpatialTree.cs.meta +11 -11
- package/Runtime/Core/DataStructure/KDTree.cs +292 -292
- package/Runtime/Core/DataStructure/KDTree.cs.meta +11 -11
- package/Runtime/Core/DataStructure/QuadTree.cs +287 -287
- package/Runtime/Core/DataStructure/RTree.cs +346 -346
- package/Runtime/Core/DataStructure/RTree.cs.meta +11 -11
- package/Runtime/Core/DataStructure/StringWrapper.cs +91 -91
- package/Runtime/Core/DataStructure/TimedCache.cs +66 -66
- package/Runtime/Core/Extension/AnimatorExtensions.cs +25 -25
- package/Runtime/Core/Extension/AsyncOperationExtensions.cs +110 -108
- package/Runtime/Core/Extension/CircleExtensions.cs +25 -25
- package/Runtime/Core/Extension/ColorExtensions.cs +629 -629
- package/Runtime/Core/Extension/DictionaryExtensions.cs +279 -279
- package/Runtime/Core/Extension/DirectionExtensions.cs +213 -213
- package/Runtime/Core/Extension/EnumExtensions.cs +37 -37
- package/Runtime/Core/Extension/EnumExtensions.cs.meta +2 -2
- package/Runtime/Core/Extension/HashSetExtensions.cs +12 -12
- package/Runtime/Core/Extension/IEnumerableExtensions.cs +122 -122
- package/Runtime/Core/Extension/IListExtensions.cs +106 -106
- package/Runtime/Core/Extension/LoggingExtensions.cs +258 -258
- package/Runtime/Core/Extension/RandomExtensions.cs +109 -109
- package/Runtime/Core/Extension/SerializedPropertyExtensions.cs +157 -157
- package/Runtime/Core/Extension/StringExtensions.cs +151 -151
- package/Runtime/Core/Extension/UnityExtensions.cs +1608 -1608
- 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/FormattingHelpers.cs +32 -32
- 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 +769 -769
- 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 +189 -189
- package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials.meta +2 -2
- package/Runtime/Core/Helper/ReflectionHelpers.cs +452 -452
- package/Runtime/Core/Helper/ReflectionHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/SceneHelper.cs +209 -213
- package/Runtime/Core/Helper/SpriteHelpers.cs +41 -41
- 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/UnityMainThreadDispatcher.cs +82 -80
- 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 +585 -585
- package/Runtime/Core/Random/DotNetRandom.cs +54 -54
- package/Runtime/Core/Random/DotNetRandom.cs.meta +2 -2
- package/Runtime/Core/Random/IRandom.cs +161 -161
- package/Runtime/Core/Random/LinearCongruentialGenerator.cs +49 -49
- 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 +52 -52
- package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -11
- package/Runtime/Core/Random/XorShiroRandom.cs +119 -119
- package/Runtime/Core/Random/XorShiroRandom.cs.meta +2 -2
- package/Runtime/Core/Serialization/JsonConverters/ColorConverter.cs +88 -88
- package/Runtime/Core/Serialization/JsonConverters/GameObjectConverter.cs +37 -37
- package/Runtime/Core/Serialization/JsonConverters/Matrix4x4Converter.cs +218 -218
- package/Runtime/Core/Serialization/JsonConverters/TypeConverter.cs +28 -28
- package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +74 -74
- package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +81 -81
- package/Runtime/Core/Serialization/JsonConverters/Vector4Converter.cs +88 -88
- package/Runtime/Core/Serialization/Serializer.cs +195 -195
- package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +113 -113
- 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 +33 -33
- 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/DeferredDisposalResult.cs +23 -23
- 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 +69 -69
- package/Runtime/Utils/RuntimeSingleton.cs.meta +11 -11
- package/Runtime/Utils/SetTextureImportData.cs +69 -69
- package/Runtime/Utils/SpriteRendererMetadata.cs +374 -374
- 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/RelationalComponentTesterComplex.cs +34 -34
- package/Tests/Runtime/Components/RelationalComponentTesterComplex.cs.meta +2 -2
- package/Tests/Runtime/Components/RelationalComponentsTesterSimple.cs +40 -40
- package/Tests/Runtime/Components.meta +2 -2
- 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/EnumExtensionTests.cs +128 -128
- package/Tests/Runtime/Extensions/EnumExtensionTests.cs.meta +2 -2
- package/Tests/Runtime/Extensions/IListExtensionTests.cs +104 -104
- 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/FormattingHelperTests.cs +129 -129
- package/Tests/Runtime/Helper/FormattingHelperTests.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/ReflectionHelperTests.cs +536 -536
- package/Tests/Runtime/Helper/SceneHelperTests.cs +94 -94
- 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 +157 -157
- package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -11
- package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +61 -61
- package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +2 -2
- 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/LinearCongruentialGeneratorTests.cs +12 -12
- 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 +156 -156
- 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,209 +1,209 @@
|
|
|
1
|
-
namespace UnityHelpers.Core.Attributes
|
|
2
|
-
{
|
|
3
|
-
using System;
|
|
4
|
-
using System.Collections;
|
|
5
|
-
using System.Collections.Generic;
|
|
6
|
-
using System.Linq;
|
|
7
|
-
using System.Reflection;
|
|
8
|
-
using Extension;
|
|
9
|
-
using Helper;
|
|
10
|
-
using JetBrains.Annotations;
|
|
11
|
-
using UnityEngine;
|
|
12
|
-
|
|
13
|
-
[AttributeUsage(AttributeTargets.Field)]
|
|
14
|
-
[MeansImplicitUse]
|
|
15
|
-
public sealed class ChildComponentAttribute : Attribute
|
|
16
|
-
{
|
|
17
|
-
public bool optional = false;
|
|
18
|
-
public bool includeInactive = true;
|
|
19
|
-
public bool onlyDescendents = false;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
public static class ChildComponentExtensions
|
|
23
|
-
{
|
|
24
|
-
private static readonly Dictionary<
|
|
25
|
-
Type,
|
|
26
|
-
(FieldInfo field, Action<object, object> setter)[]
|
|
27
|
-
> FieldsByType = new();
|
|
28
|
-
|
|
29
|
-
public static void AssignChildComponents(this Component component)
|
|
30
|
-
{
|
|
31
|
-
Type componentType = component.GetType();
|
|
32
|
-
(FieldInfo field, Action<object, object> setter)[] fields = FieldsByType.GetOrAdd(
|
|
33
|
-
componentType,
|
|
34
|
-
type =>
|
|
35
|
-
{
|
|
36
|
-
FieldInfo[] fields = type.GetFields(
|
|
37
|
-
BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
|
|
38
|
-
);
|
|
39
|
-
return fields
|
|
40
|
-
.Where(field => Attribute.IsDefined(field, typeof(ChildComponentAttribute)))
|
|
41
|
-
.Select(field => (field, ReflectionHelpers.GetFieldSetter(field)))
|
|
42
|
-
.ToArray();
|
|
43
|
-
}
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
foreach ((FieldInfo field, Action<object, object> setter) in fields)
|
|
47
|
-
{
|
|
48
|
-
Type fieldType = field.FieldType;
|
|
49
|
-
bool isArray = fieldType.IsArray;
|
|
50
|
-
Type childComponentType = isArray ? fieldType.GetElementType() : fieldType;
|
|
51
|
-
|
|
52
|
-
bool foundChild;
|
|
53
|
-
ChildComponentAttribute customAttribute =
|
|
54
|
-
field.GetCustomAttribute<ChildComponentAttribute>();
|
|
55
|
-
if (customAttribute.onlyDescendents)
|
|
56
|
-
{
|
|
57
|
-
if (isArray)
|
|
58
|
-
{
|
|
59
|
-
List<Component> children = new();
|
|
60
|
-
foreach (Transform child in component.IterateOverAllChildren())
|
|
61
|
-
{
|
|
62
|
-
children.AddRange(
|
|
63
|
-
child.GetComponentsInChildren(
|
|
64
|
-
childComponentType,
|
|
65
|
-
customAttribute.includeInactive
|
|
66
|
-
)
|
|
67
|
-
);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
foundChild = 0 < children.Count;
|
|
71
|
-
|
|
72
|
-
Array correctTypedArray = ReflectionHelpers.CreateArray(
|
|
73
|
-
childComponentType,
|
|
74
|
-
children.Count
|
|
75
|
-
);
|
|
76
|
-
Array.Copy(children.ToArray(), correctTypedArray, children.Count);
|
|
77
|
-
setter(component, correctTypedArray);
|
|
78
|
-
}
|
|
79
|
-
else if (
|
|
80
|
-
fieldType.IsGenericType
|
|
81
|
-
&& fieldType.GetGenericTypeDefinition() == typeof(List<>)
|
|
82
|
-
)
|
|
83
|
-
{
|
|
84
|
-
childComponentType = fieldType.GenericTypeArguments[0];
|
|
85
|
-
|
|
86
|
-
IList instance = ReflectionHelpers.CreateList(childComponentType);
|
|
87
|
-
foundChild = false;
|
|
88
|
-
foreach (
|
|
89
|
-
Component childComponent in component
|
|
90
|
-
.IterateOverAllChildren()
|
|
91
|
-
.SelectMany(child =>
|
|
92
|
-
child.GetComponentsInChildren(
|
|
93
|
-
childComponentType,
|
|
94
|
-
customAttribute.includeInactive
|
|
95
|
-
)
|
|
96
|
-
)
|
|
97
|
-
)
|
|
98
|
-
{
|
|
99
|
-
instance.Add(childComponent);
|
|
100
|
-
foundChild = true;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
setter(component, instance);
|
|
104
|
-
}
|
|
105
|
-
else
|
|
106
|
-
{
|
|
107
|
-
foundChild = false;
|
|
108
|
-
Component childComponent = null;
|
|
109
|
-
foreach (
|
|
110
|
-
Transform child in component.IterateOverAllChildrenRecursivelyBreadthFirst()
|
|
111
|
-
)
|
|
112
|
-
{
|
|
113
|
-
childComponent = child.GetComponent(childComponentType);
|
|
114
|
-
if (
|
|
115
|
-
childComponent == null
|
|
116
|
-
|| (
|
|
117
|
-
!customAttribute.includeInactive
|
|
118
|
-
&& (
|
|
119
|
-
!childComponent.gameObject.activeInHierarchy
|
|
120
|
-
|| childComponent is Behaviour { enabled: false }
|
|
121
|
-
)
|
|
122
|
-
)
|
|
123
|
-
)
|
|
124
|
-
{
|
|
125
|
-
continue;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
foundChild = true;
|
|
129
|
-
break;
|
|
130
|
-
}
|
|
131
|
-
if (foundChild)
|
|
132
|
-
{
|
|
133
|
-
setter(component, childComponent);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
else
|
|
138
|
-
{
|
|
139
|
-
if (isArray)
|
|
140
|
-
{
|
|
141
|
-
Component[] childComponents = component.GetComponentsInChildren(
|
|
142
|
-
childComponentType,
|
|
143
|
-
customAttribute.includeInactive
|
|
144
|
-
);
|
|
145
|
-
foundChild = 0 < childComponents.Length;
|
|
146
|
-
|
|
147
|
-
Array correctTypedArray = ReflectionHelpers.CreateArray(
|
|
148
|
-
childComponentType,
|
|
149
|
-
childComponents.Length
|
|
150
|
-
);
|
|
151
|
-
Array.Copy(childComponents, correctTypedArray, childComponents.Length);
|
|
152
|
-
setter(component, correctTypedArray);
|
|
153
|
-
}
|
|
154
|
-
else if (
|
|
155
|
-
fieldType.IsGenericType
|
|
156
|
-
&& fieldType.GetGenericTypeDefinition() == typeof(List<>)
|
|
157
|
-
)
|
|
158
|
-
{
|
|
159
|
-
childComponentType = fieldType.GenericTypeArguments[0];
|
|
160
|
-
|
|
161
|
-
Component[] children = component.GetComponentsInChildren(
|
|
162
|
-
childComponentType,
|
|
163
|
-
true
|
|
164
|
-
);
|
|
165
|
-
|
|
166
|
-
IList instance = ReflectionHelpers.CreateList(
|
|
167
|
-
childComponentType,
|
|
168
|
-
children.Length
|
|
169
|
-
);
|
|
170
|
-
foundChild = false;
|
|
171
|
-
foreach (
|
|
172
|
-
Component childComponent in component.GetComponentsInChildren(
|
|
173
|
-
childComponentType,
|
|
174
|
-
customAttribute.includeInactive
|
|
175
|
-
)
|
|
176
|
-
)
|
|
177
|
-
{
|
|
178
|
-
instance.Add(childComponent);
|
|
179
|
-
foundChild = true;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
setter(component, instance);
|
|
183
|
-
}
|
|
184
|
-
else
|
|
185
|
-
{
|
|
186
|
-
Component childComponent = component.GetComponentInChildren(
|
|
187
|
-
childComponentType,
|
|
188
|
-
customAttribute.includeInactive
|
|
189
|
-
);
|
|
190
|
-
foundChild = childComponent != null;
|
|
191
|
-
if (foundChild)
|
|
192
|
-
{
|
|
193
|
-
setter(component, childComponent);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
if (
|
|
199
|
-
!foundChild
|
|
200
|
-
&& field.GetCustomAttributes(typeof(ChildComponentAttribute), false)[0]
|
|
201
|
-
is ChildComponentAttribute { optional: false }
|
|
202
|
-
)
|
|
203
|
-
{
|
|
204
|
-
component.LogError($"Unable to find child component of type {fieldType}");
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
1
|
+
namespace UnityHelpers.Core.Attributes
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
using System.Collections;
|
|
5
|
+
using System.Collections.Generic;
|
|
6
|
+
using System.Linq;
|
|
7
|
+
using System.Reflection;
|
|
8
|
+
using Extension;
|
|
9
|
+
using Helper;
|
|
10
|
+
using JetBrains.Annotations;
|
|
11
|
+
using UnityEngine;
|
|
12
|
+
|
|
13
|
+
[AttributeUsage(AttributeTargets.Field)]
|
|
14
|
+
[MeansImplicitUse]
|
|
15
|
+
public sealed class ChildComponentAttribute : Attribute
|
|
16
|
+
{
|
|
17
|
+
public bool optional = false;
|
|
18
|
+
public bool includeInactive = true;
|
|
19
|
+
public bool onlyDescendents = false;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
public static class ChildComponentExtensions
|
|
23
|
+
{
|
|
24
|
+
private static readonly Dictionary<
|
|
25
|
+
Type,
|
|
26
|
+
(FieldInfo field, Action<object, object> setter)[]
|
|
27
|
+
> FieldsByType = new();
|
|
28
|
+
|
|
29
|
+
public static void AssignChildComponents(this Component component)
|
|
30
|
+
{
|
|
31
|
+
Type componentType = component.GetType();
|
|
32
|
+
(FieldInfo field, Action<object, object> setter)[] fields = FieldsByType.GetOrAdd(
|
|
33
|
+
componentType,
|
|
34
|
+
type =>
|
|
35
|
+
{
|
|
36
|
+
FieldInfo[] fields = type.GetFields(
|
|
37
|
+
BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
|
|
38
|
+
);
|
|
39
|
+
return fields
|
|
40
|
+
.Where(field => Attribute.IsDefined(field, typeof(ChildComponentAttribute)))
|
|
41
|
+
.Select(field => (field, ReflectionHelpers.GetFieldSetter(field)))
|
|
42
|
+
.ToArray();
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
foreach ((FieldInfo field, Action<object, object> setter) in fields)
|
|
47
|
+
{
|
|
48
|
+
Type fieldType = field.FieldType;
|
|
49
|
+
bool isArray = fieldType.IsArray;
|
|
50
|
+
Type childComponentType = isArray ? fieldType.GetElementType() : fieldType;
|
|
51
|
+
|
|
52
|
+
bool foundChild;
|
|
53
|
+
ChildComponentAttribute customAttribute =
|
|
54
|
+
field.GetCustomAttribute<ChildComponentAttribute>();
|
|
55
|
+
if (customAttribute.onlyDescendents)
|
|
56
|
+
{
|
|
57
|
+
if (isArray)
|
|
58
|
+
{
|
|
59
|
+
List<Component> children = new();
|
|
60
|
+
foreach (Transform child in component.IterateOverAllChildren())
|
|
61
|
+
{
|
|
62
|
+
children.AddRange(
|
|
63
|
+
child.GetComponentsInChildren(
|
|
64
|
+
childComponentType,
|
|
65
|
+
customAttribute.includeInactive
|
|
66
|
+
)
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
foundChild = 0 < children.Count;
|
|
71
|
+
|
|
72
|
+
Array correctTypedArray = ReflectionHelpers.CreateArray(
|
|
73
|
+
childComponentType,
|
|
74
|
+
children.Count
|
|
75
|
+
);
|
|
76
|
+
Array.Copy(children.ToArray(), correctTypedArray, children.Count);
|
|
77
|
+
setter(component, correctTypedArray);
|
|
78
|
+
}
|
|
79
|
+
else if (
|
|
80
|
+
fieldType.IsGenericType
|
|
81
|
+
&& fieldType.GetGenericTypeDefinition() == typeof(List<>)
|
|
82
|
+
)
|
|
83
|
+
{
|
|
84
|
+
childComponentType = fieldType.GenericTypeArguments[0];
|
|
85
|
+
|
|
86
|
+
IList instance = ReflectionHelpers.CreateList(childComponentType);
|
|
87
|
+
foundChild = false;
|
|
88
|
+
foreach (
|
|
89
|
+
Component childComponent in component
|
|
90
|
+
.IterateOverAllChildren()
|
|
91
|
+
.SelectMany(child =>
|
|
92
|
+
child.GetComponentsInChildren(
|
|
93
|
+
childComponentType,
|
|
94
|
+
customAttribute.includeInactive
|
|
95
|
+
)
|
|
96
|
+
)
|
|
97
|
+
)
|
|
98
|
+
{
|
|
99
|
+
instance.Add(childComponent);
|
|
100
|
+
foundChild = true;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
setter(component, instance);
|
|
104
|
+
}
|
|
105
|
+
else
|
|
106
|
+
{
|
|
107
|
+
foundChild = false;
|
|
108
|
+
Component childComponent = null;
|
|
109
|
+
foreach (
|
|
110
|
+
Transform child in component.IterateOverAllChildrenRecursivelyBreadthFirst()
|
|
111
|
+
)
|
|
112
|
+
{
|
|
113
|
+
childComponent = child.GetComponent(childComponentType);
|
|
114
|
+
if (
|
|
115
|
+
childComponent == null
|
|
116
|
+
|| (
|
|
117
|
+
!customAttribute.includeInactive
|
|
118
|
+
&& (
|
|
119
|
+
!childComponent.gameObject.activeInHierarchy
|
|
120
|
+
|| childComponent is Behaviour { enabled: false }
|
|
121
|
+
)
|
|
122
|
+
)
|
|
123
|
+
)
|
|
124
|
+
{
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
foundChild = true;
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
if (foundChild)
|
|
132
|
+
{
|
|
133
|
+
setter(component, childComponent);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else
|
|
138
|
+
{
|
|
139
|
+
if (isArray)
|
|
140
|
+
{
|
|
141
|
+
Component[] childComponents = component.GetComponentsInChildren(
|
|
142
|
+
childComponentType,
|
|
143
|
+
customAttribute.includeInactive
|
|
144
|
+
);
|
|
145
|
+
foundChild = 0 < childComponents.Length;
|
|
146
|
+
|
|
147
|
+
Array correctTypedArray = ReflectionHelpers.CreateArray(
|
|
148
|
+
childComponentType,
|
|
149
|
+
childComponents.Length
|
|
150
|
+
);
|
|
151
|
+
Array.Copy(childComponents, correctTypedArray, childComponents.Length);
|
|
152
|
+
setter(component, correctTypedArray);
|
|
153
|
+
}
|
|
154
|
+
else if (
|
|
155
|
+
fieldType.IsGenericType
|
|
156
|
+
&& fieldType.GetGenericTypeDefinition() == typeof(List<>)
|
|
157
|
+
)
|
|
158
|
+
{
|
|
159
|
+
childComponentType = fieldType.GenericTypeArguments[0];
|
|
160
|
+
|
|
161
|
+
Component[] children = component.GetComponentsInChildren(
|
|
162
|
+
childComponentType,
|
|
163
|
+
true
|
|
164
|
+
);
|
|
165
|
+
|
|
166
|
+
IList instance = ReflectionHelpers.CreateList(
|
|
167
|
+
childComponentType,
|
|
168
|
+
children.Length
|
|
169
|
+
);
|
|
170
|
+
foundChild = false;
|
|
171
|
+
foreach (
|
|
172
|
+
Component childComponent in component.GetComponentsInChildren(
|
|
173
|
+
childComponentType,
|
|
174
|
+
customAttribute.includeInactive
|
|
175
|
+
)
|
|
176
|
+
)
|
|
177
|
+
{
|
|
178
|
+
instance.Add(childComponent);
|
|
179
|
+
foundChild = true;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
setter(component, instance);
|
|
183
|
+
}
|
|
184
|
+
else
|
|
185
|
+
{
|
|
186
|
+
Component childComponent = component.GetComponentInChildren(
|
|
187
|
+
childComponentType,
|
|
188
|
+
customAttribute.includeInactive
|
|
189
|
+
);
|
|
190
|
+
foundChild = childComponent != null;
|
|
191
|
+
if (foundChild)
|
|
192
|
+
{
|
|
193
|
+
setter(component, childComponent);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
if (
|
|
199
|
+
!foundChild
|
|
200
|
+
&& field.GetCustomAttributes(typeof(ChildComponentAttribute), false)[0]
|
|
201
|
+
is ChildComponentAttribute { optional: false }
|
|
202
|
+
)
|
|
203
|
+
{
|
|
204
|
+
component.LogError($"Unable to find child component of type {fieldType}");
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
namespace UnityHelpers.Core.Attributes
|
|
2
|
-
{
|
|
3
|
-
using PropertyAttribute = UnityEngine.PropertyAttribute;
|
|
4
|
-
|
|
5
|
-
public sealed class DxReadOnlyAttribute : PropertyAttribute { }
|
|
6
|
-
}
|
|
1
|
+
namespace UnityHelpers.Core.Attributes
|
|
2
|
+
{
|
|
3
|
+
using PropertyAttribute = UnityEngine.PropertyAttribute;
|
|
4
|
+
|
|
5
|
+
public sealed class DxReadOnlyAttribute : PropertyAttribute { }
|
|
6
|
+
}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
namespace UnityHelpers.Core.Attributes
|
|
2
|
-
{
|
|
3
|
-
using System;
|
|
4
|
-
|
|
5
|
-
/// <summary>
|
|
6
|
-
/// If specified on a field or property, will automatically attempt to serialize that property
|
|
7
|
-
/// on MonoBehaviors when SerializedWorld is being constructed.
|
|
8
|
-
/// If specified on a class, will automatically attempt to serialize all fields and properties.
|
|
9
|
-
/// </summary>
|
|
10
|
-
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Class)]
|
|
11
|
-
public sealed class KSerializableAttribute : Attribute { }
|
|
12
|
-
|
|
13
|
-
/// <summary>
|
|
14
|
-
/// For classes where KSerializableAttribute is used, specifying this on fields or properties
|
|
15
|
-
/// will ignore them for the purpose of serialization into SerializedWorld.
|
|
16
|
-
/// </summary>
|
|
17
|
-
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
|
|
18
|
-
public sealed class KNonSerializableAttribute : Attribute { }
|
|
19
|
-
}
|
|
1
|
+
namespace UnityHelpers.Core.Attributes
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
|
|
5
|
+
/// <summary>
|
|
6
|
+
/// If specified on a field or property, will automatically attempt to serialize that property
|
|
7
|
+
/// on MonoBehaviors when SerializedWorld is being constructed.
|
|
8
|
+
/// If specified on a class, will automatically attempt to serialize all fields and properties.
|
|
9
|
+
/// </summary>
|
|
10
|
+
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Class)]
|
|
11
|
+
public sealed class KSerializableAttribute : Attribute { }
|
|
12
|
+
|
|
13
|
+
/// <summary>
|
|
14
|
+
/// For classes where KSerializableAttribute is used, specifying this on fields or properties
|
|
15
|
+
/// will ignore them for the purpose of serialization into SerializedWorld.
|
|
16
|
+
/// </summary>
|
|
17
|
+
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
|
|
18
|
+
public sealed class KNonSerializableAttribute : Attribute { }
|
|
19
|
+
}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
namespace UnityHelpers.Core.Attributes
|
|
2
|
-
{
|
|
3
|
-
using System;
|
|
4
|
-
using System.Collections.Generic;
|
|
5
|
-
using System.Linq;
|
|
6
|
-
using System.Reflection;
|
|
7
|
-
|
|
8
|
-
[AttributeUsage(AttributeTargets.Field)]
|
|
9
|
-
public sealed class NotNullAttribute : Attribute { }
|
|
10
|
-
|
|
11
|
-
public static class NotNullAttributeExtensions
|
|
12
|
-
{
|
|
13
|
-
public static void CheckForNulls(this object o)
|
|
14
|
-
{
|
|
15
|
-
#if UNITY_EDITOR
|
|
16
|
-
IEnumerable<FieldInfo> properties = o.GetType()
|
|
17
|
-
.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
|
|
18
|
-
.Where(prop => Attribute.IsDefined(prop, typeof(NotNullAttribute)));
|
|
19
|
-
|
|
20
|
-
foreach (FieldInfo field in properties)
|
|
21
|
-
{
|
|
22
|
-
object fieldValue = field.GetValue(o);
|
|
23
|
-
|
|
24
|
-
if (fieldValue == null)
|
|
25
|
-
{
|
|
26
|
-
throw new ArgumentNullException(field.Name);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
#endif
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
1
|
+
namespace UnityHelpers.Core.Attributes
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
using System.Collections.Generic;
|
|
5
|
+
using System.Linq;
|
|
6
|
+
using System.Reflection;
|
|
7
|
+
|
|
8
|
+
[AttributeUsage(AttributeTargets.Field)]
|
|
9
|
+
public sealed class NotNullAttribute : Attribute { }
|
|
10
|
+
|
|
11
|
+
public static class NotNullAttributeExtensions
|
|
12
|
+
{
|
|
13
|
+
public static void CheckForNulls(this object o)
|
|
14
|
+
{
|
|
15
|
+
#if UNITY_EDITOR
|
|
16
|
+
IEnumerable<FieldInfo> properties = o.GetType()
|
|
17
|
+
.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
|
|
18
|
+
.Where(prop => Attribute.IsDefined(prop, typeof(NotNullAttribute)));
|
|
19
|
+
|
|
20
|
+
foreach (FieldInfo field in properties)
|
|
21
|
+
{
|
|
22
|
+
object fieldValue = field.GetValue(o);
|
|
23
|
+
|
|
24
|
+
if (fieldValue == null)
|
|
25
|
+
{
|
|
26
|
+
throw new ArgumentNullException(field.Name);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
#endif
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|