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,109 +1,109 @@
|
|
|
1
|
-
namespace UnityHelpers.Core.Extension
|
|
2
|
-
{
|
|
3
|
-
using System;
|
|
4
|
-
using System.Collections.Generic;
|
|
5
|
-
using System.Linq;
|
|
6
|
-
using Helper;
|
|
7
|
-
using Random;
|
|
8
|
-
using UnityEngine;
|
|
9
|
-
|
|
10
|
-
public static class RandomExtensions
|
|
11
|
-
{
|
|
12
|
-
public static Vector2 NextVector2(this IRandom random, float amplitude)
|
|
13
|
-
{
|
|
14
|
-
return random.NextVector2(-amplitude, amplitude);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
public static T NextEnumExcept<T>(this IRandom random, params T[] exceptions)
|
|
18
|
-
where T : struct, Enum
|
|
19
|
-
{
|
|
20
|
-
T value;
|
|
21
|
-
do
|
|
22
|
-
{
|
|
23
|
-
value = random.NextEnum<T>();
|
|
24
|
-
} while (0 <= Array.IndexOf(exceptions, value));
|
|
25
|
-
|
|
26
|
-
return value;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
public static T NextOfExcept<T>(
|
|
30
|
-
this IRandom random,
|
|
31
|
-
IEnumerable<T> values,
|
|
32
|
-
params T[] exceptions
|
|
33
|
-
)
|
|
34
|
-
{
|
|
35
|
-
T value;
|
|
36
|
-
|
|
37
|
-
switch (values)
|
|
38
|
-
{
|
|
39
|
-
case IReadOnlyList<T> list:
|
|
40
|
-
{
|
|
41
|
-
do
|
|
42
|
-
{
|
|
43
|
-
value = random.NextOf(list);
|
|
44
|
-
} while (0 <= Array.IndexOf(exceptions, value));
|
|
45
|
-
|
|
46
|
-
break;
|
|
47
|
-
}
|
|
48
|
-
case IReadOnlyCollection<T> collection:
|
|
49
|
-
{
|
|
50
|
-
do
|
|
51
|
-
{
|
|
52
|
-
value = random.NextOf(collection);
|
|
53
|
-
} while (0 <= Array.IndexOf(exceptions, value));
|
|
54
|
-
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
default:
|
|
58
|
-
{
|
|
59
|
-
T[] input = values.ToArray();
|
|
60
|
-
do
|
|
61
|
-
{
|
|
62
|
-
value = random.NextOf(input);
|
|
63
|
-
} while (0 <= Array.IndexOf(exceptions, value));
|
|
64
|
-
|
|
65
|
-
break;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return value;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
public static Vector2 NextVector2(
|
|
73
|
-
this IRandom random,
|
|
74
|
-
float minAmplitude,
|
|
75
|
-
float maxAmplitude
|
|
76
|
-
)
|
|
77
|
-
{
|
|
78
|
-
float x = random.NextFloat(minAmplitude, maxAmplitude);
|
|
79
|
-
float y = random.NextFloat(minAmplitude, maxAmplitude);
|
|
80
|
-
return new Vector2(x, y);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
public static Vector2 NextVector2InRange(
|
|
84
|
-
this IRandom random,
|
|
85
|
-
float range,
|
|
86
|
-
Vector2? origin = null
|
|
87
|
-
)
|
|
88
|
-
{
|
|
89
|
-
return Helpers.GetRandomPointInCircle(origin ?? Vector2.zero, range, random);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
public static Vector3 NextVector3(this IRandom random, float amplitude)
|
|
93
|
-
{
|
|
94
|
-
return random.NextVector3(-amplitude, amplitude);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
public static Vector3 NextVector3(
|
|
98
|
-
this IRandom random,
|
|
99
|
-
float minAmplitude,
|
|
100
|
-
float maxAmplitude
|
|
101
|
-
)
|
|
102
|
-
{
|
|
103
|
-
float z = random.NextFloat(minAmplitude, maxAmplitude);
|
|
104
|
-
Vector3 result = random.NextVector2(minAmplitude, maxAmplitude);
|
|
105
|
-
result.z = z;
|
|
106
|
-
return result;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
1
|
+
namespace UnityHelpers.Core.Extension
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
using System.Collections.Generic;
|
|
5
|
+
using System.Linq;
|
|
6
|
+
using Helper;
|
|
7
|
+
using Random;
|
|
8
|
+
using UnityEngine;
|
|
9
|
+
|
|
10
|
+
public static class RandomExtensions
|
|
11
|
+
{
|
|
12
|
+
public static Vector2 NextVector2(this IRandom random, float amplitude)
|
|
13
|
+
{
|
|
14
|
+
return random.NextVector2(-amplitude, amplitude);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public static T NextEnumExcept<T>(this IRandom random, params T[] exceptions)
|
|
18
|
+
where T : struct, Enum
|
|
19
|
+
{
|
|
20
|
+
T value;
|
|
21
|
+
do
|
|
22
|
+
{
|
|
23
|
+
value = random.NextEnum<T>();
|
|
24
|
+
} while (0 <= Array.IndexOf(exceptions, value));
|
|
25
|
+
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public static T NextOfExcept<T>(
|
|
30
|
+
this IRandom random,
|
|
31
|
+
IEnumerable<T> values,
|
|
32
|
+
params T[] exceptions
|
|
33
|
+
)
|
|
34
|
+
{
|
|
35
|
+
T value;
|
|
36
|
+
|
|
37
|
+
switch (values)
|
|
38
|
+
{
|
|
39
|
+
case IReadOnlyList<T> list:
|
|
40
|
+
{
|
|
41
|
+
do
|
|
42
|
+
{
|
|
43
|
+
value = random.NextOf(list);
|
|
44
|
+
} while (0 <= Array.IndexOf(exceptions, value));
|
|
45
|
+
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
case IReadOnlyCollection<T> collection:
|
|
49
|
+
{
|
|
50
|
+
do
|
|
51
|
+
{
|
|
52
|
+
value = random.NextOf(collection);
|
|
53
|
+
} while (0 <= Array.IndexOf(exceptions, value));
|
|
54
|
+
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
default:
|
|
58
|
+
{
|
|
59
|
+
T[] input = values.ToArray();
|
|
60
|
+
do
|
|
61
|
+
{
|
|
62
|
+
value = random.NextOf(input);
|
|
63
|
+
} while (0 <= Array.IndexOf(exceptions, value));
|
|
64
|
+
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return value;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
public static Vector2 NextVector2(
|
|
73
|
+
this IRandom random,
|
|
74
|
+
float minAmplitude,
|
|
75
|
+
float maxAmplitude
|
|
76
|
+
)
|
|
77
|
+
{
|
|
78
|
+
float x = random.NextFloat(minAmplitude, maxAmplitude);
|
|
79
|
+
float y = random.NextFloat(minAmplitude, maxAmplitude);
|
|
80
|
+
return new Vector2(x, y);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public static Vector2 NextVector2InRange(
|
|
84
|
+
this IRandom random,
|
|
85
|
+
float range,
|
|
86
|
+
Vector2? origin = null
|
|
87
|
+
)
|
|
88
|
+
{
|
|
89
|
+
return Helpers.GetRandomPointInCircle(origin ?? Vector2.zero, range, random);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
public static Vector3 NextVector3(this IRandom random, float amplitude)
|
|
93
|
+
{
|
|
94
|
+
return random.NextVector3(-amplitude, amplitude);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
public static Vector3 NextVector3(
|
|
98
|
+
this IRandom random,
|
|
99
|
+
float minAmplitude,
|
|
100
|
+
float maxAmplitude
|
|
101
|
+
)
|
|
102
|
+
{
|
|
103
|
+
float z = random.NextFloat(minAmplitude, maxAmplitude);
|
|
104
|
+
Vector3 result = random.NextVector2(minAmplitude, maxAmplitude);
|
|
105
|
+
result.z = z;
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
@@ -1,157 +1,157 @@
|
|
|
1
|
-
namespace UnityHelpers.Core.Extension
|
|
2
|
-
{
|
|
3
|
-
#if UNITY_EDITOR
|
|
4
|
-
using UnityEditor;
|
|
5
|
-
using System;
|
|
6
|
-
using System.Reflection;
|
|
7
|
-
|
|
8
|
-
public static class SerializedPropertyExtensions
|
|
9
|
-
{
|
|
10
|
-
/// <summary>
|
|
11
|
-
/// Gets the instance object that contains the given SerializedProperty.
|
|
12
|
-
/// </summary>
|
|
13
|
-
/// <param name="property">The SerializedProperty.</param>
|
|
14
|
-
/// <param name="fieldInfo">Outputs the FieldInfo of the referenced field.</param>
|
|
15
|
-
/// <returns>The instance object that owns the field.</returns>
|
|
16
|
-
public static object GetEnclosingObject(
|
|
17
|
-
this SerializedProperty property,
|
|
18
|
-
out FieldInfo fieldInfo
|
|
19
|
-
)
|
|
20
|
-
{
|
|
21
|
-
fieldInfo = null;
|
|
22
|
-
object obj = property.serializedObject.targetObject;
|
|
23
|
-
if (obj == null)
|
|
24
|
-
{
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
Type type = obj.GetType();
|
|
28
|
-
string[] pathParts = property.propertyPath.Split('.');
|
|
29
|
-
|
|
30
|
-
// Traverse the path but stop at the second-to-last field
|
|
31
|
-
for (int i = 0; i < pathParts.Length - 1; ++i)
|
|
32
|
-
{
|
|
33
|
-
string fieldName = pathParts[i];
|
|
34
|
-
|
|
35
|
-
if (string.Equals(fieldName, "Array", StringComparison.Ordinal))
|
|
36
|
-
{
|
|
37
|
-
// Move to "data[i]", no need to length-check, we're guarded above
|
|
38
|
-
|
|
39
|
-
++i;
|
|
40
|
-
if (
|
|
41
|
-
!int.TryParse(
|
|
42
|
-
pathParts[i]
|
|
43
|
-
.Replace("data[", string.Empty, StringComparison.Ordinal)
|
|
44
|
-
.Replace("]", string.Empty, StringComparison.Ordinal),
|
|
45
|
-
out int index
|
|
46
|
-
)
|
|
47
|
-
)
|
|
48
|
-
{
|
|
49
|
-
// Unexpected, die
|
|
50
|
-
fieldInfo = null;
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
obj = GetElementAtIndex(obj, index);
|
|
54
|
-
type = obj?.GetType();
|
|
55
|
-
continue;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
fieldInfo = type?.GetField(
|
|
59
|
-
fieldName,
|
|
60
|
-
BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance
|
|
61
|
-
);
|
|
62
|
-
if (fieldInfo == null)
|
|
63
|
-
{
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// Move deeper but stop before the last property in the path
|
|
68
|
-
if (i < pathParts.Length - 2)
|
|
69
|
-
{
|
|
70
|
-
obj = fieldInfo.GetValue(obj);
|
|
71
|
-
type = fieldInfo.FieldType;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return obj;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/// <summary>
|
|
79
|
-
/// Gets the FieldInfo and the instance object that owns the field for a given SerializedProperty.
|
|
80
|
-
/// </summary>
|
|
81
|
-
/// <param name="property">The SerializedProperty to reflect upon.</param>
|
|
82
|
-
/// <param name="fieldInfo">Outputs the FieldInfo of the referenced field.</param>
|
|
83
|
-
/// <returns>The instance object that owns the field.</returns>
|
|
84
|
-
public static object GetTargetObjectWithField(
|
|
85
|
-
this SerializedProperty property,
|
|
86
|
-
out FieldInfo fieldInfo
|
|
87
|
-
)
|
|
88
|
-
{
|
|
89
|
-
fieldInfo = null;
|
|
90
|
-
object obj = property.serializedObject.targetObject;
|
|
91
|
-
if (obj == null)
|
|
92
|
-
{
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
Type type = obj.GetType();
|
|
97
|
-
string[] pathParts = property.propertyPath.Split('.');
|
|
98
|
-
|
|
99
|
-
for (int i = 0; i < pathParts.Length; ++i)
|
|
100
|
-
{
|
|
101
|
-
string fieldName = pathParts[i];
|
|
102
|
-
|
|
103
|
-
if (string.Equals(fieldName, "Array", StringComparison.Ordinal))
|
|
104
|
-
{
|
|
105
|
-
// Move to "data[i]"
|
|
106
|
-
++i;
|
|
107
|
-
if (pathParts.Length <= i)
|
|
108
|
-
{
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
if (
|
|
113
|
-
!int.TryParse(
|
|
114
|
-
pathParts[i]
|
|
115
|
-
.Replace("data[", string.Empty, StringComparison.Ordinal)
|
|
116
|
-
.Replace("]", string.Empty, StringComparison.Ordinal),
|
|
117
|
-
out int index
|
|
118
|
-
)
|
|
119
|
-
)
|
|
120
|
-
{
|
|
121
|
-
// Unexpected, die
|
|
122
|
-
fieldInfo = null;
|
|
123
|
-
return null;
|
|
124
|
-
}
|
|
125
|
-
obj = GetElementAtIndex(obj, index);
|
|
126
|
-
type = obj?.GetType();
|
|
127
|
-
continue;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
fieldInfo = type?.GetField(
|
|
131
|
-
fieldName,
|
|
132
|
-
BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance
|
|
133
|
-
);
|
|
134
|
-
if (fieldInfo == null)
|
|
135
|
-
{
|
|
136
|
-
return null;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// Move deeper into the object tree
|
|
140
|
-
obj = fieldInfo.GetValue(obj);
|
|
141
|
-
type = fieldInfo.FieldType;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
return obj;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
private static object GetElementAtIndex(object obj, int index)
|
|
148
|
-
{
|
|
149
|
-
if (obj is System.Collections.IList list && index >= 0 && index < list.Count)
|
|
150
|
-
{
|
|
151
|
-
return list[index];
|
|
152
|
-
}
|
|
153
|
-
return null;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
#endif
|
|
157
|
-
}
|
|
1
|
+
namespace UnityHelpers.Core.Extension
|
|
2
|
+
{
|
|
3
|
+
#if UNITY_EDITOR
|
|
4
|
+
using UnityEditor;
|
|
5
|
+
using System;
|
|
6
|
+
using System.Reflection;
|
|
7
|
+
|
|
8
|
+
public static class SerializedPropertyExtensions
|
|
9
|
+
{
|
|
10
|
+
/// <summary>
|
|
11
|
+
/// Gets the instance object that contains the given SerializedProperty.
|
|
12
|
+
/// </summary>
|
|
13
|
+
/// <param name="property">The SerializedProperty.</param>
|
|
14
|
+
/// <param name="fieldInfo">Outputs the FieldInfo of the referenced field.</param>
|
|
15
|
+
/// <returns>The instance object that owns the field.</returns>
|
|
16
|
+
public static object GetEnclosingObject(
|
|
17
|
+
this SerializedProperty property,
|
|
18
|
+
out FieldInfo fieldInfo
|
|
19
|
+
)
|
|
20
|
+
{
|
|
21
|
+
fieldInfo = null;
|
|
22
|
+
object obj = property.serializedObject.targetObject;
|
|
23
|
+
if (obj == null)
|
|
24
|
+
{
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
Type type = obj.GetType();
|
|
28
|
+
string[] pathParts = property.propertyPath.Split('.');
|
|
29
|
+
|
|
30
|
+
// Traverse the path but stop at the second-to-last field
|
|
31
|
+
for (int i = 0; i < pathParts.Length - 1; ++i)
|
|
32
|
+
{
|
|
33
|
+
string fieldName = pathParts[i];
|
|
34
|
+
|
|
35
|
+
if (string.Equals(fieldName, "Array", StringComparison.Ordinal))
|
|
36
|
+
{
|
|
37
|
+
// Move to "data[i]", no need to length-check, we're guarded above
|
|
38
|
+
|
|
39
|
+
++i;
|
|
40
|
+
if (
|
|
41
|
+
!int.TryParse(
|
|
42
|
+
pathParts[i]
|
|
43
|
+
.Replace("data[", string.Empty, StringComparison.Ordinal)
|
|
44
|
+
.Replace("]", string.Empty, StringComparison.Ordinal),
|
|
45
|
+
out int index
|
|
46
|
+
)
|
|
47
|
+
)
|
|
48
|
+
{
|
|
49
|
+
// Unexpected, die
|
|
50
|
+
fieldInfo = null;
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
obj = GetElementAtIndex(obj, index);
|
|
54
|
+
type = obj?.GetType();
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
fieldInfo = type?.GetField(
|
|
59
|
+
fieldName,
|
|
60
|
+
BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance
|
|
61
|
+
);
|
|
62
|
+
if (fieldInfo == null)
|
|
63
|
+
{
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Move deeper but stop before the last property in the path
|
|
68
|
+
if (i < pathParts.Length - 2)
|
|
69
|
+
{
|
|
70
|
+
obj = fieldInfo.GetValue(obj);
|
|
71
|
+
type = fieldInfo.FieldType;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return obj;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/// <summary>
|
|
79
|
+
/// Gets the FieldInfo and the instance object that owns the field for a given SerializedProperty.
|
|
80
|
+
/// </summary>
|
|
81
|
+
/// <param name="property">The SerializedProperty to reflect upon.</param>
|
|
82
|
+
/// <param name="fieldInfo">Outputs the FieldInfo of the referenced field.</param>
|
|
83
|
+
/// <returns>The instance object that owns the field.</returns>
|
|
84
|
+
public static object GetTargetObjectWithField(
|
|
85
|
+
this SerializedProperty property,
|
|
86
|
+
out FieldInfo fieldInfo
|
|
87
|
+
)
|
|
88
|
+
{
|
|
89
|
+
fieldInfo = null;
|
|
90
|
+
object obj = property.serializedObject.targetObject;
|
|
91
|
+
if (obj == null)
|
|
92
|
+
{
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
Type type = obj.GetType();
|
|
97
|
+
string[] pathParts = property.propertyPath.Split('.');
|
|
98
|
+
|
|
99
|
+
for (int i = 0; i < pathParts.Length; ++i)
|
|
100
|
+
{
|
|
101
|
+
string fieldName = pathParts[i];
|
|
102
|
+
|
|
103
|
+
if (string.Equals(fieldName, "Array", StringComparison.Ordinal))
|
|
104
|
+
{
|
|
105
|
+
// Move to "data[i]"
|
|
106
|
+
++i;
|
|
107
|
+
if (pathParts.Length <= i)
|
|
108
|
+
{
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (
|
|
113
|
+
!int.TryParse(
|
|
114
|
+
pathParts[i]
|
|
115
|
+
.Replace("data[", string.Empty, StringComparison.Ordinal)
|
|
116
|
+
.Replace("]", string.Empty, StringComparison.Ordinal),
|
|
117
|
+
out int index
|
|
118
|
+
)
|
|
119
|
+
)
|
|
120
|
+
{
|
|
121
|
+
// Unexpected, die
|
|
122
|
+
fieldInfo = null;
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
obj = GetElementAtIndex(obj, index);
|
|
126
|
+
type = obj?.GetType();
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
fieldInfo = type?.GetField(
|
|
131
|
+
fieldName,
|
|
132
|
+
BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance
|
|
133
|
+
);
|
|
134
|
+
if (fieldInfo == null)
|
|
135
|
+
{
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Move deeper into the object tree
|
|
140
|
+
obj = fieldInfo.GetValue(obj);
|
|
141
|
+
type = fieldInfo.FieldType;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return obj;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
private static object GetElementAtIndex(object obj, int index)
|
|
148
|
+
{
|
|
149
|
+
if (obj is System.Collections.IList list && index >= 0 && index < list.Count)
|
|
150
|
+
{
|
|
151
|
+
return list[index];
|
|
152
|
+
}
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
#endif
|
|
157
|
+
}
|