com.wallstop-studios.unity-helpers 2.0.0-rc57 → 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 -110
- 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 -82
- 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,18 +1,18 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "WallstopStudios.UnityHelpers.Editor",
|
|
3
|
-
"rootNamespace": "",
|
|
4
|
-
"references": [
|
|
5
|
-
"WallstopStudios.UnityHelpers"
|
|
6
|
-
],
|
|
7
|
-
"includePlatforms": [
|
|
8
|
-
"Editor"
|
|
9
|
-
],
|
|
10
|
-
"excludePlatforms": [],
|
|
11
|
-
"allowUnsafeCode": false,
|
|
12
|
-
"overrideReferences": false,
|
|
13
|
-
"precompiledReferences": [],
|
|
14
|
-
"autoReferenced": true,
|
|
15
|
-
"defineConstraints": [],
|
|
16
|
-
"versionDefines": [],
|
|
17
|
-
"noEngineReferences": false
|
|
1
|
+
{
|
|
2
|
+
"name": "WallstopStudios.UnityHelpers.Editor",
|
|
3
|
+
"rootNamespace": "",
|
|
4
|
+
"references": [
|
|
5
|
+
"WallstopStudios.UnityHelpers"
|
|
6
|
+
],
|
|
7
|
+
"includePlatforms": [
|
|
8
|
+
"Editor"
|
|
9
|
+
],
|
|
10
|
+
"excludePlatforms": [],
|
|
11
|
+
"allowUnsafeCode": false,
|
|
12
|
+
"overrideReferences": false,
|
|
13
|
+
"precompiledReferences": [],
|
|
14
|
+
"autoReferenced": true,
|
|
15
|
+
"defineConstraints": [],
|
|
16
|
+
"versionDefines": [],
|
|
17
|
+
"noEngineReferences": false
|
|
18
18
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: de86e2706cb173041874cadb20669cb0
|
|
3
|
-
AssemblyDefinitionImporter:
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
userData:
|
|
6
|
-
assetBundleName:
|
|
7
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: de86e2706cb173041874cadb20669cb0
|
|
3
|
+
AssemblyDefinitionImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
userData:
|
|
6
|
+
assetBundleName:
|
|
7
|
+
assetBundleVariant:
|
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2023 Eli Pinkerton
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 Eli Pinkerton
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/LICENSE.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
Copyright 2023 Eli Pinkerton
|
|
2
|
-
|
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
4
|
-
|
|
5
|
-
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
6
|
-
|
|
1
|
+
Copyright 2023 Eli Pinkerton
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
4
|
+
|
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
6
|
+
|
|
7
7
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/LICENSE.meta
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: a6e47b47847d6be4ba31a4de140b068d
|
|
3
|
-
DefaultImporter:
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
userData:
|
|
6
|
-
assetBundleName:
|
|
7
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: a6e47b47847d6be4ba31a4de140b068d
|
|
3
|
+
DefaultImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
userData:
|
|
6
|
+
assetBundleName:
|
|
7
|
+
assetBundleVariant:
|
package/README.md
CHANGED
|
@@ -1,178 +1,178 @@
|
|
|
1
|
-
# A Grab-Bag
|
|
2
|
-
Various Unity Helpers. Includes many deterministic, seedable random number generators.
|
|
3
|
-
|
|
4
|
-
# CI/CD Status
|
|
5
|
-

|
|
6
|
-
|
|
7
|
-
# Compatibility
|
|
8
|
-
| Platform | Compatible |
|
|
9
|
-
| --- | --- |
|
|
10
|
-
| Unity 2021 | Likely, but untested |
|
|
11
|
-
| Unity 2022 | ✓ |
|
|
12
|
-
| Unity 2023 | ✓ |
|
|
13
|
-
| Unity 6 | ✓ |
|
|
14
|
-
| URP | ✓ |
|
|
15
|
-
| HDRP | ✓ |
|
|
16
|
-
|
|
17
|
-
# Installation
|
|
18
|
-
|
|
19
|
-
## To Install as Unity Package
|
|
20
|
-
1. Open Unity Package Manager
|
|
21
|
-
2. (Optional) Enable Pre-release packages to get the latest, cutting-edge builds
|
|
22
|
-
3. Open the Advanced Package Settings
|
|
23
|
-
4. Add an entry for a new "Scoped Registry"
|
|
24
|
-
- Name: `NPM`
|
|
25
|
-
- URL: `https://registry.npmjs.org`
|
|
26
|
-
- Scope(s): `com.wallstop-studios.unity-helpers`
|
|
27
|
-
5. Resolve the latest `com.wallstop-studios.unity-helpers`
|
|
28
|
-
|
|
29
|
-
## From Source
|
|
30
|
-
Grab a copy of this repo (either `git clone` or [download a zip of the source](https://github.com/wallstop/unity-helpers/archive/refs/heads/main.zip)) and copy the contents to your project's `Assets` folder.
|
|
31
|
-
|
|
32
|
-
## From Releases
|
|
33
|
-
Check out the latest [Releases](https://github.com/wallstop/unity-helpers/releases) to grab the Unity Package and import to your project.
|
|
34
|
-
|
|
35
|
-
# Package Contents
|
|
36
|
-
- Random Number Generators
|
|
37
|
-
- Spatial Trees
|
|
38
|
-
- Protobuf, Binary, and JSON formatting
|
|
39
|
-
- A resizable CyclicBuffer
|
|
40
|
-
- Simple single-threaded thread pool
|
|
41
|
-
- A LayeredImage for use with Unity's UI Toolkit
|
|
42
|
-
- Geometry Helpers
|
|
43
|
-
- Child/Parent/Sibling Attributes to automatically get components
|
|
44
|
-
- ReadOnly attribute to disable editing of serialized properties in the inspector
|
|
45
|
-
- An extensive collection of helpers
|
|
46
|
-
- Simple math functions including a generic Range
|
|
47
|
-
- Common buffers to reduce allocations
|
|
48
|
-
- A RuntimeSingleton implementation for automatic creation/accessing of singletons
|
|
49
|
-
- String helpers, like converting to PascalCase, like Unity does for variable names in the inspector
|
|
50
|
-
- A randomizable PerlinNoise implementation
|
|
51
|
-
- And more!
|
|
52
|
-
|
|
53
|
-
# Auto Get(Parent/Sibling/Child)Component
|
|
54
|
-
Are you tired of constantly writing GetComponent<T>() all over the place? Waste time no more!
|
|
55
|
-
|
|
56
|
-
```csharp
|
|
57
|
-
public sealed class MyCoolScript : MonoBehaviour
|
|
58
|
-
{
|
|
59
|
-
[SiblingComponent] // If it doesn't exist, will log an error
|
|
60
|
-
private SpriteRenderer _spriteRenderer;
|
|
61
|
-
|
|
62
|
-
[SiblingComponent(optional = true)] // Ok if it doesn't exist, no errors logged
|
|
63
|
-
private BoxCollider2D _boxCollider;
|
|
64
|
-
|
|
65
|
-
[ParentComponent] // Similar to GetComponentInParent<AIController>(includeInactive: true)
|
|
66
|
-
private AIController _parentAIController;
|
|
67
|
-
|
|
68
|
-
// Only include components in parents, Unity by default includes sibling components in the GetComponentsInParent call
|
|
69
|
-
[ParentComponent(onlyAncestors = true)]
|
|
70
|
-
private Transform [] _allParentTransforms; // Works with arrays!
|
|
71
|
-
|
|
72
|
-
[ParentComponent(includeInactive = false)] // Don't include inactive components
|
|
73
|
-
private List<PolygonCollider2> _parentColliders; // Works with lists!
|
|
74
|
-
|
|
75
|
-
[ChildComponent(onlyDescendents = true)] // Similar to GetComponentInChildren<EdgeCollider2D>(includeInactive: true)
|
|
76
|
-
private EdgeCollider2D _childEdgeCollider;
|
|
77
|
-
|
|
78
|
-
private void Awake()
|
|
79
|
-
{
|
|
80
|
-
/*
|
|
81
|
-
Make sure this is called somewhere, usually in Awake, OnEnable, or Start - wherever this is called,
|
|
82
|
-
values will be injected into the annotated fields and errors will be logged
|
|
83
|
-
*/
|
|
84
|
-
this.AssignRelationalComponents();
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
# Random Number Generators
|
|
91
|
-
This package implements several high quality, seedable, and serializable random number generators. The best one (currently) is the PCG Random. This has been hidden behind the `PRNG.Instance` class, which is thread-safe. As the package evolves, the exact implementation of this may change.
|
|
92
|
-
|
|
93
|
-
All of these implement a custom [IRandom](./Runtime/Core/Random/IRandom.cs) interface with a significantly richer suite of methods than the standard .Net and Unity randoms offer.
|
|
94
|
-
|
|
95
|
-
To use:
|
|
96
|
-
|
|
97
|
-
```csharp
|
|
98
|
-
IRandom random = PRNG.Instance;
|
|
99
|
-
|
|
100
|
-
random.NextFloat(); // Something between 0.0f and 1.0f
|
|
101
|
-
random.NextDouble(); // Something between 0.0d and 1.0d
|
|
102
|
-
random.Next(); // Something between 0 and int.MaxValue
|
|
103
|
-
random.NextUint(); // Something between 0 and uint.MaxValue
|
|
104
|
-
|
|
105
|
-
int [] values = {1, 2, 3};
|
|
106
|
-
random.NextOf(values); // 1, 2, or 3
|
|
107
|
-
random.NextOf(Enumerable.Range(0, 3)); // 1, 2, or 3
|
|
108
|
-
HashSet<int> setValues = new() {1, 2, 3};
|
|
109
|
-
random.NextOf(setValues); // 1, 2, or 3
|
|
110
|
-
|
|
111
|
-
random.NextGuid(); // A valid UUIDv4
|
|
112
|
-
random.NextGaussian(); // A value sampled from a gaussian curve around mean=0, stdDev=1 (configurable via parameters)
|
|
113
|
-
random.NextEnum<T>(); // A randomly selected enum of type T
|
|
114
|
-
|
|
115
|
-
int width = 100;
|
|
116
|
-
int height = 100;
|
|
117
|
-
random.NextNoiseMap(width, height); // A configurable noise map generated using random octave offsets
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## Implemented Random Number Generators
|
|
121
|
-
- PCG
|
|
122
|
-
- DotNet (uses the currently implemented .Net Random)
|
|
123
|
-
- RomoDuo
|
|
124
|
-
- SplitMix64
|
|
125
|
-
- Squirrel
|
|
126
|
-
- System (uses a port of the Windows .Net Random)
|
|
127
|
-
- Unity (uses Unity's random under the hood)
|
|
128
|
-
- Wy
|
|
129
|
-
- XorShift
|
|
130
|
-
- XorShiro
|
|
131
|
-
|
|
132
|
-
## Performance (Number of Operations / Second)
|
|
133
|
-
|
|
134
|
-
| Random | NextBool | Next | NextUInt | NextFloat | NextDouble | NextUint - Range | NextInt - Range |
|
|
135
|
-
| ------ | -------- | ---- | -------- | --------- | ---------- | ---------------- | --------------- |
|
|
136
|
-
| PcgRandom | 34,260,478 | 34,303,866 | 35,148,246 | 24,818,438 | 30,034,632 |22,436,474 |20,801,797 |
|
|
137
|
-
| SystemRandom | 28,698,806 | 30,040,782 | 20,435,092 | 24,079,399 | 27,284,147 |20,735,769 |19,861,780 |
|
|
138
|
-
| SquirrelRandom | 33,285,784 | 33,439,909 | 34,611,893 | 23,885,731 | 28,958,725 |21,520,279 |20,311,372 |
|
|
139
|
-
| XorShiftRandom | 34,695,989 | 35,147,320 | 35,997,718 | 25,248,238 | 31,582,991 |22,679,928 |21,255,319 |
|
|
140
|
-
| DotNetRandom | 18,097,489 | 18,191,042 | 18,783,063 | 14,061,444 | 15,730,439 |13,284,050 |12,596,913 |
|
|
141
|
-
| WyRandom | 28,490,852 | 29,086,052 | 29,724,907 | 20,252,065 | 24,542,201 |18,474,790 |17,404,641 |
|
|
142
|
-
| SplitMix64 | 34,301,843 | 34,343,404 | 35,512,284 | 24,289,416 | 30,586,231 |22,470,330 |20,850,965 |
|
|
143
|
-
| RomuDuo | 32,969,889 | 33,413,212 | 34,339,227 | 23,755,059 | 29,483,136 |21,671,641 |20,253,479 |
|
|
144
|
-
| XorShiroRandom | 31,529,025 | 31,717,709 | 32,536,277 | 22,421,715 | 27,619,417 |20,843,993 |19,270,063 |
|
|
145
|
-
| UnityRandom | 24,925,268 | 24,830,594 | 26,429,283 | 17,864,528 | 21,206,384 |16,376,626 |15,528,972 |
|
|
146
|
-
| LinearCongruentialGenerator | 35,013,818 | 35,025,182 | 35,843,533 | 25,093,401 | 31,553,487 |22,579,798 |21,211,175 |
|
|
147
|
-
|
|
148
|
-
# Spatial Trees
|
|
149
|
-
There are three implemented 2D immutable spatial trees that can store generic objects, as long as there is some resolution function that can convert them into Vector2 spatial positions.
|
|
150
|
-
|
|
151
|
-
- QuadTree (easiest to use)
|
|
152
|
-
- KDTree
|
|
153
|
-
- RTree
|
|
154
|
-
|
|
155
|
-
Spatial trees, after construction, allow for O(log(n)) spatial query time instead of O(n). They are extremely useful if you need repeated spatial queries, or if you have relatively static spatial data.
|
|
156
|
-
|
|
157
|
-
## Usage
|
|
158
|
-
|
|
159
|
-
```csharp
|
|
160
|
-
GameObject [] spatialStorage = { myCoolGameObject };
|
|
161
|
-
QuadTree<GameObject> quadTree = new(spatialStorage, go => go.transform.position);
|
|
162
|
-
|
|
163
|
-
// Might return your object, might not
|
|
164
|
-
GameObject [] inBounds = quadTree.GetElementsInBounds(new Bounds(0, 0, 100, 100));
|
|
165
|
-
|
|
166
|
-
// Uses a "good-enough" nearest-neighbor approximately for cheap neighbors
|
|
167
|
-
List<GameObject> nearestNeighbors = new();
|
|
168
|
-
quadTree.GetApproximateNearestNeighbors(myCoolGameObject.transform.position, 1, nearestNeighbors);
|
|
169
|
-
Assert.AreEqual(1, nearestNeighbors.Count);
|
|
170
|
-
Assert.AreEqual(myCoolGameObject, nearestNeighbors[0]);
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
## Note
|
|
174
|
-
All spatial trees expect the positional data to be *immutable*. It is very important that the positions do not change. If they do, you will need to reconstruct the tree.
|
|
175
|
-
|
|
176
|
-
## Contributing
|
|
177
|
-
|
|
1
|
+
# A Grab-Bag
|
|
2
|
+
Various Unity Helpers. Includes many deterministic, seedable random number generators.
|
|
3
|
+
|
|
4
|
+
# CI/CD Status
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
# Compatibility
|
|
8
|
+
| Platform | Compatible |
|
|
9
|
+
| --- | --- |
|
|
10
|
+
| Unity 2021 | Likely, but untested |
|
|
11
|
+
| Unity 2022 | ✓ |
|
|
12
|
+
| Unity 2023 | ✓ |
|
|
13
|
+
| Unity 6 | ✓ |
|
|
14
|
+
| URP | ✓ |
|
|
15
|
+
| HDRP | ✓ |
|
|
16
|
+
|
|
17
|
+
# Installation
|
|
18
|
+
|
|
19
|
+
## To Install as Unity Package
|
|
20
|
+
1. Open Unity Package Manager
|
|
21
|
+
2. (Optional) Enable Pre-release packages to get the latest, cutting-edge builds
|
|
22
|
+
3. Open the Advanced Package Settings
|
|
23
|
+
4. Add an entry for a new "Scoped Registry"
|
|
24
|
+
- Name: `NPM`
|
|
25
|
+
- URL: `https://registry.npmjs.org`
|
|
26
|
+
- Scope(s): `com.wallstop-studios.unity-helpers`
|
|
27
|
+
5. Resolve the latest `com.wallstop-studios.unity-helpers`
|
|
28
|
+
|
|
29
|
+
## From Source
|
|
30
|
+
Grab a copy of this repo (either `git clone` or [download a zip of the source](https://github.com/wallstop/unity-helpers/archive/refs/heads/main.zip)) and copy the contents to your project's `Assets` folder.
|
|
31
|
+
|
|
32
|
+
## From Releases
|
|
33
|
+
Check out the latest [Releases](https://github.com/wallstop/unity-helpers/releases) to grab the Unity Package and import to your project.
|
|
34
|
+
|
|
35
|
+
# Package Contents
|
|
36
|
+
- Random Number Generators
|
|
37
|
+
- Spatial Trees
|
|
38
|
+
- Protobuf, Binary, and JSON formatting
|
|
39
|
+
- A resizable CyclicBuffer
|
|
40
|
+
- Simple single-threaded thread pool
|
|
41
|
+
- A LayeredImage for use with Unity's UI Toolkit
|
|
42
|
+
- Geometry Helpers
|
|
43
|
+
- Child/Parent/Sibling Attributes to automatically get components
|
|
44
|
+
- ReadOnly attribute to disable editing of serialized properties in the inspector
|
|
45
|
+
- An extensive collection of helpers
|
|
46
|
+
- Simple math functions including a generic Range
|
|
47
|
+
- Common buffers to reduce allocations
|
|
48
|
+
- A RuntimeSingleton implementation for automatic creation/accessing of singletons
|
|
49
|
+
- String helpers, like converting to PascalCase, like Unity does for variable names in the inspector
|
|
50
|
+
- A randomizable PerlinNoise implementation
|
|
51
|
+
- And more!
|
|
52
|
+
|
|
53
|
+
# Auto Get(Parent/Sibling/Child)Component
|
|
54
|
+
Are you tired of constantly writing GetComponent<T>() all over the place? Waste time no more!
|
|
55
|
+
|
|
56
|
+
```csharp
|
|
57
|
+
public sealed class MyCoolScript : MonoBehaviour
|
|
58
|
+
{
|
|
59
|
+
[SiblingComponent] // If it doesn't exist, will log an error
|
|
60
|
+
private SpriteRenderer _spriteRenderer;
|
|
61
|
+
|
|
62
|
+
[SiblingComponent(optional = true)] // Ok if it doesn't exist, no errors logged
|
|
63
|
+
private BoxCollider2D _boxCollider;
|
|
64
|
+
|
|
65
|
+
[ParentComponent] // Similar to GetComponentInParent<AIController>(includeInactive: true)
|
|
66
|
+
private AIController _parentAIController;
|
|
67
|
+
|
|
68
|
+
// Only include components in parents, Unity by default includes sibling components in the GetComponentsInParent call
|
|
69
|
+
[ParentComponent(onlyAncestors = true)]
|
|
70
|
+
private Transform [] _allParentTransforms; // Works with arrays!
|
|
71
|
+
|
|
72
|
+
[ParentComponent(includeInactive = false)] // Don't include inactive components
|
|
73
|
+
private List<PolygonCollider2> _parentColliders; // Works with lists!
|
|
74
|
+
|
|
75
|
+
[ChildComponent(onlyDescendents = true)] // Similar to GetComponentInChildren<EdgeCollider2D>(includeInactive: true)
|
|
76
|
+
private EdgeCollider2D _childEdgeCollider;
|
|
77
|
+
|
|
78
|
+
private void Awake()
|
|
79
|
+
{
|
|
80
|
+
/*
|
|
81
|
+
Make sure this is called somewhere, usually in Awake, OnEnable, or Start - wherever this is called,
|
|
82
|
+
values will be injected into the annotated fields and errors will be logged
|
|
83
|
+
*/
|
|
84
|
+
this.AssignRelationalComponents();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
# Random Number Generators
|
|
91
|
+
This package implements several high quality, seedable, and serializable random number generators. The best one (currently) is the PCG Random. This has been hidden behind the `PRNG.Instance` class, which is thread-safe. As the package evolves, the exact implementation of this may change.
|
|
92
|
+
|
|
93
|
+
All of these implement a custom [IRandom](./Runtime/Core/Random/IRandom.cs) interface with a significantly richer suite of methods than the standard .Net and Unity randoms offer.
|
|
94
|
+
|
|
95
|
+
To use:
|
|
96
|
+
|
|
97
|
+
```csharp
|
|
98
|
+
IRandom random = PRNG.Instance;
|
|
99
|
+
|
|
100
|
+
random.NextFloat(); // Something between 0.0f and 1.0f
|
|
101
|
+
random.NextDouble(); // Something between 0.0d and 1.0d
|
|
102
|
+
random.Next(); // Something between 0 and int.MaxValue
|
|
103
|
+
random.NextUint(); // Something between 0 and uint.MaxValue
|
|
104
|
+
|
|
105
|
+
int [] values = {1, 2, 3};
|
|
106
|
+
random.NextOf(values); // 1, 2, or 3
|
|
107
|
+
random.NextOf(Enumerable.Range(0, 3)); // 1, 2, or 3
|
|
108
|
+
HashSet<int> setValues = new() {1, 2, 3};
|
|
109
|
+
random.NextOf(setValues); // 1, 2, or 3
|
|
110
|
+
|
|
111
|
+
random.NextGuid(); // A valid UUIDv4
|
|
112
|
+
random.NextGaussian(); // A value sampled from a gaussian curve around mean=0, stdDev=1 (configurable via parameters)
|
|
113
|
+
random.NextEnum<T>(); // A randomly selected enum of type T
|
|
114
|
+
|
|
115
|
+
int width = 100;
|
|
116
|
+
int height = 100;
|
|
117
|
+
random.NextNoiseMap(width, height); // A configurable noise map generated using random octave offsets
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Implemented Random Number Generators
|
|
121
|
+
- PCG
|
|
122
|
+
- DotNet (uses the currently implemented .Net Random)
|
|
123
|
+
- RomoDuo
|
|
124
|
+
- SplitMix64
|
|
125
|
+
- Squirrel
|
|
126
|
+
- System (uses a port of the Windows .Net Random)
|
|
127
|
+
- Unity (uses Unity's random under the hood)
|
|
128
|
+
- Wy
|
|
129
|
+
- XorShift
|
|
130
|
+
- XorShiro
|
|
131
|
+
|
|
132
|
+
## Performance (Number of Operations / Second)
|
|
133
|
+
|
|
134
|
+
| Random | NextBool | Next | NextUInt | NextFloat | NextDouble | NextUint - Range | NextInt - Range |
|
|
135
|
+
| ------ | -------- | ---- | -------- | --------- | ---------- | ---------------- | --------------- |
|
|
136
|
+
| PcgRandom | 34,260,478 | 34,303,866 | 35,148,246 | 24,818,438 | 30,034,632 |22,436,474 |20,801,797 |
|
|
137
|
+
| SystemRandom | 28,698,806 | 30,040,782 | 20,435,092 | 24,079,399 | 27,284,147 |20,735,769 |19,861,780 |
|
|
138
|
+
| SquirrelRandom | 33,285,784 | 33,439,909 | 34,611,893 | 23,885,731 | 28,958,725 |21,520,279 |20,311,372 |
|
|
139
|
+
| XorShiftRandom | 34,695,989 | 35,147,320 | 35,997,718 | 25,248,238 | 31,582,991 |22,679,928 |21,255,319 |
|
|
140
|
+
| DotNetRandom | 18,097,489 | 18,191,042 | 18,783,063 | 14,061,444 | 15,730,439 |13,284,050 |12,596,913 |
|
|
141
|
+
| WyRandom | 28,490,852 | 29,086,052 | 29,724,907 | 20,252,065 | 24,542,201 |18,474,790 |17,404,641 |
|
|
142
|
+
| SplitMix64 | 34,301,843 | 34,343,404 | 35,512,284 | 24,289,416 | 30,586,231 |22,470,330 |20,850,965 |
|
|
143
|
+
| RomuDuo | 32,969,889 | 33,413,212 | 34,339,227 | 23,755,059 | 29,483,136 |21,671,641 |20,253,479 |
|
|
144
|
+
| XorShiroRandom | 31,529,025 | 31,717,709 | 32,536,277 | 22,421,715 | 27,619,417 |20,843,993 |19,270,063 |
|
|
145
|
+
| UnityRandom | 24,925,268 | 24,830,594 | 26,429,283 | 17,864,528 | 21,206,384 |16,376,626 |15,528,972 |
|
|
146
|
+
| LinearCongruentialGenerator | 35,013,818 | 35,025,182 | 35,843,533 | 25,093,401 | 31,553,487 |22,579,798 |21,211,175 |
|
|
147
|
+
|
|
148
|
+
# Spatial Trees
|
|
149
|
+
There are three implemented 2D immutable spatial trees that can store generic objects, as long as there is some resolution function that can convert them into Vector2 spatial positions.
|
|
150
|
+
|
|
151
|
+
- QuadTree (easiest to use)
|
|
152
|
+
- KDTree
|
|
153
|
+
- RTree
|
|
154
|
+
|
|
155
|
+
Spatial trees, after construction, allow for O(log(n)) spatial query time instead of O(n). They are extremely useful if you need repeated spatial queries, or if you have relatively static spatial data.
|
|
156
|
+
|
|
157
|
+
## Usage
|
|
158
|
+
|
|
159
|
+
```csharp
|
|
160
|
+
GameObject [] spatialStorage = { myCoolGameObject };
|
|
161
|
+
QuadTree<GameObject> quadTree = new(spatialStorage, go => go.transform.position);
|
|
162
|
+
|
|
163
|
+
// Might return your object, might not
|
|
164
|
+
GameObject [] inBounds = quadTree.GetElementsInBounds(new Bounds(0, 0, 100, 100));
|
|
165
|
+
|
|
166
|
+
// Uses a "good-enough" nearest-neighbor approximately for cheap neighbors
|
|
167
|
+
List<GameObject> nearestNeighbors = new();
|
|
168
|
+
quadTree.GetApproximateNearestNeighbors(myCoolGameObject.transform.position, 1, nearestNeighbors);
|
|
169
|
+
Assert.AreEqual(1, nearestNeighbors.Count);
|
|
170
|
+
Assert.AreEqual(myCoolGameObject, nearestNeighbors[0]);
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Note
|
|
174
|
+
All spatial trees expect the positional data to be *immutable*. It is very important that the positions do not change. If they do, you will need to reconstruct the tree.
|
|
175
|
+
|
|
176
|
+
## Contributing
|
|
177
|
+
|
|
178
178
|
This project uses [CSharpier](https://csharpier.com/) with the default configuration to enable an enforced, consistent style. If you would like to contribute, recommendation is to ensure that changed files are ran through CSharpier prior to merge. This can be done automatically through editor plugins, or, minimally, by installing a [pre-commit hook](https://pre-commit.com/#3-install-the-git-hook-scripts).
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 0cdc22fbd8c5bc24bb39fdf9bc6ecfbe
|
|
3
|
-
PluginImporter:
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
serializedVersion: 2
|
|
6
|
-
iconMap: {}
|
|
7
|
-
executionOrder: {}
|
|
8
|
-
defineConstraints: []
|
|
9
|
-
isPreloaded: 0
|
|
10
|
-
isOverridable: 1
|
|
11
|
-
isExplicitlyReferenced: 0
|
|
12
|
-
validateReferences: 1
|
|
13
|
-
platformData:
|
|
14
|
-
- first:
|
|
15
|
-
Any:
|
|
16
|
-
second:
|
|
17
|
-
enabled: 1
|
|
18
|
-
settings: {}
|
|
19
|
-
- first:
|
|
20
|
-
Editor: Editor
|
|
21
|
-
second:
|
|
22
|
-
enabled: 0
|
|
23
|
-
settings:
|
|
24
|
-
DefaultValueInitialized: true
|
|
25
|
-
- first:
|
|
26
|
-
Windows Store Apps: WindowsStoreApps
|
|
27
|
-
second:
|
|
28
|
-
enabled: 0
|
|
29
|
-
settings:
|
|
30
|
-
CPU: AnyCPU
|
|
31
|
-
userData:
|
|
32
|
-
assetBundleName:
|
|
33
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 0cdc22fbd8c5bc24bb39fdf9bc6ecfbe
|
|
3
|
+
PluginImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
iconMap: {}
|
|
7
|
+
executionOrder: {}
|
|
8
|
+
defineConstraints: []
|
|
9
|
+
isPreloaded: 0
|
|
10
|
+
isOverridable: 1
|
|
11
|
+
isExplicitlyReferenced: 0
|
|
12
|
+
validateReferences: 1
|
|
13
|
+
platformData:
|
|
14
|
+
- first:
|
|
15
|
+
Any:
|
|
16
|
+
second:
|
|
17
|
+
enabled: 1
|
|
18
|
+
settings: {}
|
|
19
|
+
- first:
|
|
20
|
+
Editor: Editor
|
|
21
|
+
second:
|
|
22
|
+
enabled: 0
|
|
23
|
+
settings:
|
|
24
|
+
DefaultValueInitialized: true
|
|
25
|
+
- first:
|
|
26
|
+
Windows Store Apps: WindowsStoreApps
|
|
27
|
+
second:
|
|
28
|
+
enabled: 0
|
|
29
|
+
settings:
|
|
30
|
+
CPU: AnyCPU
|
|
31
|
+
userData:
|
|
32
|
+
assetBundleName:
|
|
33
|
+
assetBundleVariant:
|