com.wallstop-studios.unity-helpers 2.0.0-rc27 → 2.0.0-rc31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/.gitattributes +63 -63
  2. package/.github/workflows/npm-publish.yml +60 -0
  3. package/.github/workflows/unity-package.yml +101 -0
  4. package/.github/workflows/unity-tests.yml +38 -0
  5. package/Editor/AnimationCopier.cs +158 -158
  6. package/Editor/AnimationCopier.cs.meta +2 -2
  7. package/Editor/AnimationCreator.cs +262 -262
  8. package/Editor/AnimationCreator.cs.meta +11 -11
  9. package/Editor/AnimationEventEditor.cs +887 -887
  10. package/Editor/AnimatorControllerCopier.cs +162 -162
  11. package/Editor/AnimatorControllerCopier.cs.meta +2 -2
  12. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs +34 -34
  13. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs.meta +2 -2
  14. package/Editor/CustomEditors.meta +2 -2
  15. package/Editor/EnsureTextureSizeWizard.cs +110 -110
  16. package/Editor/EnsureTextureSizeWizard.cs.meta +2 -2
  17. package/Editor/PrefabCheckWizard.cs +165 -165
  18. package/Editor/PrefabCheckWizard.cs.meta +11 -11
  19. package/Editor/SpriteSettingsApplier.cs +168 -168
  20. package/Editor/SpriteSettingsApplier.cs.meta +2 -2
  21. package/Editor/StringInListeDrawer.cs +56 -56
  22. package/Editor/TextureResizerWizard.cs +181 -181
  23. package/Editor/TextureResizerWizard.cs.meta +2 -2
  24. package/Editor/TextureSettingsApplier.cs +171 -171
  25. package/Editor/TextureSettingsApplier.cs.meta +2 -2
  26. package/Editor/Utils/EditorUtilities.cs +22 -22
  27. package/Editor/Utils/EditorUtilities.cs.meta +11 -11
  28. package/Editor/Utils/ReadOnlyPropertyDrawer.cs +26 -26
  29. package/Editor/Utils/ReadOnlyPropertyDrawer.cs.meta +11 -11
  30. package/Editor/Utils.meta +8 -8
  31. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef +17 -17
  32. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef.meta +7 -7
  33. package/LICENSE +21 -21
  34. package/LICENSE.md +6 -6
  35. package/LICENSE.meta +7 -7
  36. package/README.md +117 -117
  37. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll.meta +33 -33
  38. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml +223 -223
  39. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml.meta +7 -7
  40. package/Runtime/Binaries/System.Text.Encodings.Web.dll.meta +33 -33
  41. package/Runtime/Binaries/System.Text.Encodings.Web.xml +935 -935
  42. package/Runtime/Binaries/System.Text.Encodings.Web.xml.meta +7 -7
  43. package/Runtime/Binaries/System.Text.Json.dll.meta +33 -33
  44. package/Runtime/Binaries/System.Text.Json.xml +4829 -4829
  45. package/Runtime/Binaries/System.Text.Json.xml.meta +7 -7
  46. package/Runtime/Binaries.meta +8 -8
  47. package/Runtime/Core/Attributes/AnimationEventAttribute.cs +131 -131
  48. package/Runtime/Core/Attributes/ChildComponentAttribute.cs +189 -189
  49. package/Runtime/Core/Attributes/KSerializableAttribute.cs +19 -19
  50. package/Runtime/Core/Attributes/NotNullAttribute.cs +32 -32
  51. package/Runtime/Core/Attributes/ParentComponent.cs +184 -184
  52. package/Runtime/Core/Attributes/ReadOnlyAttribute.cs +6 -6
  53. package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +14 -14
  54. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +119 -119
  55. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs.meta +11 -11
  56. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs +101 -101
  57. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs.meta +11 -11
  58. package/Runtime/Core/Attributes.meta +8 -8
  59. package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs +92 -92
  60. package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs +185 -185
  61. package/Runtime/Core/DataStructure/Adapters/KGuid.cs +305 -305
  62. package/Runtime/Core/DataStructure/Adapters/KVector2.cs +80 -80
  63. package/Runtime/Core/DataStructure/Circle.cs +50 -50
  64. package/Runtime/Core/DataStructure/CyclicBuffer.cs +155 -155
  65. package/Runtime/Core/DataStructure/ISpatialTree.cs +60 -60
  66. package/Runtime/Core/DataStructure/ISpatialTree.cs.meta +11 -11
  67. package/Runtime/Core/DataStructure/KDTree.cs +290 -290
  68. package/Runtime/Core/DataStructure/KDTree.cs.meta +11 -11
  69. package/Runtime/Core/DataStructure/QuadTree.cs +279 -279
  70. package/Runtime/Core/DataStructure/RTree.cs +336 -336
  71. package/Runtime/Core/DataStructure/RTree.cs.meta +11 -11
  72. package/Runtime/Core/DataStructure/StringWrapper.cs +91 -91
  73. package/Runtime/Core/DataStructure/TimedCache.cs +51 -51
  74. package/Runtime/Core/Extension/AnimatorExtensions.cs +25 -25
  75. package/Runtime/Core/Extension/CircleExtensions.cs +25 -25
  76. package/Runtime/Core/Extension/ColorExtensions.cs +338 -338
  77. package/Runtime/Core/Extension/DictionaryExtensions.cs +251 -251
  78. package/Runtime/Core/Extension/DirectionExtensions.cs +213 -213
  79. package/Runtime/Core/Extension/HashSetExtensions.cs +12 -12
  80. package/Runtime/Core/Extension/IEnumerableExtensions.cs +122 -122
  81. package/Runtime/Core/Extension/IListExtensions.cs +89 -89
  82. package/Runtime/Core/Extension/LoggingExtensions.cs +258 -258
  83. package/Runtime/Core/Extension/RandomExtensions.cs +109 -109
  84. package/Runtime/Core/Extension/StringExtensions.cs +151 -151
  85. package/Runtime/Core/Extension/UnityExtensions.cs +1607 -1607
  86. package/Runtime/Core/Helper/ArrayConverter.cs +39 -39
  87. package/Runtime/Core/Helper/ArrayConverter.cs.meta +2 -2
  88. package/Runtime/Core/Helper/AssignUtilities.cs +14 -14
  89. package/Runtime/Core/Helper/AssignUtilities.cs.meta +11 -11
  90. package/Runtime/Core/Helper/Enumerables.cs +17 -17
  91. package/Runtime/Core/Helper/Geometry.cs +43 -43
  92. package/Runtime/Core/Helper/Helpers.cs +722 -722
  93. package/Runtime/Core/Helper/Helpers.cs.meta +11 -11
  94. package/Runtime/Core/Helper/IterationHelpers.cs +32 -32
  95. package/Runtime/Core/Helper/IterationHelpers.cs.meta +11 -11
  96. package/Runtime/Core/Helper/LifetimeHelpers.cs +13 -13
  97. package/Runtime/Core/Helper/Objects.cs +767 -767
  98. package/Runtime/Core/Helper/Partials/LogHelpers.cs +13 -13
  99. package/Runtime/Core/Helper/Partials/LogHelpers.cs.meta +2 -2
  100. package/Runtime/Core/Helper/Partials/MathHelpers.cs +30 -30
  101. package/Runtime/Core/Helper/Partials/MathHelpers.cs.meta +2 -2
  102. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +388 -388
  103. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs.meta +2 -2
  104. package/Runtime/Core/Helper/Partials/TransformHelpers.cs +167 -167
  105. package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +2 -2
  106. package/Runtime/Core/Helper/Partials.meta +2 -2
  107. package/Runtime/Core/Helper/ReflectionHelpers.cs +152 -152
  108. package/Runtime/Core/Helper/ReflectionHelpers.cs.meta +2 -2
  109. package/Runtime/Core/Helper/SpriteHelpers.cs +86 -86
  110. package/Runtime/Core/Helper/SpriteHelpers.cs.meta +11 -11
  111. package/Runtime/Core/Helper/StringInList.cs +31 -31
  112. package/Runtime/Core/Helper/StringInList.cs.meta +11 -11
  113. package/Runtime/Core/Helper/WallMath.cs +166 -166
  114. package/Runtime/Core/Math/Line.cs +55 -55
  115. package/Runtime/Core/Math/Parabola.cs +47 -47
  116. package/Runtime/Core/Math/PointPolygonCheck.cs +36 -36
  117. package/Runtime/Core/Math/PointPolygonCheck.cs.meta +11 -11
  118. package/Runtime/Core/Math/Range.cs +92 -92
  119. package/Runtime/Core/Math/XXHash.cs +310 -310
  120. package/Runtime/Core/Math/XXHash.cs.meta +11 -11
  121. package/Runtime/Core/Model/Direction.cs +43 -43
  122. package/Runtime/Core/OneOf/FastOneOf.cs +152 -152
  123. package/Runtime/Core/OneOf/None.cs +4 -4
  124. package/Runtime/Core/Random/AbstractRandom.cs +561 -561
  125. package/Runtime/Core/Random/DotNetRandom.cs +52 -52
  126. package/Runtime/Core/Random/DotNetRandom.cs.meta +2 -2
  127. package/Runtime/Core/Random/IRandom.cs +160 -160
  128. package/Runtime/Core/Random/NativePcgRandom.cs +97 -97
  129. package/Runtime/Core/Random/PRNG.cs +7 -7
  130. package/Runtime/Core/Random/PRNG.cs.meta +2 -2
  131. package/Runtime/Core/Random/PcgRandom.cs +149 -149
  132. package/Runtime/Core/Random/PerlinNoise.cs +369 -369
  133. package/Runtime/Core/Random/PerlinNoise.cs.meta +2 -2
  134. package/Runtime/Core/Random/RandomState.cs +131 -131
  135. package/Runtime/Core/Random/RandomUtilities.cs +26 -26
  136. package/Runtime/Core/Random/RandomUtilities.cs.meta +11 -11
  137. package/Runtime/Core/Random/RomuDuo.cs +116 -116
  138. package/Runtime/Core/Random/RomuDuo.cs.meta +2 -2
  139. package/Runtime/Core/Random/SplitMix64.cs +94 -94
  140. package/Runtime/Core/Random/SplitMix64.cs.meta +2 -2
  141. package/Runtime/Core/Random/SquirrelRandom.cs +84 -84
  142. package/Runtime/Core/Random/SystemRandom.cs +162 -162
  143. package/Runtime/Core/Random/ThreadLocalRandom.cs +12 -12
  144. package/Runtime/Core/Random/UnityRandom.cs +57 -57
  145. package/Runtime/Core/Random/UnityRandom.cs.meta +11 -11
  146. package/Runtime/Core/Random/WyRandom.cs +121 -121
  147. package/Runtime/Core/Random/WyRandom.cs.meta +2 -2
  148. package/Runtime/Core/Random/XorShiftRandom.cs +47 -47
  149. package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -11
  150. package/Runtime/Core/Random/XorShiroRandom.cs +117 -117
  151. package/Runtime/Core/Random/XorShiroRandom.cs.meta +2 -2
  152. package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +74 -74
  153. package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +81 -81
  154. package/Runtime/Core/Serialization/Serializer.cs +184 -184
  155. package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +107 -107
  156. package/Runtime/Protobuf-Net/System.Buffers.dll.meta +33 -33
  157. package/Runtime/Protobuf-Net/System.Collections.Immutable.dll.meta +33 -33
  158. package/Runtime/Protobuf-Net/System.Collections.Immutable.xml +5379 -5379
  159. package/Runtime/Protobuf-Net/System.Collections.Immutable.xml.meta +7 -7
  160. package/Runtime/Protobuf-Net/System.Numerics.Vectors.dll.meta +33 -33
  161. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll.meta +33 -33
  162. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml +290 -290
  163. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml.meta +7 -7
  164. package/Runtime/Protobuf-Net/protobuf-net.Core.dll.meta +33 -33
  165. package/Runtime/Protobuf-Net/protobuf-net.dll.meta +33 -33
  166. package/Runtime/UI/LayeredImage.cs +364 -364
  167. package/Runtime/UI/LayeredImage.cs.meta +2 -2
  168. package/Runtime/UI.meta +2 -2
  169. package/Runtime/Utils/AnimationEventEqualityComparer.cs +161 -161
  170. package/Runtime/Utils/AnimatorEnumStateMachine.cs +88 -88
  171. package/Runtime/Utils/Buffers.cs +32 -32
  172. package/Runtime/Utils/CenterPointOffset.cs +30 -30
  173. package/Runtime/Utils/CenterPointOffset.cs.meta +2 -2
  174. package/Runtime/Utils/CircleLineRenderer.cs +134 -134
  175. package/Runtime/Utils/CoroutineHandler.cs +4 -4
  176. package/Runtime/Utils/CoroutineHandler.cs.meta +2 -2
  177. package/Runtime/Utils/MatchColliderToSprite.cs +94 -94
  178. package/Runtime/Utils/MatchColliderToSprite.cs.meta +2 -2
  179. package/Runtime/Utils/Oscillator.cs +27 -27
  180. package/Runtime/Utils/RuntimeSingleton.cs +57 -57
  181. package/Runtime/Utils/RuntimeSingleton.cs.meta +11 -11
  182. package/Runtime/Utils/SetTextureImportData.cs +69 -69
  183. package/Runtime/Utils/SpriteRendererMetadata.cs +312 -312
  184. package/Runtime/Utils/SpriteRendererMetadata.cs.meta +2 -2
  185. package/Runtime/Utils/SpriteRendererSyncer.cs +100 -100
  186. package/Runtime/Utils/SpriteRendererSyncer.cs.meta +2 -2
  187. package/Runtime/Utils/TextureScale.cs +179 -179
  188. package/Runtime/Utils/TextureScale.cs.meta +2 -2
  189. package/Runtime/WallstopStudios.UnityHelpers.asmdef +13 -13
  190. package/Tests/Runtime/Attributes/ChildComponentTests.cs +81 -81
  191. package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs +28 -28
  192. package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs +28 -28
  193. package/Tests/Runtime/Attributes/ParentComponentTests.cs +68 -68
  194. package/Tests/Runtime/Components/RelationalComponentTester.cs +34 -34
  195. package/Tests/Runtime/Components/RelationalComponentTester.cs.meta +2 -2
  196. package/Tests/Runtime/Components.meta +2 -2
  197. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs +14 -14
  198. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs.meta +11 -11
  199. package/Tests/Runtime/DataStructures/CyclicBufferTests.cs +324 -324
  200. package/Tests/Runtime/DataStructures/QuadTreeTests.cs +14 -14
  201. package/Tests/Runtime/DataStructures/QuadTreeTests.cs.meta +11 -11
  202. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs +130 -130
  203. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs.meta +11 -11
  204. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs +14 -14
  205. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs.meta +11 -11
  206. package/Tests/Runtime/DataStructures.meta +8 -8
  207. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs +439 -439
  208. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs.meta +2 -2
  209. package/Tests/Runtime/Extensions/IListExtensionTests.cs +76 -76
  210. package/Tests/Runtime/Extensions/RandomExtensionTests.cs +27 -27
  211. package/Tests/Runtime/Extensions/RandomExtensionTests.cs.meta +2 -2
  212. package/Tests/Runtime/Extensions/StringExtensionTests.cs +31 -31
  213. package/Tests/Runtime/Extensions/StringExtensionTests.cs.meta +2 -2
  214. package/Tests/Runtime/Extensions.meta +2 -2
  215. package/Tests/Runtime/Helper/ArrayConverterTests.cs +19 -19
  216. package/Tests/Runtime/Helper/ArrayConverterTests.cs.meta +2 -2
  217. package/Tests/Runtime/Helper/ObjectHelperTests.cs +402 -402
  218. package/Tests/Runtime/Helper/ObjectHelperTests.cs.meta +2 -2
  219. package/Tests/Runtime/Helper/WallMathTests.cs +233 -233
  220. package/Tests/Runtime/Helper/WallMathTests.cs.meta +2 -2
  221. package/Tests/Runtime/Helper.meta +2 -2
  222. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs +14 -14
  223. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs.meta +11 -11
  224. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs +14 -14
  225. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs.meta +11 -11
  226. package/Tests/Runtime/Performance/RandomPerformanceTests.cs +139 -139
  227. package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -11
  228. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +37 -37
  229. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +2 -2
  230. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs +154 -154
  231. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs.meta +11 -11
  232. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs +14 -14
  233. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs.meta +11 -11
  234. package/Tests/Runtime/Performance.meta +8 -8
  235. package/Tests/Runtime/Random/DotNetRandomTests.cs +9 -9
  236. package/Tests/Runtime/Random/DotNetRandomTests.cs.meta +2 -2
  237. package/Tests/Runtime/Random/PcgRandomTests.cs +9 -9
  238. package/Tests/Runtime/Random/PcgRandomTests.cs.meta +11 -11
  239. package/Tests/Runtime/Random/RandomTestBase.cs +787 -787
  240. package/Tests/Runtime/Random/RandomTestBase.cs.meta +11 -11
  241. package/Tests/Runtime/Random/RomuDuoRandomTests.cs +9 -9
  242. package/Tests/Runtime/Random/RomuDuoRandomTests.cs.meta +2 -2
  243. package/Tests/Runtime/Random/SplitMix64RandomTests.cs +9 -9
  244. package/Tests/Runtime/Random/SplitMix64RandomTests.cs.meta +2 -2
  245. package/Tests/Runtime/Random/SquirrelRandomTests.cs +14 -14
  246. package/Tests/Runtime/Random/SquirrelRandomTests.cs.meta +11 -11
  247. package/Tests/Runtime/Random/SystemRandomTests.cs +10 -10
  248. package/Tests/Runtime/Random/SystemRandomTests.cs.meta +11 -11
  249. package/Tests/Runtime/Random/UnityRandomTests.cs +9 -9
  250. package/Tests/Runtime/Random/UnityRandomTests.cs.meta +11 -11
  251. package/Tests/Runtime/Random/WyRandomTests.cs +9 -9
  252. package/Tests/Runtime/Random/WyRandomTests.cs.meta +2 -2
  253. package/Tests/Runtime/Random/XorShiftRandomTests.cs +9 -9
  254. package/Tests/Runtime/Random/XorShiftRandomTests.cs.meta +11 -11
  255. package/Tests/Runtime/Random/XorShiroRandomTests.cs +9 -9
  256. package/Tests/Runtime/Random/XorShiroRandomTests.cs.meta +2 -2
  257. package/Tests/Runtime/Random.meta +8 -8
  258. package/Tests/Runtime/Serialization/JsonSerializationTest.cs +84 -84
  259. package/Tests/Runtime/Serialization/JsonSerializationTest.cs.meta +2 -2
  260. package/Tests/Runtime/Serialization.meta +2 -2
  261. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs +399 -399
  262. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs.meta +2 -2
  263. package/Tests/Runtime/Utils.meta +2 -2
  264. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef +22 -22
  265. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef.meta +7 -7
  266. package/Tests/Runtime.meta +8 -8
  267. package/package.json +38 -38
package/README.md CHANGED
@@ -1,118 +1,118 @@
1
- # A Grab-Bag
2
- Various Unity Helpers. Includes many deterministic, seedable random number generators.
3
-
4
- # Compatibility
5
- | Platform | Compatible |
6
- | --- | --- |
7
- | Unity 2021 | Likely, but untested |
8
- | Unity 2022 | ✓ |
9
- | Unity 2023 | ✓ |
10
- | Unity 6 | ✓ |
11
- | URP | ✓ |
12
- | HDRP | ✓ |
13
-
14
- # Installation
15
-
16
- ## To Install as Unity Package
17
- 1. Open Unity Package Manager
18
- 2. (Optional) Enable Pre-release packages to get the latest, cutting-edge builds
19
- 3. Open the Advanced Package Settings
20
- 4. Add an entry for a new "Scoped Registry"
21
- - Name: `NPM`
22
- - URL: `https://registry.npmjs.org`
23
- - Scope(s): `com.wallstop-studios.unity-helpers`
24
- 5. Resolve the latest `com.wallstop-studios.unity-helpers`
25
-
26
- ## From Source
27
- 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.
28
-
29
- ## From Releases
30
- Check out the latest [Releases](https://github.com/wallstop/unity-helpers/releases) to grab the Unity Package and import to your project.
31
-
32
- # Package Contents
33
- - Random Number Generators
34
- - Spatial Trees
35
- - Protobuf, Binary, and JSON formatting
36
- - A resizable CyclicBuffer
37
- - Simple single-threaded thread pool
38
- - A LayeredImage for use with Unity's UI Toolkit
39
- - Geometry Helpers
40
- - Child/Parent/Sibling Attributes to automatically get components
41
- - ReadOnly attribute to disable editing of serialized properties in the inspector
42
- - An extensive collection of helpers
43
- - Simple math functions including a generic Range
44
- - Common buffers to reduce allocations
45
- - A RuntimeSingleton implementation for automatic creation/accessing of singletons
46
- - String helpers, like converting to PascalCase, like Unity does for variable names in the inspector
47
- - A randomizable PerlinNoise implementation
48
- - And more!
49
-
50
- # Random Number Generators
51
- 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.
52
-
53
- 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.
54
-
55
- To use:
56
-
57
- ```csharp
58
- IRandom random = PRNG.Instance;
59
-
60
- random.NextFloat(); // Something between 0.0f and 1.0f
61
- random.NextDouble(); // Something between 0.0d and 1.0d
62
- random.Next(); // Something between 0 and int.MaxValue
63
- random.NextUint(); // Something between 0 and uint.MaxValue
64
-
65
- int [] values = {1, 2, 3};
66
- random.NextOf(values); // 1, 2, or 3
67
- random.NextOf(Enumerable.Range(0, 3)); // 1, 2, or 3
68
- HashSet<int> setValues = new() {1, 2, 3};
69
- random.NextOf(setValues); // 1, 2, or 3
70
-
71
- random.NextGuid(); // A valid UUIDv4
72
- random.NextGaussian(); // A value sampled from a gaussian curve around mean=0, stdDev=1 (configurable via parameters)
73
- random.NextEnum<T>(); // A randomly selected enum of type T
74
-
75
- int width = 100;
76
- int height = 100;
77
- random.NextNoiseMap(width, height); // A configurable noise map generated using random octave offsets
78
- ```
79
-
80
- ## Implemented Random Number Generators
81
- - PCG
82
- - DotNet (uses the currently implemented .Net Random)
83
- - RomoDuo
84
- - SplitMix64
85
- - Squirrel
86
- - System (uses a port of the Windows .Net Random)
87
- - Unity (uses Unity's random under the hood)
88
- - Wy
89
- - XorShift
90
- - XorShiro
91
-
92
- # Spatial Trees
93
- 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.
94
-
95
- - QuadTree (easiest to use)
96
- - KDTree
97
- - RTree
98
-
99
- 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.
100
-
101
- ## Usage
102
-
103
- ```csharp
104
- GameObject [] spatialStorage = { myCoolGameObject };
105
- QuadTree<GameObject> quadTree = new(spatialStorage, go => go.transform.position);
106
-
107
- // Might return your object, might not
108
- GameObject [] inBounds = quadTree.GetElementsInBounds(new Bounds(0, 0, 100, 100));
109
-
110
- // Uses a "good-enough" nearest-neighbor approximately for cheap neighbors
111
- List<GameObject> nearestNeighbors = new();
112
- quadTree.GetApproximateNearestNeighbors(myCoolGameObject.transform.position, 1, nearestNeighbors);
113
- Assert.AreEqual(1, nearestNeighbors.Count);
114
- Assert.AreEqual(myCoolGameObject, nearestNeighbors[0]);
115
- ```
116
-
117
- ## Note
1
+ # A Grab-Bag
2
+ Various Unity Helpers. Includes many deterministic, seedable random number generators.
3
+
4
+ # Compatibility
5
+ | Platform | Compatible |
6
+ | --- | --- |
7
+ | Unity 2021 | Likely, but untested |
8
+ | Unity 2022 | &check; |
9
+ | Unity 2023 | &check; |
10
+ | Unity 6 | &check; |
11
+ | URP | &check; |
12
+ | HDRP | &check; |
13
+
14
+ # Installation
15
+
16
+ ## To Install as Unity Package
17
+ 1. Open Unity Package Manager
18
+ 2. (Optional) Enable Pre-release packages to get the latest, cutting-edge builds
19
+ 3. Open the Advanced Package Settings
20
+ 4. Add an entry for a new "Scoped Registry"
21
+ - Name: `NPM`
22
+ - URL: `https://registry.npmjs.org`
23
+ - Scope(s): `com.wallstop-studios.unity-helpers`
24
+ 5. Resolve the latest `com.wallstop-studios.unity-helpers`
25
+
26
+ ## From Source
27
+ 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.
28
+
29
+ ## From Releases
30
+ Check out the latest [Releases](https://github.com/wallstop/unity-helpers/releases) to grab the Unity Package and import to your project.
31
+
32
+ # Package Contents
33
+ - Random Number Generators
34
+ - Spatial Trees
35
+ - Protobuf, Binary, and JSON formatting
36
+ - A resizable CyclicBuffer
37
+ - Simple single-threaded thread pool
38
+ - A LayeredImage for use with Unity's UI Toolkit
39
+ - Geometry Helpers
40
+ - Child/Parent/Sibling Attributes to automatically get components
41
+ - ReadOnly attribute to disable editing of serialized properties in the inspector
42
+ - An extensive collection of helpers
43
+ - Simple math functions including a generic Range
44
+ - Common buffers to reduce allocations
45
+ - A RuntimeSingleton implementation for automatic creation/accessing of singletons
46
+ - String helpers, like converting to PascalCase, like Unity does for variable names in the inspector
47
+ - A randomizable PerlinNoise implementation
48
+ - And more!
49
+
50
+ # Random Number Generators
51
+ 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.
52
+
53
+ 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.
54
+
55
+ To use:
56
+
57
+ ```csharp
58
+ IRandom random = PRNG.Instance;
59
+
60
+ random.NextFloat(); // Something between 0.0f and 1.0f
61
+ random.NextDouble(); // Something between 0.0d and 1.0d
62
+ random.Next(); // Something between 0 and int.MaxValue
63
+ random.NextUint(); // Something between 0 and uint.MaxValue
64
+
65
+ int [] values = {1, 2, 3};
66
+ random.NextOf(values); // 1, 2, or 3
67
+ random.NextOf(Enumerable.Range(0, 3)); // 1, 2, or 3
68
+ HashSet<int> setValues = new() {1, 2, 3};
69
+ random.NextOf(setValues); // 1, 2, or 3
70
+
71
+ random.NextGuid(); // A valid UUIDv4
72
+ random.NextGaussian(); // A value sampled from a gaussian curve around mean=0, stdDev=1 (configurable via parameters)
73
+ random.NextEnum<T>(); // A randomly selected enum of type T
74
+
75
+ int width = 100;
76
+ int height = 100;
77
+ random.NextNoiseMap(width, height); // A configurable noise map generated using random octave offsets
78
+ ```
79
+
80
+ ## Implemented Random Number Generators
81
+ - PCG
82
+ - DotNet (uses the currently implemented .Net Random)
83
+ - RomoDuo
84
+ - SplitMix64
85
+ - Squirrel
86
+ - System (uses a port of the Windows .Net Random)
87
+ - Unity (uses Unity's random under the hood)
88
+ - Wy
89
+ - XorShift
90
+ - XorShiro
91
+
92
+ # Spatial Trees
93
+ 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.
94
+
95
+ - QuadTree (easiest to use)
96
+ - KDTree
97
+ - RTree
98
+
99
+ 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.
100
+
101
+ ## Usage
102
+
103
+ ```csharp
104
+ GameObject [] spatialStorage = { myCoolGameObject };
105
+ QuadTree<GameObject> quadTree = new(spatialStorage, go => go.transform.position);
106
+
107
+ // Might return your object, might not
108
+ GameObject [] inBounds = quadTree.GetElementsInBounds(new Bounds(0, 0, 100, 100));
109
+
110
+ // Uses a "good-enough" nearest-neighbor approximately for cheap neighbors
111
+ List<GameObject> nearestNeighbors = new();
112
+ quadTree.GetApproximateNearestNeighbors(myCoolGameObject.transform.position, 1, nearestNeighbors);
113
+ Assert.AreEqual(1, nearestNeighbors.Count);
114
+ Assert.AreEqual(myCoolGameObject, nearestNeighbors[0]);
115
+ ```
116
+
117
+ ## Note
118
118
  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.
@@ -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: