com.wallstop-studios.unity-helpers 2.0.0-rc81.6 → 2.0.0-rc81.9

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 (1449) hide show
  1. package/.config/dotnet-tools.json +10 -10
  2. package/.csharpierignore +1 -0
  3. package/.csharpierrc.json +3 -0
  4. package/.editorconfig +184 -184
  5. package/.gitattributes +87 -63
  6. package/.githooks/pre-commit +49 -0
  7. package/.github/dependabot.yml +9 -9
  8. package/.github/workflows/csharpier.yml +135 -0
  9. package/.github/workflows/lint-doc-links.yml +27 -0
  10. package/.github/workflows/markdown-json.yml +41 -0
  11. package/.github/workflows/npm-publish.yml +75 -75
  12. package/.lychee.toml +26 -0
  13. package/.markdownlint.json +21 -0
  14. package/.markdownlintignore +8 -0
  15. package/.pre-commit-config.yaml +39 -22
  16. package/.prettierignore +22 -0
  17. package/.prettierrc.json +20 -0
  18. package/AGENTS.md +52 -0
  19. package/{Third Party Notices.md.meta → AGENTS.md.meta} +7 -7
  20. package/CHANGELOG.md.meta +7 -7
  21. package/DATA_STRUCTURES.md +324 -0
  22. package/DATA_STRUCTURES.md.meta +7 -0
  23. package/Docs/Images/attribute_resolution.svg +40 -0
  24. package/Docs/Images/attribute_resolution.svg.meta +7 -0
  25. package/Docs/Images/bitset.svg +47 -0
  26. package/Docs/Images/bitset.svg.meta +7 -0
  27. package/Docs/Images/concave_hull.svg +30 -0
  28. package/Docs/Images/concave_hull.svg.meta +7 -0
  29. package/Docs/Images/convex_hull.svg +29 -0
  30. package/Docs/Images/convex_hull.svg.meta +7 -0
  31. package/Docs/Images/cyclic_buffer.svg +37 -0
  32. package/Docs/Images/cyclic_buffer.svg.meta +7 -0
  33. package/Docs/Images/data_distribution_decision.svg +88 -0
  34. package/Docs/Images/data_distribution_decision.svg.meta +7 -0
  35. package/Docs/Images/deque.svg +64 -0
  36. package/Docs/Images/deque.svg.meta +7 -0
  37. package/Docs/Images/deque_queue.svg +107 -0
  38. package/Docs/Images/deque_queue.svg.meta +7 -0
  39. package/Docs/Images/disjoint_set.svg +47 -0
  40. package/Docs/Images/disjoint_set.svg.meta +7 -0
  41. package/Docs/Images/effects_pipeline.svg +59 -0
  42. package/Docs/Images/effects_pipeline.svg.meta +7 -0
  43. package/Docs/Images/geometry_edge_cases.svg +61 -0
  44. package/Docs/Images/geometry_edge_cases.svg.meta +7 -0
  45. package/Docs/Images/heap.svg +56 -0
  46. package/Docs/Images/heap.svg.meta +7 -0
  47. package/Docs/Images/kdtree_2d.svg +38 -0
  48. package/Docs/Images/kdtree_2d.svg.meta +7 -0
  49. package/Docs/Images/kdtree_3d.svg +83 -0
  50. package/Docs/Images/kdtree_3d.svg.meta +7 -0
  51. package/Docs/Images/octree_3d.svg +79 -0
  52. package/Docs/Images/octree_3d.svg.meta +7 -0
  53. package/Docs/Images/polyline_simplify.svg +18 -0
  54. package/Docs/Images/polyline_simplify.svg.meta +7 -0
  55. package/Docs/Images/quadtree_2d.svg +37 -0
  56. package/Docs/Images/quadtree_2d.svg.meta +7 -0
  57. package/Docs/Images/query_boundaries.svg +38 -0
  58. package/Docs/Images/query_boundaries.svg.meta +7 -0
  59. package/Docs/Images/random_generators.svg +105 -0
  60. package/Docs/Images/random_generators.svg.meta +7 -0
  61. package/Docs/Images/reflection_scan.svg +33 -0
  62. package/Docs/Images/reflection_scan.svg.meta +7 -0
  63. package/Docs/Images/relational_wiring.svg +75 -0
  64. package/Docs/Images/relational_wiring.svg.meta +7 -0
  65. package/Docs/Images/rtree_2d.svg +27 -0
  66. package/Docs/Images/rtree_2d.svg.meta +7 -0
  67. package/Docs/Images/rtree_3d.svg +79 -0
  68. package/Docs/Images/rtree_3d.svg.meta +7 -0
  69. package/Docs/Images/serialization_flow.svg +50 -0
  70. package/Docs/Images/serialization_flow.svg.meta +7 -0
  71. package/Docs/Images/singletons_lifecycle.svg +54 -0
  72. package/Docs/Images/singletons_lifecycle.svg.meta +7 -0
  73. package/Docs/Images/sparse_set.svg +54 -0
  74. package/Docs/Images/sparse_set.svg.meta +7 -0
  75. package/Docs/Images/trie.svg +55 -0
  76. package/Docs/Images/trie.svg.meta +7 -0
  77. package/Docs/Images.meta +8 -0
  78. package/Docs.meta +8 -0
  79. package/EDITOR_TOOLS_GUIDE.md +1976 -0
  80. package/EDITOR_TOOLS_GUIDE.md.meta +7 -0
  81. package/EFFECTS_SYSTEM.md +242 -0
  82. package/EFFECTS_SYSTEM.md.meta +7 -0
  83. package/EFFECTS_SYSTEM_TUTORIAL.md +467 -0
  84. package/EFFECTS_SYSTEM_TUTORIAL.md.meta +7 -0
  85. package/Editor/AnimationEventEditor.cs +1393 -874
  86. package/Editor/AnimationEventEditor.cs.meta +11 -11
  87. package/Editor/AssemblyInfo.cs +4 -0
  88. package/Editor/AssemblyInfo.cs.meta +3 -0
  89. package/Editor/AssetProcessors/SpriteLabelProcessor.cs +138 -111
  90. package/Editor/AssetProcessors/SpriteLabelProcessor.cs.meta +2 -2
  91. package/Editor/AssetProcessors.meta +2 -2
  92. package/Editor/Core/Helper/AnimationEventHelpers.cs +204 -0
  93. package/{Runtime/Core/DataStructure/ISpatialTree.cs.meta → Editor/Core/Helper/AnimationEventHelpers.cs.meta} +11 -11
  94. package/Editor/Core/Helper.meta +8 -0
  95. package/Editor/Core.meta +8 -0
  96. package/Editor/CustomDrawers/IntDropdownDrawer.cs +46 -46
  97. package/Editor/CustomDrawers/IntDropdownDrawer.cs.meta +2 -2
  98. package/Editor/CustomDrawers/StringInListeDrawer.cs +135 -135
  99. package/Editor/CustomDrawers/StringInListeDrawer.cs.meta +2 -2
  100. package/Editor/CustomDrawers/WShowIfPropertyDrawer.cs +105 -105
  101. package/Editor/CustomDrawers/WShowIfPropertyDrawer.cs.meta +2 -2
  102. package/Editor/CustomDrawers.meta +2 -2
  103. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs +32 -32
  104. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs.meta +2 -2
  105. package/Editor/CustomEditors/PersistentDirectoryGUI.cs +799 -799
  106. package/Editor/CustomEditors/PersistentDirectoryGUI.cs.meta +2 -2
  107. package/Editor/CustomEditors/PolygonCollider2DOptimizerEditor.cs +38 -40
  108. package/Editor/CustomEditors/PolygonCollider2DOptimizerEditor.cs.meta +2 -2
  109. package/Editor/CustomEditors/SourceFolderEntryDrawer.cs +685 -413
  110. package/Editor/CustomEditors/SourceFolderEntryDrawer.cs.meta +2 -2
  111. package/Editor/CustomEditors/TexturePlatformOverrideEntryDrawer.cs +146 -0
  112. package/{Runtime/Core/DataStructure/KDTree.cs.meta → Editor/CustomEditors/TexturePlatformOverrideEntryDrawer.cs.meta} +11 -11
  113. package/Editor/CustomEditors.meta +2 -2
  114. package/Editor/Extensions/SerializedPropertyExtensions.cs +217 -190
  115. package/Editor/Extensions/SerializedPropertyExtensions.cs.meta +2 -2
  116. package/Editor/Extensions/UnityExtensions.cs +50 -26
  117. package/Editor/Extensions/UnityExtensions.cs.meta +2 -2
  118. package/Editor/Extensions.meta +2 -2
  119. package/Editor/FitTextureSizeWindow.cs +785 -332
  120. package/Editor/FitTextureSizeWindow.cs.meta +2 -2
  121. package/Editor/Persistence/MultiFileSelectorPersistenceManager.cs +62 -0
  122. package/{Runtime/Core/DataStructure/QuadTree.cs.meta → Editor/Persistence/MultiFileSelectorPersistenceManager.cs.meta} +11 -11
  123. package/Editor/Persistence/MultiFileSelectorPersistenceWindow.cs +65 -0
  124. package/Editor/Persistence/MultiFileSelectorPersistenceWindow.cs.meta +11 -0
  125. package/Editor/Persistence.meta +8 -0
  126. package/Editor/PersistentDirectorySettings.cs +529 -248
  127. package/Editor/PersistentDirectorySettings.cs.meta +2 -2
  128. package/Editor/PrefabChecker.cs +1329 -741
  129. package/Editor/PrefabChecker.cs.meta +11 -11
  130. package/Editor/Sprites/AnimationCopier.cs +1518 -789
  131. package/Editor/Sprites/AnimationCopier.cs.meta +2 -2
  132. package/Editor/Sprites/AnimationCreator.cs +1532 -881
  133. package/Editor/Sprites/AnimationCreator.cs.meta +11 -11
  134. package/Editor/Sprites/AnimationViewerWindow.cs +1634 -1522
  135. package/Editor/Sprites/AnimationViewerWindow.cs.meta +2 -2
  136. package/Editor/Sprites/ScriptableSpriteAtlas.cs +251 -178
  137. package/Editor/Sprites/ScriptableSpriteAtlas.cs.meta +2 -2
  138. package/Editor/Sprites/ScriptableSpriteAtlasEditor.cs +1470 -1026
  139. package/Editor/Sprites/ScriptableSpriteAtlasEditor.cs.meta +2 -2
  140. package/Editor/Sprites/SpriteCropper.cs +1013 -523
  141. package/Editor/Sprites/SpriteCropper.cs.meta +2 -2
  142. package/Editor/Sprites/SpritePivotAdjustor.cs +605 -265
  143. package/Editor/Sprites/SpritePivotAdjustor.cs.meta +2 -2
  144. package/Editor/Sprites/SpriteSettingsApplier.cs +942 -918
  145. package/Editor/Sprites/SpriteSettingsApplier.cs.meta +2 -2
  146. package/Editor/Sprites/SpriteSettingsApplierAPI.cs +441 -0
  147. package/Editor/Sprites/SpriteSettingsApplierAPI.cs.meta +11 -0
  148. package/Editor/Sprites/SpriteSettingsProfileCollection.cs +12 -0
  149. package/Editor/Sprites/SpriteSettingsProfileCollection.cs.meta +11 -0
  150. package/Editor/Sprites/SpriteSheetAnimationCreator.cs +1586 -1537
  151. package/Editor/Sprites/SpriteSheetAnimationCreator.cs.meta +2 -2
  152. package/Editor/Sprites/TexturePlatformNameHelper.cs +78 -0
  153. package/Editor/Sprites/TexturePlatformNameHelper.cs.meta +11 -0
  154. package/Editor/Sprites/TextureResizerWizard.cs +434 -175
  155. package/Editor/Sprites/TextureResizerWizard.cs.meta +2 -2
  156. package/Editor/Sprites/TextureSettingsApplierAPI.cs +359 -0
  157. package/Editor/Sprites/TextureSettingsApplierAPI.cs.meta +11 -0
  158. package/Editor/Sprites/TextureSettingsApplierWindow.cs +605 -0
  159. package/Editor/Sprites/TextureSettingsApplierWindow.cs.meta +11 -0
  160. package/Editor/Sprites.meta +2 -2
  161. package/Editor/Styles/AnimationViewer.uss +115 -115
  162. package/Editor/Styles/AnimationViewer.uss.meta +2 -2
  163. package/Editor/Styles/AnimationViewer.uxml +56 -56
  164. package/Editor/Styles/AnimationViewer.uxml.meta +2 -2
  165. package/Editor/Styles/SpriteSheetAnimationCreator.uss +10 -0
  166. package/Editor/Styles/SpriteSheetAnimationCreator.uss.meta +11 -0
  167. package/Editor/Styles.meta +2 -2
  168. package/Editor/Tags/AttributeMetadataCacheEditor.cs +46 -0
  169. package/Editor/Tags/AttributeMetadataCacheEditor.cs.meta +11 -0
  170. package/Editor/Tags/AttributeMetadataCacheGenerator.cs +258 -0
  171. package/Editor/Tags/AttributeMetadataCacheGenerator.cs.meta +11 -0
  172. package/Editor/Tags.meta +8 -0
  173. package/Editor/Tools/ImageBlurTool.cs +451 -409
  174. package/Editor/Tools/ImageBlurTool.cs.meta +2 -2
  175. package/Editor/Tools.meta +2 -2
  176. package/Editor/Utils/DxReadOnlyPropertyDrawer.cs +26 -26
  177. package/Editor/Utils/DxReadOnlyPropertyDrawer.cs.meta +11 -11
  178. package/Editor/Utils/EditorUi.cs +228 -0
  179. package/Editor/Utils/EditorUi.cs.meta +11 -0
  180. package/Editor/Utils/EditorUtilities.cs +22 -22
  181. package/Editor/Utils/EditorUtilities.cs.meta +11 -11
  182. package/Editor/Utils/ScriptableObjectSingletonCreator.cs +633 -52
  183. package/Editor/Utils/ScriptableObjectSingletonCreator.cs.meta +2 -2
  184. package/Editor/Utils.meta +8 -8
  185. package/Editor/Visuals/EnhancedImageEditor.cs +160 -160
  186. package/Editor/Visuals/EnhancedImageEditor.cs.meta +11 -11
  187. package/Editor/Visuals.meta +2 -2
  188. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef +14 -18
  189. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef.meta +7 -7
  190. package/Editor.meta +8 -8
  191. package/GETTING_STARTED.md +425 -0
  192. package/GETTING_STARTED.md.meta +7 -0
  193. package/GLOSSARY.md +313 -0
  194. package/GLOSSARY.md.meta +7 -0
  195. package/HULLS.md +45 -0
  196. package/HULLS.md.meta +7 -0
  197. package/INDEX.md +429 -0
  198. package/INDEX.md.meta +7 -0
  199. package/LICENSE +21 -21
  200. package/LICENSE.md +7 -7
  201. package/LICENSE.md.meta +7 -7
  202. package/LICENSE.meta +7 -7
  203. package/MATH_AND_EXTENSIONS.md +316 -0
  204. package/MATH_AND_EXTENSIONS.md.meta +7 -0
  205. package/RANDOM_PERFORMANCE.md +140 -0
  206. package/RANDOM_PERFORMANCE.md.meta +7 -0
  207. package/README.md +3195 -188
  208. package/README.md.meta +7 -7
  209. package/REFLECTION_HELPERS.md +272 -0
  210. package/REFLECTION_HELPERS.md.meta +7 -0
  211. package/RELATIONAL_COMPONENTS.md +543 -0
  212. package/RELATIONAL_COMPONENTS.md.meta +7 -0
  213. package/Runtime/AssemblyInfo.cs +7 -0
  214. package/Runtime/AssemblyInfo.cs.meta +11 -0
  215. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll +0 -0
  216. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll.meta +33 -33
  217. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml +499 -278
  218. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml.meta +7 -7
  219. package/Runtime/Binaries/System.IO.Pipelines.dll +0 -0
  220. package/Runtime/Binaries/System.IO.Pipelines.dll.meta +33 -0
  221. package/Runtime/Binaries/System.IO.Pipelines.xml +702 -0
  222. package/Runtime/Binaries/System.IO.Pipelines.xml.meta +7 -0
  223. package/Runtime/Binaries/System.Text.Encodings.Web.dll +0 -0
  224. package/Runtime/Binaries/System.Text.Encodings.Web.dll.meta +33 -33
  225. package/Runtime/Binaries/System.Text.Encodings.Web.xml +1084 -1079
  226. package/Runtime/Binaries/System.Text.Encodings.Web.xml.meta +7 -7
  227. package/Runtime/Binaries/System.Text.Json.dll +0 -0
  228. package/Runtime/Binaries/System.Text.Json.dll.meta +33 -33
  229. package/Runtime/Binaries/System.Text.Json.xml +10217 -8116
  230. package/Runtime/Binaries/System.Text.Json.xml.meta +7 -7
  231. package/Runtime/Binaries.meta +8 -8
  232. package/Runtime/Core/Attributes/AnimationEventAttribute.cs +10 -138
  233. package/Runtime/Core/Attributes/AnimationEventAttribute.cs.meta +11 -11
  234. package/Runtime/Core/Attributes/BaseRelationalComponentAttribute.cs +841 -0
  235. package/Runtime/Core/Attributes/BaseRelationalComponentAttribute.cs.meta +11 -0
  236. package/Runtime/Core/Attributes/ChildComponentAttribute.cs +284 -226
  237. package/Runtime/Core/Attributes/ChildComponentAttribute.cs.meta +11 -11
  238. package/Runtime/Core/Attributes/DxReadOnlyAttribute.cs +6 -6
  239. package/Runtime/Core/Attributes/DxReadOnlyAttribute.cs.meta +11 -11
  240. package/Runtime/Core/Attributes/EnumDisplayNameAttribute.cs +15 -15
  241. package/Runtime/Core/Attributes/EnumDisplayNameAttribute.cs.meta +2 -2
  242. package/Runtime/Core/Attributes/IRelationalComponentAssigner.cs +36 -0
  243. package/Runtime/Core/Attributes/IRelationalComponentAssigner.cs.meta +11 -0
  244. package/Runtime/Core/Attributes/IntDropdownAttribute.cs +14 -14
  245. package/Runtime/Core/Attributes/IntDropdownAttribute.cs.meta +2 -2
  246. package/Runtime/Core/Attributes/KSerializableAttribute.cs +19 -19
  247. package/Runtime/Core/Attributes/KSerializableAttribute.cs.meta +11 -11
  248. package/Runtime/Core/Attributes/NotNullAttribute.cs +32 -32
  249. package/Runtime/Core/Attributes/NotNullAttribute.cs.meta +11 -11
  250. package/Runtime/Core/Attributes/ParentComponentAttribute.cs +376 -0
  251. package/Runtime/Core/Attributes/{ParentComponent.cs.meta → ParentComponentAttribute.cs.meta} +11 -11
  252. package/Runtime/Core/Attributes/RelationalComponentAssigner.cs +107 -0
  253. package/Runtime/Core/Attributes/RelationalComponentAssigner.cs.meta +11 -0
  254. package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +61 -14
  255. package/Runtime/Core/Attributes/RelationalComponentExtensions.cs.meta +11 -11
  256. package/Runtime/Core/Attributes/RelationalComponentInitializer.cs +331 -0
  257. package/Runtime/Core/Attributes/RelationalComponentInitializer.cs.meta +11 -0
  258. package/Runtime/Core/Attributes/ScriptableSingletonPathAttribute.cs +15 -15
  259. package/Runtime/Core/Attributes/ScriptableSingletonPathAttribute.cs.meta +2 -2
  260. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +264 -137
  261. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs.meta +11 -11
  262. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs +115 -106
  263. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs.meta +11 -11
  264. package/Runtime/Core/Attributes/ValueHelpers.cs +10 -0
  265. package/Runtime/Core/Attributes/ValueHelpers.cs.meta +3 -0
  266. package/Runtime/Core/Attributes/WShowIfAttribute.cs +24 -24
  267. package/Runtime/Core/Attributes/WShowIfAttribute.cs.meta +2 -2
  268. package/Runtime/Core/Attributes.meta +8 -8
  269. package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs +192 -92
  270. package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs.meta +11 -11
  271. package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs +268 -185
  272. package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs.meta +11 -11
  273. package/Runtime/Core/DataStructure/Adapters/KGuid.cs +360 -305
  274. package/Runtime/Core/DataStructure/Adapters/KGuid.cs.meta +11 -11
  275. package/Runtime/Core/DataStructure/Adapters/KVector2.cs +146 -80
  276. package/Runtime/Core/DataStructure/Adapters/KVector2.cs.meta +11 -11
  277. package/Runtime/Core/DataStructure/Adapters.meta +8 -8
  278. package/Runtime/Core/DataStructure/BitSet.cs +626 -0
  279. package/Runtime/Core/DataStructure/BitSet.cs.meta +11 -0
  280. package/Runtime/Core/DataStructure/BoundingBox3D.cs +405 -0
  281. package/Runtime/Core/DataStructure/BoundingBox3D.cs.meta +11 -0
  282. package/Runtime/Core/DataStructure/Circle.cs +203 -50
  283. package/Runtime/Core/DataStructure/Circle.cs.meta +11 -11
  284. package/Runtime/Core/DataStructure/CyclicBuffer.cs +489 -266
  285. package/Runtime/Core/DataStructure/CyclicBuffer.cs.meta +11 -11
  286. package/Runtime/Core/DataStructure/Deque.cs +561 -0
  287. package/Runtime/Core/DataStructure/Deque.cs.meta +11 -0
  288. package/Runtime/Core/DataStructure/DisjointSet.cs +483 -0
  289. package/Runtime/Core/DataStructure/DisjointSet.cs.meta +11 -0
  290. package/Runtime/Core/DataStructure/Heap.cs +514 -0
  291. package/Runtime/Core/DataStructure/Heap.cs.meta +11 -0
  292. package/Runtime/Core/DataStructure/{ISpatialTree.cs → ISpatialTree2D.cs} +25 -21
  293. package/Runtime/Core/DataStructure/ISpatialTree2D.cs.meta +11 -0
  294. package/Runtime/Core/DataStructure/ISpatialTree3D.cs +33 -0
  295. package/Runtime/Core/DataStructure/ISpatialTree3D.cs.meta +11 -0
  296. package/Runtime/Core/DataStructure/ImmutableBitSet.cs +398 -0
  297. package/Runtime/Core/DataStructure/ImmutableBitSet.cs.meta +3 -0
  298. package/Runtime/Core/DataStructure/KDTree2D.cs +852 -0
  299. package/Runtime/Core/DataStructure/KDTree2D.cs.meta +11 -0
  300. package/Runtime/Core/DataStructure/KDTree3D.cs +911 -0
  301. package/Runtime/Core/DataStructure/KDTree3D.cs.meta +11 -0
  302. package/Runtime/Core/DataStructure/OctTree3D.cs +983 -0
  303. package/Runtime/Core/DataStructure/OctTree3D.cs.meta +11 -0
  304. package/Runtime/Core/DataStructure/PriorityQueue.cs +194 -0
  305. package/Runtime/Core/DataStructure/PriorityQueue.cs.meta +11 -0
  306. package/Runtime/Core/DataStructure/QuadTree2D.cs +722 -0
  307. package/Runtime/Core/DataStructure/QuadTree2D.cs.meta +11 -0
  308. package/Runtime/Core/DataStructure/RTree2D.cs +704 -0
  309. package/Runtime/Core/DataStructure/{RTree.cs.meta → RTree2D.cs.meta} +11 -11
  310. package/Runtime/Core/DataStructure/RTree3D.cs +775 -0
  311. package/Runtime/Core/DataStructure/RTree3D.cs.meta +11 -0
  312. package/Runtime/Core/DataStructure/SparseSet.cs +597 -0
  313. package/Runtime/Core/DataStructure/SparseSet.cs.meta +11 -0
  314. package/Runtime/Core/DataStructure/SpatialHash2D.cs +312 -0
  315. package/Runtime/Core/DataStructure/SpatialHash2D.cs.meta +3 -0
  316. package/Runtime/Core/DataStructure/SpatialHash3D.cs +341 -0
  317. package/Runtime/Core/DataStructure/SpatialHash3D.cs.meta +11 -0
  318. package/Runtime/Core/DataStructure/Sphere.cs +264 -0
  319. package/Runtime/Core/DataStructure/Sphere.cs.meta +11 -0
  320. package/Runtime/Core/DataStructure/StringWrapper.cs +115 -91
  321. package/Runtime/Core/DataStructure/StringWrapper.cs.meta +11 -11
  322. package/Runtime/Core/DataStructure/TimedCache.cs +88 -66
  323. package/Runtime/Core/DataStructure/TimedCache.cs.meta +11 -11
  324. package/Runtime/Core/DataStructure/Trie.cs +660 -359
  325. package/Runtime/Core/DataStructure/Trie.cs.meta +2 -2
  326. package/Runtime/Core/DataStructure.meta +8 -8
  327. package/Runtime/Core/Extension/AnimatorExtensions.cs +40 -25
  328. package/Runtime/Core/Extension/AnimatorExtensions.cs.meta +11 -11
  329. package/Runtime/Core/Extension/AsyncOperationExtensions.cs +404 -110
  330. package/Runtime/Core/Extension/AsyncOperationExtensions.cs.meta +2 -2
  331. package/Runtime/Core/Extension/CircleExtensions.cs +125 -25
  332. package/Runtime/Core/Extension/CircleExtensions.cs.meta +11 -11
  333. package/Runtime/Core/Extension/ColorExtensions.cs +983 -644
  334. package/Runtime/Core/Extension/ColorExtensions.cs.meta +11 -11
  335. package/Runtime/Core/Extension/DictionaryExtensions.cs +606 -299
  336. package/Runtime/Core/Extension/DictionaryExtensions.cs.meta +11 -11
  337. package/Runtime/Core/Extension/DirectionExtensions.cs +377 -213
  338. package/Runtime/Core/Extension/DirectionExtensions.cs.meta +11 -11
  339. package/Runtime/Core/Extension/EnumExtensions.cs +535 -137
  340. package/Runtime/Core/Extension/EnumExtensions.cs.meta +2 -2
  341. package/Runtime/Core/Extension/IEnumerableExtensions.cs +341 -124
  342. package/Runtime/Core/Extension/IEnumerableExtensions.cs.meta +11 -11
  343. package/Runtime/Core/Extension/IListExtensions.cs +767 -248
  344. package/Runtime/Core/Extension/IListExtensions.cs.meta +11 -11
  345. package/Runtime/Core/Extension/IReadonlyListExtensions.cs +687 -37
  346. package/Runtime/Core/Extension/IReadonlyListExtensions.cs.meta +2 -2
  347. package/Runtime/Core/Extension/ProtoEqualityExtensions.cs +292 -0
  348. package/Runtime/Core/Extension/ProtoEqualityExtensions.cs.meta +3 -0
  349. package/Runtime/Core/Extension/RandomExtensions.cs +938 -109
  350. package/Runtime/Core/Extension/RandomExtensions.cs.meta +11 -11
  351. package/Runtime/Core/Extension/StringExtensions.cs +1635 -239
  352. package/Runtime/Core/Extension/StringExtensions.cs.meta +11 -11
  353. package/Runtime/Core/Extension/UnityExtensions.cs +4555 -1689
  354. package/Runtime/Core/Extension/UnityExtensions.cs.meta +11 -11
  355. package/Runtime/Core/Extension/WallstopStudiosLogger.cs +271 -245
  356. package/Runtime/Core/Extension/WallstopStudiosLogger.cs.meta +11 -11
  357. package/Runtime/Core/Extension.meta +8 -8
  358. package/Runtime/Core/Helper/ArrayConverter.cs +73 -39
  359. package/Runtime/Core/Helper/ArrayConverter.cs.meta +2 -2
  360. package/Runtime/Core/Helper/AssignUtilities.cs +33 -14
  361. package/Runtime/Core/Helper/AssignUtilities.cs.meta +11 -11
  362. package/Runtime/Core/Helper/DirectoryHelper.cs +210 -196
  363. package/Runtime/Core/Helper/DirectoryHelper.cs.meta +2 -2
  364. package/Runtime/Core/Helper/Enumerables.cs +51 -17
  365. package/Runtime/Core/Helper/Enumerables.cs.meta +11 -11
  366. package/Runtime/Core/Helper/FileHelper.cs +97 -77
  367. package/Runtime/Core/Helper/FileHelper.cs.meta +2 -2
  368. package/Runtime/Core/Helper/FormattingHelpers.cs +49 -38
  369. package/Runtime/Core/Helper/FormattingHelpers.cs.meta +2 -2
  370. package/Runtime/Core/Helper/FuncBasedComparer.cs +29 -0
  371. package/Runtime/Core/Helper/FuncBasedComparer.cs.meta +3 -0
  372. package/Runtime/Core/Helper/Geometry.cs +65 -43
  373. package/Runtime/Core/Helper/Geometry.cs.meta +11 -11
  374. package/Runtime/Core/Helper/Helpers.cs +1271 -831
  375. package/Runtime/Core/Helper/Helpers.cs.meta +11 -11
  376. package/Runtime/Core/Helper/IterationHelpers.cs +83 -32
  377. package/Runtime/Core/Helper/IterationHelpers.cs.meta +11 -11
  378. package/Runtime/Core/Helper/LifetimeHelpers.cs +20 -13
  379. package/Runtime/Core/Helper/LifetimeHelpers.cs.meta +11 -11
  380. package/Runtime/Core/Helper/LineHelper.cs +259 -194
  381. package/Runtime/Core/Helper/LineHelper.cs.meta +2 -2
  382. package/Runtime/Core/Helper/Logging/UnityLogTagFormatter.cs +549 -539
  383. package/Runtime/Core/Helper/Logging/UnityLogTagFormatter.cs.meta +2 -2
  384. package/Runtime/Core/Helper/Logging.meta +2 -2
  385. package/Runtime/Core/Helper/Objects.cs +477 -769
  386. package/Runtime/Core/Helper/Objects.cs.meta +11 -11
  387. package/Runtime/Core/Helper/Partials/LogHelpers.cs +13 -13
  388. package/Runtime/Core/Helper/Partials/LogHelpers.cs.meta +2 -2
  389. package/Runtime/Core/Helper/Partials/MathHelpers.cs +45 -30
  390. package/Runtime/Core/Helper/Partials/MathHelpers.cs.meta +2 -2
  391. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +506 -400
  392. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs.meta +2 -2
  393. package/Runtime/Core/Helper/Partials/TransformHelpers.cs +393 -377
  394. package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +2 -2
  395. package/Runtime/Core/Helper/Partials.meta +2 -2
  396. package/Runtime/Core/Helper/PathHelper.cs +42 -15
  397. package/Runtime/Core/Helper/PathHelper.cs.meta +2 -2
  398. package/Runtime/Core/Helper/ReflectionHelpers.cs +5287 -1963
  399. package/Runtime/Core/Helper/ReflectionHelpers.cs.meta +2 -2
  400. package/Runtime/Core/Helper/ReverseComparer.cs +33 -0
  401. package/Runtime/Core/Helper/ReverseComparer.cs.meta +3 -0
  402. package/Runtime/Core/Helper/SceneHelper.cs +251 -224
  403. package/Runtime/Core/Helper/SceneHelper.cs.meta +2 -2
  404. package/Runtime/Core/Helper/SpriteHelpers.cs +50 -41
  405. package/Runtime/Core/Helper/SpriteHelpers.cs.meta +11 -11
  406. package/Runtime/Core/Helper/StringInList.cs +61 -35
  407. package/Runtime/Core/Helper/StringInList.cs.meta +11 -11
  408. package/Runtime/Core/Helper/TestAssemblyHelper.cs +134 -0
  409. package/Runtime/Core/Helper/TestAssemblyHelper.cs.meta +11 -0
  410. package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs +100 -82
  411. package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs.meta +2 -2
  412. package/Runtime/Core/Helper/WallMath.cs +672 -166
  413. package/Runtime/Core/Helper/WallMath.cs.meta +11 -11
  414. package/Runtime/Core/Helper.meta +8 -8
  415. package/Runtime/Core/Math/Line2D.cs +263 -0
  416. package/Runtime/Core/Math/Line2D.cs.meta +11 -0
  417. package/Runtime/Core/Math/Line3D.cs +452 -0
  418. package/Runtime/Core/Math/Line3D.cs.meta +11 -0
  419. package/Runtime/Core/Math/Parabola.cs +241 -47
  420. package/Runtime/Core/Math/Parabola.cs.meta +11 -11
  421. package/Runtime/Core/Math/PointPolygonCheck.cs +175 -36
  422. package/Runtime/Core/Math/PointPolygonCheck.cs.meta +11 -11
  423. package/Runtime/Core/Math/Range.cs +157 -92
  424. package/Runtime/Core/Math/Range.cs.meta +11 -11
  425. package/Runtime/Core/Math.meta +8 -8
  426. package/Runtime/Core/Model/Direction.cs +25 -43
  427. package/Runtime/Core/Model/Direction.cs.meta +11 -11
  428. package/Runtime/Core/Model.meta +8 -8
  429. package/Runtime/Core/OneOf/FastOneOf.cs +252 -152
  430. package/Runtime/Core/OneOf/FastOneOf.cs.meta +11 -11
  431. package/Runtime/Core/OneOf/FastOneOf2.cs +198 -0
  432. package/Runtime/Core/OneOf/FastOneOf2.cs.meta +11 -0
  433. package/Runtime/Core/OneOf/FastOneOf4.cs +324 -0
  434. package/Runtime/Core/OneOf/FastOneOf4.cs.meta +11 -0
  435. package/Runtime/Core/OneOf/None.cs +30 -4
  436. package/Runtime/Core/OneOf/None.cs.meta +11 -11
  437. package/Runtime/Core/OneOf.meta +8 -8
  438. package/Runtime/Core/Random/AbstractRandom.cs +1318 -655
  439. package/Runtime/Core/Random/AbstractRandom.cs.meta +11 -11
  440. package/Runtime/Core/Random/DotNetRandom.cs +118 -54
  441. package/Runtime/Core/Random/DotNetRandom.cs.meta +2 -2
  442. package/Runtime/Core/Random/IRandom.cs +203 -161
  443. package/Runtime/Core/Random/IRandom.cs.meta +11 -11
  444. package/Runtime/Core/Random/IllusionFlow.cs +171 -107
  445. package/Runtime/Core/Random/IllusionFlow.cs.meta +2 -2
  446. package/Runtime/Core/Random/LinearCongruentialGenerator.cs +90 -49
  447. package/Runtime/Core/Random/LinearCongruentialGenerator.cs.meta +2 -2
  448. package/Runtime/Core/Random/NativePcgRandom.cs +139 -97
  449. package/Runtime/Core/Random/NativePcgRandom.cs.meta +11 -11
  450. package/Runtime/Core/Random/PRNG.cs +21 -7
  451. package/Runtime/Core/Random/PRNG.cs.meta +2 -2
  452. package/Runtime/Core/Random/PcgRandom.cs +243 -149
  453. package/Runtime/Core/Random/PcgRandom.cs.meta +11 -11
  454. package/Runtime/Core/Random/PerlinNoise.cs +369 -369
  455. package/Runtime/Core/Random/PerlinNoise.cs.meta +2 -2
  456. package/Runtime/Core/Random/RandomComparer.cs +34 -0
  457. package/Runtime/Core/Random/RandomComparer.cs.meta +3 -0
  458. package/Runtime/Core/Random/RandomState.cs +206 -131
  459. package/Runtime/Core/Random/RandomState.cs.meta +11 -11
  460. package/Runtime/Core/Random/RandomUtilities.cs +55 -26
  461. package/Runtime/Core/Random/RandomUtilities.cs.meta +11 -11
  462. package/Runtime/Core/Random/RomuDuo.cs +171 -116
  463. package/Runtime/Core/Random/RomuDuo.cs.meta +2 -2
  464. package/Runtime/Core/Random/SplitMix64.cs +134 -94
  465. package/Runtime/Core/Random/SplitMix64.cs.meta +2 -2
  466. package/Runtime/Core/Random/SquirrelRandom.cs +127 -84
  467. package/Runtime/Core/Random/SquirrelRandom.cs.meta +11 -11
  468. package/Runtime/Core/Random/SystemRandom.cs +203 -162
  469. package/Runtime/Core/Random/SystemRandom.cs.meta +11 -11
  470. package/Runtime/Core/Random/ThreadLocalRandom.cs +25 -12
  471. package/Runtime/Core/Random/ThreadLocalRandom.cs.meta +11 -11
  472. package/Runtime/Core/Random/UnityRandom.cs +109 -57
  473. package/Runtime/Core/Random/UnityRandom.cs.meta +11 -11
  474. package/Runtime/Core/Random/WyRandom.cs +158 -121
  475. package/Runtime/Core/Random/WyRandom.cs.meta +2 -2
  476. package/Runtime/Core/Random/XorShiftRandom.cs +106 -52
  477. package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -11
  478. package/Runtime/Core/Random/XoroShiroRandom.cs +184 -119
  479. package/Runtime/Core/Random/XoroShiroRandom.cs.meta +2 -2
  480. package/Runtime/Core/Random.meta +8 -8
  481. package/Runtime/Core/Serialization/JsonConverters/AnimationCurveConverter.cs +248 -0
  482. package/Runtime/Core/Serialization/JsonConverters/AnimationCurveConverter.cs.meta +11 -0
  483. package/Runtime/Core/Serialization/JsonConverters/BitSetConverter.cs +119 -0
  484. package/Runtime/Core/Serialization/JsonConverters/BitSetConverter.cs.meta +11 -0
  485. package/Runtime/Core/Serialization/JsonConverters/BoundingSphereConverter.cs +74 -0
  486. package/Runtime/Core/Serialization/JsonConverters/BoundingSphereConverter.cs.meta +11 -0
  487. package/Runtime/Core/Serialization/JsonConverters/BoundsConverter.cs +132 -0
  488. package/Runtime/Core/Serialization/JsonConverters/BoundsConverter.cs.meta +11 -0
  489. package/Runtime/Core/Serialization/JsonConverters/BoundsIntConverter.cs +135 -0
  490. package/Runtime/Core/Serialization/JsonConverters/BoundsIntConverter.cs.meta +11 -0
  491. package/Runtime/Core/Serialization/JsonConverters/Color32Converter.cs +98 -0
  492. package/Runtime/Core/Serialization/JsonConverters/Color32Converter.cs.meta +11 -0
  493. package/Runtime/Core/Serialization/JsonConverters/ColorBlockConverter.cs +123 -0
  494. package/Runtime/Core/Serialization/JsonConverters/ColorBlockConverter.cs.meta +11 -0
  495. package/Runtime/Core/Serialization/JsonConverters/ColorConverter.cs +88 -88
  496. package/Runtime/Core/Serialization/JsonConverters/ColorConverter.cs.meta +2 -2
  497. package/Runtime/Core/Serialization/JsonConverters/CyclicBufferConverterFactory.cs +112 -0
  498. package/Runtime/Core/Serialization/JsonConverters/CyclicBufferConverterFactory.cs.meta +11 -0
  499. package/Runtime/Core/Serialization/JsonConverters/DequeConverterFactory.cs +62 -0
  500. package/Runtime/Core/Serialization/JsonConverters/DequeConverterFactory.cs.meta +11 -0
  501. package/Runtime/Core/Serialization/JsonConverters/FastVector2IntConverter.cs +72 -0
  502. package/Runtime/Core/Serialization/JsonConverters/FastVector2IntConverter.cs.meta +11 -0
  503. package/Runtime/Core/Serialization/JsonConverters/FastVector3IntConverter.cs +80 -0
  504. package/Runtime/Core/Serialization/JsonConverters/FastVector3IntConverter.cs.meta +11 -0
  505. package/Runtime/Core/Serialization/JsonConverters/GameObjectConverter.cs +36 -36
  506. package/Runtime/Core/Serialization/JsonConverters/GameObjectConverter.cs.meta +2 -2
  507. package/Runtime/Core/Serialization/JsonConverters/GradientConverter.cs +245 -0
  508. package/Runtime/Core/Serialization/JsonConverters/GradientConverter.cs.meta +11 -0
  509. package/Runtime/Core/Serialization/JsonConverters/Hash128Converter.cs +92 -0
  510. package/Runtime/Core/Serialization/JsonConverters/Hash128Converter.cs.meta +11 -0
  511. package/Runtime/Core/Serialization/JsonConverters/ImmutableBitSetConverter.cs +119 -0
  512. package/Runtime/Core/Serialization/JsonConverters/ImmutableBitSetConverter.cs.meta +11 -0
  513. package/Runtime/Core/Serialization/JsonConverters/KVector2Converter.cs +72 -0
  514. package/Runtime/Core/Serialization/JsonConverters/KVector2Converter.cs.meta +11 -0
  515. package/Runtime/Core/Serialization/JsonConverters/LayerMaskConverter.cs +95 -0
  516. package/Runtime/Core/Serialization/JsonConverters/LayerMaskConverter.cs.meta +11 -0
  517. package/Runtime/Core/Serialization/JsonConverters/Matrix4x4Converter.cs +237 -218
  518. package/Runtime/Core/Serialization/JsonConverters/Matrix4x4Converter.cs.meta +2 -2
  519. package/Runtime/Core/Serialization/JsonConverters/MinMaxCurveConverter.cs +142 -0
  520. package/Runtime/Core/Serialization/JsonConverters/MinMaxCurveConverter.cs.meta +11 -0
  521. package/Runtime/Core/Serialization/JsonConverters/MinMaxGradientConverter.cs +135 -0
  522. package/Runtime/Core/Serialization/JsonConverters/MinMaxGradientConverter.cs.meta +11 -0
  523. package/Runtime/Core/Serialization/JsonConverters/PlaneConverter.cs +79 -0
  524. package/Runtime/Core/Serialization/JsonConverters/PlaneConverter.cs.meta +11 -0
  525. package/Runtime/Core/Serialization/JsonConverters/PoseConverter.cs +76 -0
  526. package/Runtime/Core/Serialization/JsonConverters/PoseConverter.cs.meta +11 -0
  527. package/Runtime/Core/Serialization/JsonConverters/QuaternionConverter.cs +88 -0
  528. package/Runtime/Core/Serialization/JsonConverters/QuaternionConverter.cs.meta +11 -0
  529. package/Runtime/Core/Serialization/JsonConverters/RangeConverterFactory.cs +106 -0
  530. package/Runtime/Core/Serialization/JsonConverters/RangeConverterFactory.cs.meta +11 -0
  531. package/Runtime/Core/Serialization/JsonConverters/RangeIntConverter.cs +71 -0
  532. package/Runtime/Core/Serialization/JsonConverters/RangeIntConverter.cs.meta +11 -0
  533. package/Runtime/Core/Serialization/JsonConverters/Ray2DConverter.cs +80 -0
  534. package/Runtime/Core/Serialization/JsonConverters/Ray2DConverter.cs.meta +11 -0
  535. package/Runtime/Core/Serialization/JsonConverters/RayConverter.cs +76 -0
  536. package/Runtime/Core/Serialization/JsonConverters/RayConverter.cs.meta +11 -0
  537. package/Runtime/Core/Serialization/JsonConverters/RaycastHitConverter.cs +115 -0
  538. package/Runtime/Core/Serialization/JsonConverters/RaycastHitConverter.cs.meta +11 -0
  539. package/Runtime/Core/Serialization/JsonConverters/RectConverter.cs +84 -0
  540. package/Runtime/Core/Serialization/JsonConverters/RectConverter.cs.meta +11 -0
  541. package/Runtime/Core/Serialization/JsonConverters/RectIntConverter.cs +88 -0
  542. package/Runtime/Core/Serialization/JsonConverters/RectIntConverter.cs.meta +11 -0
  543. package/Runtime/Core/Serialization/JsonConverters/RectOffsetConverter.cs +87 -0
  544. package/Runtime/Core/Serialization/JsonConverters/RectOffsetConverter.cs.meta +11 -0
  545. package/Runtime/Core/Serialization/JsonConverters/RenderTextureDescriptorConverter.cs +264 -0
  546. package/Runtime/Core/Serialization/JsonConverters/RenderTextureDescriptorConverter.cs.meta +11 -0
  547. package/Runtime/Core/Serialization/JsonConverters/ResolutionConverter.cs +158 -0
  548. package/Runtime/Core/Serialization/JsonConverters/ResolutionConverter.cs.meta +11 -0
  549. package/Runtime/Core/Serialization/JsonConverters/SceneConverter.cs +103 -0
  550. package/Runtime/Core/Serialization/JsonConverters/SceneConverter.cs.meta +11 -0
  551. package/Runtime/Core/Serialization/JsonConverters/SphericalHarmonicsL2Converter.cs +121 -0
  552. package/Runtime/Core/Serialization/JsonConverters/SphericalHarmonicsL2Converter.cs.meta +11 -0
  553. package/Runtime/Core/Serialization/JsonConverters/TouchConverter.cs +54 -0
  554. package/Runtime/Core/Serialization/JsonConverters/TouchConverter.cs.meta +11 -0
  555. package/Runtime/Core/Serialization/JsonConverters/TypeConverter.cs +30 -28
  556. package/Runtime/Core/Serialization/JsonConverters/TypeConverter.cs.meta +2 -2
  557. package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +72 -74
  558. package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs.meta +11 -11
  559. package/Runtime/Core/Serialization/JsonConverters/Vector2IntConverter.cs +72 -0
  560. package/Runtime/Core/Serialization/JsonConverters/Vector2IntConverter.cs.meta +11 -0
  561. package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +80 -81
  562. package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs.meta +11 -11
  563. package/Runtime/Core/Serialization/JsonConverters/Vector3IntConverter.cs +80 -0
  564. package/Runtime/Core/Serialization/JsonConverters/Vector3IntConverter.cs.meta +11 -0
  565. package/Runtime/Core/Serialization/JsonConverters/Vector4Converter.cs +88 -88
  566. package/Runtime/Core/Serialization/JsonConverters/Vector4Converter.cs.meta +2 -2
  567. package/Runtime/Core/Serialization/JsonConverters.meta +8 -8
  568. package/Runtime/Core/Serialization/ProtobufUnitySurrogates.cs +383 -0
  569. package/Runtime/Core/Serialization/ProtobufUnitySurrogates.cs.meta +11 -0
  570. package/Runtime/Core/Serialization/Serializer.cs +2020 -195
  571. package/Runtime/Core/Serialization/Serializer.cs.meta +11 -11
  572. package/Runtime/Core/Serialization.meta +8 -8
  573. package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +228 -228
  574. package/Runtime/Core/Threading/SingleThreadedThreadPool.cs.meta +11 -11
  575. package/Runtime/Core/Threading.meta +8 -8
  576. package/Runtime/Core.meta +8 -8
  577. package/Runtime/Integrations/VContainer/ObjectResolverRelationalExtensions.cs +185 -0
  578. package/Runtime/Integrations/VContainer/ObjectResolverRelationalExtensions.cs.meta +11 -0
  579. package/Runtime/Integrations/VContainer/RelationalComponentEntryPoint.cs +109 -0
  580. package/Runtime/Integrations/VContainer/RelationalComponentEntryPoint.cs.meta +11 -0
  581. package/Runtime/Integrations/VContainer/RelationalComponentsBuilderExtensions.cs +78 -0
  582. package/Runtime/Integrations/VContainer/RelationalComponentsBuilderExtensions.cs.meta +11 -0
  583. package/Runtime/Integrations/VContainer/RelationalSceneAssignmentOptions.cs +83 -0
  584. package/Runtime/Integrations/VContainer/RelationalSceneAssignmentOptions.cs.meta +11 -0
  585. package/Runtime/Integrations/VContainer/WallstopStudios.UnityHelpers.Integration.VContainer.asmdef +30 -0
  586. package/Runtime/Integrations/VContainer/WallstopStudios.UnityHelpers.Integration.VContainer.asmdef.meta +7 -0
  587. package/Runtime/Integrations/VContainer.meta +8 -0
  588. package/Runtime/Integrations/Zenject/DiContainerRelationalExtensions.cs +180 -0
  589. package/Runtime/Integrations/Zenject/DiContainerRelationalExtensions.cs.meta +11 -0
  590. package/Runtime/Integrations/Zenject/RelationalComponentSceneInitializer.cs +105 -0
  591. package/Runtime/Integrations/Zenject/RelationalComponentSceneInitializer.cs.meta +11 -0
  592. package/Runtime/Integrations/Zenject/RelationalComponentsInstaller.cs +72 -0
  593. package/Runtime/Integrations/Zenject/RelationalComponentsInstaller.cs.meta +11 -0
  594. package/Runtime/Integrations/Zenject/RelationalSceneAssignmentOptions.cs +87 -0
  595. package/Runtime/Integrations/Zenject/RelationalSceneAssignmentOptions.cs.meta +11 -0
  596. package/Runtime/Integrations/Zenject/WallstopStudios.UnityHelpers.Integration.Zenject.asmdef +30 -0
  597. package/Runtime/Integrations/Zenject/WallstopStudios.UnityHelpers.Integration.Zenject.asmdef.meta +7 -0
  598. package/Runtime/Integrations/Zenject.meta +8 -0
  599. package/Runtime/Integrations.meta +8 -0
  600. package/Runtime/Protobuf-Net/System.Collections.Immutable.dll.meta +33 -33
  601. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll.meta +33 -33
  602. package/Runtime/Protobuf-Net/protobuf-net.Core.dll.meta +33 -33
  603. package/Runtime/Protobuf-Net/protobuf-net.dll.meta +33 -33
  604. package/Runtime/Protobuf-Net.meta +8 -8
  605. package/Runtime/Tags/AlwaysIncludeInAttributeMetadataCacheAttribute.cs +11 -0
  606. package/Runtime/Tags/AlwaysIncludeInAttributeMetadataCacheAttribute.cs.meta +11 -0
  607. package/Runtime/Tags/Attribute.cs +399 -205
  608. package/Runtime/Tags/Attribute.cs.meta +2 -2
  609. package/Runtime/Tags/AttributeEffect.cs +372 -281
  610. package/Runtime/Tags/AttributeEffect.cs.meta +2 -2
  611. package/Runtime/Tags/AttributeMetadataCache.cs +503 -0
  612. package/Runtime/Tags/AttributeMetadataCache.cs.meta +11 -0
  613. package/Runtime/Tags/AttributeMetadataFilters.cs +108 -0
  614. package/Runtime/Tags/AttributeMetadataFilters.cs.meta +11 -0
  615. package/Runtime/Tags/AttributeModification.cs +132 -48
  616. package/Runtime/Tags/AttributeModification.cs.meta +2 -2
  617. package/Runtime/Tags/AttributeUtilities.cs +376 -209
  618. package/Runtime/Tags/AttributeUtilities.cs.meta +2 -2
  619. package/Runtime/Tags/AttributesComponent.cs +237 -163
  620. package/Runtime/Tags/AttributesComponent.cs.meta +2 -2
  621. package/Runtime/Tags/CollisionSenses.cs +117 -91
  622. package/Runtime/Tags/CollisionSenses.cs.meta +2 -2
  623. package/Runtime/Tags/CosmeticEffectComponent.cs +112 -50
  624. package/Runtime/Tags/CosmeticEffectComponent.cs.meta +2 -2
  625. package/Runtime/Tags/CosmeticEffectData.cs +109 -63
  626. package/Runtime/Tags/CosmeticEffectData.cs.meta +2 -2
  627. package/Runtime/Tags/EffectHandle.cs +150 -65
  628. package/Runtime/Tags/EffectHandle.cs.meta +2 -2
  629. package/Runtime/Tags/EffectHandler.cs +470 -393
  630. package/Runtime/Tags/EffectHandler.cs.meta +2 -2
  631. package/Runtime/Tags/ModificationAction.cs +60 -9
  632. package/Runtime/Tags/ModificationAction.cs.meta +2 -2
  633. package/Runtime/Tags/ModifierDurationType.cs +71 -13
  634. package/Runtime/Tags/ModifierDurationType.cs.meta +2 -2
  635. package/Runtime/Tags/TagHandler.cs +373 -158
  636. package/Runtime/Tags/TagHandler.cs.meta +2 -2
  637. package/Runtime/Tags.meta +2 -2
  638. package/Runtime/Utils/AnimationEventEqualityComparer.cs +198 -161
  639. package/Runtime/Utils/AnimationEventEqualityComparer.cs.meta +11 -11
  640. package/Runtime/Utils/AnimatorEnumStateMachine.cs +110 -88
  641. package/Runtime/Utils/AnimatorEnumStateMachine.cs.meta +11 -11
  642. package/Runtime/Utils/Ascii85.cs +132 -115
  643. package/Runtime/Utils/Ascii85.cs.meta +2 -2
  644. package/Runtime/Utils/Buffers.cs +1151 -550
  645. package/Runtime/Utils/Buffers.cs.meta +11 -11
  646. package/Runtime/Utils/CenterPointOffset.cs +35 -30
  647. package/Runtime/Utils/CenterPointOffset.cs.meta +2 -2
  648. package/Runtime/Utils/ChildSpawner.cs +250 -157
  649. package/Runtime/Utils/ChildSpawner.cs.meta +2 -2
  650. package/Runtime/Utils/CircleLineRenderer.cs +142 -142
  651. package/Runtime/Utils/CircleLineRenderer.cs.meta +11 -11
  652. package/Runtime/Utils/CollisionProxy.cs +48 -48
  653. package/Runtime/Utils/CollisionProxy.cs.meta +2 -2
  654. package/Runtime/Utils/CoroutineHandler.cs +4 -4
  655. package/Runtime/Utils/CoroutineHandler.cs.meta +2 -2
  656. package/Runtime/Utils/DeferredDisposalResult.cs +20 -23
  657. package/Runtime/Utils/DeferredDisposalResult.cs.meta +2 -2
  658. package/Runtime/Utils/LZMA.cs +276 -53
  659. package/Runtime/Utils/LZMA.cs.meta +2 -2
  660. package/Runtime/Utils/MatchColliderToSprite.cs +104 -104
  661. package/Runtime/Utils/MatchColliderToSprite.cs.meta +2 -2
  662. package/Runtime/Utils/MatchTransform.cs +99 -82
  663. package/Runtime/Utils/MatchTransform.cs.meta +2 -2
  664. package/Runtime/Utils/Oscillator.cs +27 -27
  665. package/Runtime/Utils/Oscillator.cs.meta +11 -11
  666. package/Runtime/Utils/PolygonCollider2DOptimizer.cs +104 -83
  667. package/Runtime/Utils/PolygonCollider2DOptimizer.cs.meta +2 -2
  668. package/Runtime/Utils/RuntimeSingleton.cs +139 -88
  669. package/Runtime/Utils/RuntimeSingleton.cs.meta +11 -11
  670. package/Runtime/Utils/ScriptableObjectSingleton.cs +226 -85
  671. package/Runtime/Utils/ScriptableObjectSingleton.cs.meta +2 -2
  672. package/Runtime/Utils/SerializedStringComparer.cs +107 -107
  673. package/Runtime/Utils/SerializedStringComparer.cs.meta +2 -2
  674. package/Runtime/Utils/SetTextureImportData.cs +69 -69
  675. package/Runtime/Utils/SetTextureImportData.cs.meta +11 -11
  676. package/Runtime/Utils/SevenZip/Common/CRC.cs +70 -70
  677. package/Runtime/Utils/SevenZip/Common/CRC.cs.meta +11 -11
  678. package/Runtime/Utils/SevenZip/Common/InBuffer.cs +84 -84
  679. package/Runtime/Utils/SevenZip/Common/InBuffer.cs.meta +11 -11
  680. package/Runtime/Utils/SevenZip/Common/OutBuffer.cs +70 -70
  681. package/Runtime/Utils/SevenZip/Common/OutBuffer.cs.meta +11 -11
  682. package/Runtime/Utils/SevenZip/Common.meta +2 -2
  683. package/Runtime/Utils/SevenZip/Compress/LZ/IMatchFinder.cs +28 -28
  684. package/Runtime/Utils/SevenZip/Compress/LZ/IMatchFinder.cs.meta +11 -11
  685. package/Runtime/Utils/SevenZip/Compress/LZ/LzBinTree.cs +454 -454
  686. package/Runtime/Utils/SevenZip/Compress/LZ/LzBinTree.cs.meta +11 -11
  687. package/Runtime/Utils/SevenZip/Compress/LZ/LzInWindow.cs +179 -179
  688. package/Runtime/Utils/SevenZip/Compress/LZ/LzInWindow.cs.meta +11 -11
  689. package/Runtime/Utils/SevenZip/Compress/LZ/LzOutWindow.cs +137 -137
  690. package/Runtime/Utils/SevenZip/Compress/LZ/LzOutWindow.cs.meta +11 -11
  691. package/Runtime/Utils/SevenZip/Compress/LZ.meta +8 -8
  692. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaBase.cs +110 -110
  693. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaBase.cs.meta +11 -11
  694. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaDecoder.cs +525 -527
  695. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaDecoder.cs.meta +11 -11
  696. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaEncoder.cs +1891 -1904
  697. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaEncoder.cs.meta +11 -11
  698. package/Runtime/Utils/SevenZip/Compress/LZMA.meta +8 -8
  699. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoder.cs +242 -242
  700. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoder.cs.meta +11 -11
  701. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoderBit.cs +146 -149
  702. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoderBit.cs.meta +11 -11
  703. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoderBitTree.cs +177 -177
  704. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoderBitTree.cs.meta +11 -11
  705. package/Runtime/Utils/SevenZip/Compress/RangeCoder.meta +8 -8
  706. package/Runtime/Utils/SevenZip/Compress.meta +8 -8
  707. package/Runtime/Utils/SevenZip/ICoder.cs +177 -177
  708. package/Runtime/Utils/SevenZip/ICoder.cs.meta +11 -11
  709. package/Runtime/Utils/SevenZip.meta +2 -2
  710. package/Runtime/Utils/SpriteRendererMetadata.cs +346 -370
  711. package/Runtime/Utils/SpriteRendererMetadata.cs.meta +2 -2
  712. package/Runtime/Utils/SpriteRendererSyncer.cs +100 -100
  713. package/Runtime/Utils/SpriteRendererSyncer.cs.meta +2 -2
  714. package/Runtime/Utils/StartTracker.cs +15 -15
  715. package/Runtime/Utils/StartTracker.cs.meta +2 -2
  716. package/Runtime/Utils/TextureScale.cs +356 -179
  717. package/Runtime/Utils/TextureScale.cs.meta +2 -2
  718. package/Runtime/Utils/TypeNameSorter.cs +17 -17
  719. package/Runtime/Utils/TypeNameSorter.cs.meta +2 -2
  720. package/Runtime/Utils/UnityObjectNameComparer.cs +89 -89
  721. package/Runtime/Utils/UnityObjectNameComparer.cs.meta +2 -2
  722. package/Runtime/Utils.meta +8 -8
  723. package/Runtime/Visuals/AnimatedSpriteLayer.cs +217 -130
  724. package/Runtime/Visuals/AnimatedSpriteLayer.cs.meta +2 -2
  725. package/Runtime/Visuals/UGUI/EnhancedImage.cs +218 -85
  726. package/Runtime/Visuals/UGUI/EnhancedImage.cs.meta +2 -2
  727. package/Runtime/Visuals/UGUI.meta +2 -2
  728. package/Runtime/Visuals/UIToolkit/LayeredImage.cs +781 -484
  729. package/Runtime/Visuals/UIToolkit/LayeredImage.cs.meta +2 -2
  730. package/Runtime/Visuals/UIToolkit/MultiFileSelectorElement.cs +945 -322
  731. package/Runtime/Visuals/UIToolkit/MultiFileSelectorElement.cs.meta +2 -2
  732. package/Runtime/Visuals/UIToolkit.meta +2 -2
  733. package/Runtime/Visuals.meta +2 -2
  734. package/Runtime/WallstopStudios.UnityHelpers.asmdef +22 -14
  735. package/Runtime/WallstopStudios.UnityHelpers.asmdef.meta +7 -7
  736. package/Runtime.meta +8 -8
  737. package/SERIALIZATION.md +648 -0
  738. package/SERIALIZATION.md.meta +7 -0
  739. package/SINGLETONS.md +427 -0
  740. package/SINGLETONS.md.meta +7 -0
  741. package/SPATIAL_TREES_2D_GUIDE.md +261 -0
  742. package/SPATIAL_TREES_2D_GUIDE.md.meta +7 -0
  743. package/SPATIAL_TREES_3D_GUIDE.md +214 -0
  744. package/SPATIAL_TREES_3D_GUIDE.md.meta +7 -0
  745. package/SPATIAL_TREE_2D_PERFORMANCE.md +238 -0
  746. package/SPATIAL_TREE_2D_PERFORMANCE.md.meta +7 -0
  747. package/SPATIAL_TREE_3D_PERFORMANCE.md +240 -0
  748. package/SPATIAL_TREE_3D_PERFORMANCE.md.meta +7 -0
  749. package/SPATIAL_TREE_SEMANTICS.md +106 -0
  750. package/SPATIAL_TREE_SEMANTICS.md.meta +7 -0
  751. package/Samples~/DI - VContainer/Prefabs/RelationalConsumer.prefab +77 -0
  752. package/Samples~/DI - VContainer/Prefabs/RelationalConsumer.prefab.meta +8 -0
  753. package/Samples~/DI - VContainer/Prefabs/Spawner.prefab +47 -0
  754. package/Samples~/DI - VContainer/Prefabs/Spawner.prefab.meta +8 -0
  755. package/Samples~/DI - VContainer/Prefabs.meta +9 -0
  756. package/Samples~/DI - VContainer/README.md +334 -0
  757. package/Samples~/DI - VContainer/README.md.meta +8 -0
  758. package/Samples~/DI - VContainer/Scenes/VContainer_Sample.unity +120 -0
  759. package/Samples~/DI - VContainer/Scenes/VContainer_Sample.unity.meta +8 -0
  760. package/Samples~/DI - VContainer/Scenes.meta +9 -0
  761. package/Samples~/DI - VContainer/Scripts/GameLifetimeScope.cs +24 -0
  762. package/Samples~/DI - VContainer/Scripts/GameLifetimeScope.cs.meta +12 -0
  763. package/Samples~/DI - VContainer/Scripts/RelationalConsumer.cs +21 -0
  764. package/Samples~/DI - VContainer/Scripts/RelationalConsumer.cs.meta +12 -0
  765. package/Samples~/DI - VContainer/Scripts/Samples.UnityHelpers.DI.VContainer.asmdef +37 -0
  766. package/Samples~/DI - VContainer/Scripts/Samples.UnityHelpers.DI.VContainer.asmdef.meta +8 -0
  767. package/Samples~/DI - VContainer/Scripts/Spawner.cs +21 -0
  768. package/Samples~/DI - VContainer/Scripts/Spawner.cs.meta +12 -0
  769. package/Samples~/DI - VContainer/Scripts.meta +9 -0
  770. package/Samples~/DI - VContainer.meta +9 -0
  771. package/Samples~/DI - Zenject/Prefabs/RelationalConsumer.prefab +77 -0
  772. package/Samples~/DI - Zenject/Prefabs/RelationalConsumer.prefab.meta +8 -0
  773. package/Samples~/DI - Zenject/Prefabs/SpawnerZenject.prefab +47 -0
  774. package/Samples~/DI - Zenject/Prefabs/SpawnerZenject.prefab.meta +8 -0
  775. package/Samples~/DI - Zenject/Prefabs.meta +9 -0
  776. package/Samples~/DI - Zenject/README.md +389 -0
  777. package/Samples~/DI - Zenject/README.md.meta +7 -0
  778. package/Samples~/DI - Zenject/Scenes/Zenject_Sample.unity +164 -0
  779. package/Samples~/DI - Zenject/Scenes/Zenject_Sample.unity.meta +8 -0
  780. package/Samples~/DI - Zenject/Scenes.meta +9 -0
  781. package/Samples~/DI - Zenject/Scripts/RelationalConsumer.cs +19 -0
  782. package/Samples~/DI - Zenject/Scripts/RelationalConsumer.cs.meta +12 -0
  783. package/Samples~/DI - Zenject/Scripts/Samples.UnityHelpers.DI.Zenject.asmdef +36 -0
  784. package/Samples~/DI - Zenject/Scripts/Samples.UnityHelpers.DI.Zenject.asmdef.meta +8 -0
  785. package/Samples~/DI - Zenject/Scripts/SceneContextPlaceholder.cs +47 -0
  786. package/Samples~/DI - Zenject/Scripts/SceneContextPlaceholder.cs.meta +12 -0
  787. package/Samples~/DI - Zenject/Scripts/SpawnerZenject.cs +20 -0
  788. package/Samples~/DI - Zenject/Scripts/SpawnerZenject.cs.meta +12 -0
  789. package/Samples~/DI - Zenject/Scripts.meta +9 -0
  790. package/Samples~/DI - Zenject.meta +9 -0
  791. package/Samples~/Random - PRNG/README.md +12 -0
  792. package/Samples~/Random - PRNG/README.md.meta +8 -0
  793. package/Samples~/Random - PRNG/Scripts/RandomPrngDemo.cs +28 -0
  794. package/Samples~/Random - PRNG/Scripts/RandomPrngDemo.cs.meta +12 -0
  795. package/Samples~/Random - PRNG/Scripts/Samples.UnityHelpers.Random.Prng.asmdef +17 -0
  796. package/Samples~/Random - PRNG/Scripts/Samples.UnityHelpers.Random.Prng.asmdef.meta +8 -0
  797. package/Samples~/Random - PRNG/Scripts.meta +9 -0
  798. package/Samples~/Random - PRNG.meta +9 -0
  799. package/Samples~/Relational Components - Basic/README.md +19 -0
  800. package/Samples~/Relational Components - Basic/README.md.meta +8 -0
  801. package/Samples~/Relational Components - Basic/Scripts/RelationalBasicConsumer.cs +37 -0
  802. package/Samples~/Relational Components - Basic/Scripts/RelationalBasicConsumer.cs.meta +12 -0
  803. package/Samples~/Relational Components - Basic/Scripts/Samples.UnityHelpers.Relational.Basic.asmdef +17 -0
  804. package/Samples~/Relational Components - Basic/Scripts/Samples.UnityHelpers.Relational.Basic.asmdef.meta +8 -0
  805. package/Samples~/Relational Components - Basic/Scripts.meta +9 -0
  806. package/Samples~/Relational Components - Basic.meta +9 -0
  807. package/Samples~/Serialization - JSON/README.md +13 -0
  808. package/Samples~/Serialization - JSON/README.md.meta +8 -0
  809. package/Samples~/Serialization - JSON/Scripts/JsonSerializationDemo.cs +50 -0
  810. package/Samples~/Serialization - JSON/Scripts/JsonSerializationDemo.cs.meta +12 -0
  811. package/Samples~/Serialization - JSON/Scripts/Samples.UnityHelpers.Serialization.Json.asmdef +17 -0
  812. package/Samples~/Serialization - JSON/Scripts/Samples.UnityHelpers.Serialization.Json.asmdef.meta +8 -0
  813. package/Samples~/Serialization - JSON/Scripts.meta +9 -0
  814. package/Samples~/Serialization - JSON.meta +9 -0
  815. package/Samples~/Spatial Structures - 2D and 3D/README.md +13 -0
  816. package/Samples~/Spatial Structures - 2D and 3D/README.md.meta +8 -0
  817. package/Samples~/Spatial Structures - 2D and 3D/Scripts/Samples.UnityHelpers.SpatialStructures.asmdef +17 -0
  818. package/Samples~/Spatial Structures - 2D and 3D/Scripts/Samples.UnityHelpers.SpatialStructures.asmdef.meta +8 -0
  819. package/Samples~/Spatial Structures - 2D and 3D/Scripts/SpatialStructuresDemo.cs +62 -0
  820. package/Samples~/Spatial Structures - 2D and 3D/Scripts/SpatialStructuresDemo.cs.meta +12 -0
  821. package/Samples~/Spatial Structures - 2D and 3D/Scripts.meta +9 -0
  822. package/Samples~/Spatial Structures - 2D and 3D.meta +9 -0
  823. package/Samples~/UGUI - EnhancedImage/README.md +12 -0
  824. package/Samples~/UGUI - EnhancedImage/README.md.meta +8 -0
  825. package/Samples~/UGUI - EnhancedImage/Scripts/EnhancedImageDemo.cs +36 -0
  826. package/Samples~/UGUI - EnhancedImage/Scripts/EnhancedImageDemo.cs.meta +12 -0
  827. package/Samples~/UGUI - EnhancedImage/Scripts/Samples.UnityHelpers.UGUI.EnhancedImage.asmdef +17 -0
  828. package/Samples~/UGUI - EnhancedImage/Scripts/Samples.UnityHelpers.UGUI.EnhancedImage.asmdef.meta +8 -0
  829. package/Samples~/UGUI - EnhancedImage/Scripts.meta +9 -0
  830. package/Samples~/UGUI - EnhancedImage.meta +9 -0
  831. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/README.md +12 -0
  832. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/README.md.meta +8 -0
  833. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts/Editor/MultiFileSelectorSampleWindow.cs +45 -0
  834. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts/Editor/MultiFileSelectorSampleWindow.cs.meta +12 -0
  835. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts/Editor/Samples.UnityHelpers.UIToolkit.Editor.asmdef +19 -0
  836. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts/Editor/Samples.UnityHelpers.UIToolkit.Editor.asmdef.meta +8 -0
  837. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts/Editor.meta +9 -0
  838. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts.meta +9 -0
  839. package/Samples~/UI Toolkit - MultiFile Selector (Editor).meta +9 -0
  840. package/Shaders/Materials/BackgroundMask-Material.mat +59 -59
  841. package/Shaders/Materials/BackgroundMask-Material.mat.meta +8 -8
  842. package/Shaders/Materials.meta +8 -8
  843. package/Shaders/ShaderGraph/BackgroundMask.shadergraph +1653 -1653
  844. package/Shaders/ShaderGraph/BackgroundMask.shadergraph.meta +10 -10
  845. package/Shaders/ShaderGraph/DebugDisplayValue.shadersubgraph +835 -835
  846. package/Shaders/ShaderGraph/DebugDisplayValue.shadersubgraph.meta +10 -10
  847. package/Shaders/ShaderGraph.meta +8 -8
  848. package/Shaders/Support/EnhancedImageSupport.shader +64 -0
  849. package/Shaders/Support/EnhancedImageSupport.shader.meta +9 -0
  850. package/Shaders/Support.meta +8 -0
  851. package/Shaders.meta +8 -8
  852. package/Styles/Elements/Progress/ArcedProgressBar.cs +345 -345
  853. package/Styles/Elements/Progress/ArcedProgressBar.cs.meta +2 -2
  854. package/Styles/Elements/Progress/CircularProgressBar.cs +307 -307
  855. package/Styles/Elements/Progress/CircularProgressBar.cs.meta +2 -2
  856. package/Styles/Elements/Progress/GlitchProgressBar.cs +416 -416
  857. package/Styles/Elements/Progress/GlitchProgressBar.cs.meta +2 -2
  858. package/Styles/Elements/Progress/LiquidProgressBar.cs +632 -632
  859. package/Styles/Elements/Progress/LiquidProgressBar.cs.meta +2 -2
  860. package/Styles/Elements/Progress/MarchingAntsProgressBar.cs +722 -722
  861. package/Styles/Elements/Progress/MarchingAntsProgressBar.cs.meta +2 -2
  862. package/Styles/Elements/Progress/RegularProgressBar.cs +405 -405
  863. package/Styles/Elements/Progress/RegularProgressBar.cs.meta +2 -2
  864. package/Styles/Elements/Progress/WigglyProgressBar.cs +837 -837
  865. package/Styles/Elements/Progress/WigglyProgressBar.cs.meta +2 -2
  866. package/Styles/Elements/Progress.meta +2 -2
  867. package/Styles/Elements.meta +2 -2
  868. package/Styles/USS/ArcedProgressBar.uss +18 -18
  869. package/Styles/USS/ArcedProgressBar.uss.meta +2 -2
  870. package/Styles/USS/CirclularProgressBar.uss +17 -17
  871. package/Styles/USS/CirclularProgressBar.uss.meta +2 -2
  872. package/Styles/USS/RegularProgressBar.uss +32 -32
  873. package/Styles/USS/RegularProgressBar.uss.meta +2 -2
  874. package/Styles/USS/WigglyProgressBar.uss +16 -16
  875. package/Styles/USS/WigglyProgressBar.uss.meta +2 -2
  876. package/Styles/USS.meta +2 -2
  877. package/Styles/WallstopStudios.UnityHelpers.Styles.asmdef +14 -17
  878. package/Styles/WallstopStudios.UnityHelpers.Styles.asmdef.meta +7 -7
  879. package/Styles.meta +2 -2
  880. package/THIRD_PARTY_NOTICES.md +74 -0
  881. package/THIRD_PARTY_NOTICES.md.meta +7 -0
  882. package/Tests/Editor/Attributes/AnimationEventHelpersTests.cs +155 -0
  883. package/Tests/Editor/Attributes/AnimationEventHelpersTests.cs.meta +11 -0
  884. package/Tests/Editor/Attributes.meta +8 -0
  885. package/Tests/Editor/Core/Attributes/RelationalComponentAssignerTests.cs +118 -0
  886. package/Tests/Editor/Core/Attributes/RelationalComponentAssignerTests.cs.meta +11 -0
  887. package/Tests/Editor/Core/Attributes.meta +8 -0
  888. package/Tests/Editor/Core.meta +8 -0
  889. package/Tests/Editor/Extensions/SerializedPropertyExtensionsTests.cs +194 -0
  890. package/Tests/Editor/Extensions/SerializedPropertyExtensionsTests.cs.meta +3 -0
  891. package/Tests/Editor/Extensions.meta +3 -0
  892. package/Tests/Editor/Helper/DummyScriptableObject.cs +6 -0
  893. package/Tests/Editor/Helper/DummyScriptableObject.cs.meta +3 -0
  894. package/Tests/Editor/Helper/HelpersTests.cs +101 -0
  895. package/Tests/Editor/Helper/HelpersTests.cs.meta +3 -0
  896. package/Tests/Editor/Helper/ObjectHelpersEditorTests.cs +63 -0
  897. package/Tests/Editor/Helper/ObjectHelpersEditorTests.cs.meta +11 -0
  898. package/Tests/Editor/Helper/PromptScope.cs +28 -0
  899. package/Tests/Editor/Helper/PromptScope.cs.meta +11 -0
  900. package/Tests/Editor/Helper/ReflectionHelpersEditorTests.cs +105 -0
  901. package/Tests/Editor/Helper/ReflectionHelpersEditorTests.cs.meta +11 -0
  902. package/Tests/Editor/Helper/SpriteHelpersTests.cs +334 -0
  903. package/Tests/Editor/Helper/SpriteHelpersTests.cs.meta +3 -0
  904. package/Tests/Editor/Helper/SpriteSettingsApplierAdditionalTests.cs +183 -0
  905. package/Tests/Editor/Helper/SpriteSettingsApplierAdditionalTests.cs.meta +11 -0
  906. package/Tests/Editor/Helper/SpriteSettingsApplierTests.cs +161 -0
  907. package/Tests/Editor/Helper/SpriteSettingsApplierTests.cs.meta +11 -0
  908. package/Tests/Editor/Helper.meta +3 -0
  909. package/Tests/Editor/Integrations/VContainer/VContainerIntegrationCompilationTests.cs +40 -0
  910. package/Tests/Editor/Integrations/VContainer/VContainerIntegrationCompilationTests.cs.meta +11 -0
  911. package/Tests/Editor/Integrations/VContainer/VContainerRelationalEntryPointTests.cs +77 -0
  912. package/Tests/Editor/Integrations/VContainer/VContainerRelationalEntryPointTests.cs.meta +11 -0
  913. package/Tests/Editor/Integrations/VContainer/WallstopStudios.UnityHelpers.Tests.Editor.VContainer.asmdef +36 -0
  914. package/Tests/Editor/Integrations/VContainer/WallstopStudios.UnityHelpers.Tests.Editor.VContainer.asmdef.meta +7 -0
  915. package/Tests/Editor/Integrations/VContainer.meta +8 -0
  916. package/Tests/Editor/Integrations/Zenject/WallstopStudios.UnityHelpers.Tests.Editor.Zenject.asmdef +36 -0
  917. package/Tests/Editor/Integrations/Zenject/WallstopStudios.UnityHelpers.Tests.Editor.Zenject.asmdef.meta +7 -0
  918. package/Tests/Editor/Integrations/Zenject/ZenjectIntegrationCompilationTests.cs +40 -0
  919. package/Tests/Editor/Integrations/Zenject/ZenjectIntegrationCompilationTests.cs.meta +11 -0
  920. package/Tests/Editor/Integrations/Zenject/ZenjectRelationalInitializerTests.cs +76 -0
  921. package/Tests/Editor/Integrations/Zenject/ZenjectRelationalInitializerTests.cs.meta +11 -0
  922. package/Tests/Editor/Integrations/Zenject.meta +8 -0
  923. package/Tests/Editor/Integrations.meta +8 -0
  924. package/Tests/Editor/MultiFileSelectorElementTests.cs +265 -0
  925. package/Tests/Editor/MultiFileSelectorElementTests.cs.meta +11 -0
  926. package/Tests/Editor/MultiFileSelectorPersistenceManagerTests.cs +100 -0
  927. package/Tests/Editor/MultiFileSelectorPersistenceManagerTests.cs.meta +11 -0
  928. package/Tests/Editor/Sprites/AnimationCopierWindowTests.cs +199 -0
  929. package/Tests/Editor/Sprites/AnimationCopierWindowTests.cs.meta +11 -0
  930. package/Tests/Editor/Sprites/ScriptableSpriteAtlasEditorTests.cs +108 -0
  931. package/Tests/Editor/Sprites/ScriptableSpriteAtlasEditorTests.cs.meta +11 -0
  932. package/Tests/Editor/Sprites/SpriteCropperAdditionalTests.cs +323 -0
  933. package/Tests/Editor/Sprites/SpriteCropperAdditionalTests.cs.meta +11 -0
  934. package/Tests/Editor/Sprites/SpriteCropperTests.cs +162 -0
  935. package/Tests/Editor/Sprites/SpriteCropperTests.cs.meta +11 -0
  936. package/Tests/Editor/Sprites/SpritePivotAdjusterAdditionalTests.cs +227 -0
  937. package/Tests/Editor/Sprites/SpritePivotAdjusterAdditionalTests.cs.meta +11 -0
  938. package/Tests/Editor/Sprites/SpritePivotAdjusterTests.cs +113 -0
  939. package/Tests/Editor/Sprites/SpritePivotAdjusterTests.cs.meta +11 -0
  940. package/Tests/Editor/Sprites/TexturePlatformNameHelperTests.cs +28 -0
  941. package/Tests/Editor/Sprites/TexturePlatformNameHelperTests.cs.meta +11 -0
  942. package/Tests/Editor/Sprites/TextureResizerWizardTests.cs +248 -0
  943. package/Tests/Editor/Sprites/TextureResizerWizardTests.cs.meta +11 -0
  944. package/Tests/Editor/Sprites/TextureSettingsApplierAPITests.cs +180 -0
  945. package/Tests/Editor/Sprites/TextureSettingsApplierAPITests.cs.meta +11 -0
  946. package/Tests/Editor/Sprites/TextureSettingsApplierWizardAdditionalTests.cs +295 -0
  947. package/Tests/Editor/Sprites/TextureSettingsApplierWizardAdditionalTests.cs.meta +11 -0
  948. package/Tests/Editor/Sprites/TextureSettingsApplierWizardTests.cs +134 -0
  949. package/Tests/Editor/Sprites/TextureSettingsApplierWizardTests.cs.meta +11 -0
  950. package/Tests/Editor/Sprites.meta +8 -0
  951. package/Tests/Editor/TestComponents/PrewarmTesterComponent.cs +10 -0
  952. package/Tests/Editor/TestComponents/PrewarmTesterComponent.cs.meta +11 -0
  953. package/Tests/Editor/TestComponents.meta +8 -0
  954. package/Tests/Editor/Tools/ImageBlurToolTests.cs +135 -0
  955. package/Tests/Editor/Tools/ImageBlurToolTests.cs.meta +11 -0
  956. package/Tests/Editor/Tools.meta +8 -0
  957. package/Tests/Editor/Utils/CommonTestBase.cs +208 -0
  958. package/Tests/Editor/Utils/CommonTestBase.cs.meta +11 -0
  959. package/Tests/Editor/Utils/ScriptableObjectSingletonCreatorEditorTests.cs +306 -0
  960. package/Tests/Editor/Utils/ScriptableObjectSingletonCreatorEditorTests.cs.meta +9 -0
  961. package/Tests/Editor/Utils/ScriptableObjectSingletonCreatorTests.cs +183 -0
  962. package/Tests/Editor/Utils/ScriptableObjectSingletonCreatorTests.cs.meta +11 -0
  963. package/Tests/Editor/Utils/ScriptableObjectSingletonTests.cs +466 -0
  964. package/Tests/Editor/Utils/ScriptableObjectSingletonTests.cs.meta +11 -0
  965. package/Tests/Editor/Utils.meta +3 -0
  966. package/Tests/Editor/WallstopStudios.UnityHelpers.Tests.Editor.asmdef +19 -0
  967. package/Tests/Editor/WallstopStudios.UnityHelpers.Tests.Editor.asmdef.meta +7 -0
  968. package/Tests/Editor/Windows/FitTextureSizeWindowTests.cs +781 -0
  969. package/Tests/Editor/Windows/FitTextureSizeWindowTests.cs.meta +11 -0
  970. package/Tests/Editor/Windows/PrefabCheckerFolderAdditionTests.cs +96 -0
  971. package/Tests/Editor/Windows/PrefabCheckerFolderAdditionTests.cs.meta +11 -0
  972. package/Tests/Editor/Windows/PrefabCheckerTests.cs +81 -0
  973. package/Tests/Editor/Windows/PrefabCheckerTests.cs.meta +11 -0
  974. package/Tests/Editor/Windows.meta +8 -0
  975. package/Tests/Editor.meta +8 -0
  976. package/Tests/Runtime/AssemblyInfo.cs +4 -0
  977. package/Tests/Runtime/AssemblyInfo.cs.meta +3 -0
  978. package/Tests/Runtime/Attributes/ChildComponentTests.cs +766 -81
  979. package/Tests/Runtime/Attributes/ChildComponentTests.cs.meta +2 -2
  980. package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs +28 -28
  981. package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs.meta +2 -2
  982. package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs +28 -28
  983. package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs.meta +2 -2
  984. package/Tests/Runtime/{Components → Attributes/Components}/RelationalComponentTesterComplex.cs +34 -34
  985. package/Tests/Runtime/{Components → Attributes/Components}/RelationalComponentTesterComplex.cs.meta +2 -2
  986. package/Tests/Runtime/Attributes/Components/RelationalComponentsTesterSimple.cs +37 -0
  987. package/Tests/Runtime/{Components → Attributes/Components}/RelationalComponentsTesterSimple.cs.meta +2 -2
  988. package/Tests/Runtime/Attributes/Components.meta +2 -2
  989. package/Tests/Runtime/Attributes/MiscRuntimeAttributeTests.cs +75 -0
  990. package/Tests/Runtime/Attributes/MiscRuntimeAttributeTests.cs.meta +11 -0
  991. package/Tests/Runtime/Attributes/NotNullAttributeTests.cs +26 -0
  992. package/Tests/Runtime/Attributes/NotNullAttributeTests.cs.meta +3 -0
  993. package/Tests/Runtime/Attributes/ParentComponentTests.cs +565 -68
  994. package/Tests/Runtime/Attributes/ParentComponentTests.cs.meta +2 -2
  995. package/Tests/Runtime/Attributes/RelationalComponentAdvancedTests.cs +614 -0
  996. package/Tests/Runtime/Attributes/RelationalComponentAdvancedTests.cs.meta +11 -0
  997. package/Tests/Runtime/Attributes/RelationalComponentBackwardCompatibilityTests.cs +478 -0
  998. package/Tests/Runtime/Attributes/RelationalComponentBackwardCompatibilityTests.cs.meta +11 -0
  999. package/Tests/Runtime/Attributes/RelationalComponentExtensionsTests.cs +56 -0
  1000. package/Tests/Runtime/Attributes/RelationalComponentExtensionsTests.cs.meta +11 -0
  1001. package/Tests/Runtime/Attributes/RelationalComponentHashSetTests.cs +226 -0
  1002. package/Tests/Runtime/Attributes/RelationalComponentHashSetTests.cs.meta +11 -0
  1003. package/Tests/Runtime/Attributes/RelationalComponentInitializerTests.cs +109 -0
  1004. package/Tests/Runtime/Attributes/RelationalComponentInitializerTests.cs.meta +11 -0
  1005. package/Tests/Runtime/Attributes/RelationalComponentTagAndNameFilterEdgeTests.cs +234 -0
  1006. package/Tests/Runtime/Attributes/RelationalComponentTagAndNameFilterEdgeTests.cs.meta +11 -0
  1007. package/Tests/Runtime/Attributes/SiblingComponentTests.cs +721 -0
  1008. package/Tests/Runtime/Attributes/SiblingComponentTests.cs.meta +11 -0
  1009. package/Tests/Runtime/Attributes/ValidateAssignmentAttributeTests.cs +96 -0
  1010. package/Tests/Runtime/Attributes/ValidateAssignmentAttributeTests.cs.meta +11 -0
  1011. package/Tests/Runtime/Attributes.meta +2 -2
  1012. package/Tests/Runtime/Core/Random/RandomComparerTests.cs +166 -0
  1013. package/Tests/Runtime/Core/Random/RandomComparerTests.cs.meta +11 -0
  1014. package/Tests/Runtime/Core/Random.meta +8 -0
  1015. package/Tests/Runtime/Core/Threading/SingleThreadedThreadPoolTests.cs +56 -56
  1016. package/Tests/Runtime/Core/Threading/SingleThreadedThreadPoolTests.cs.meta +2 -2
  1017. package/Tests/Runtime/Core/Threading.meta +2 -2
  1018. package/Tests/Runtime/Core.meta +2 -2
  1019. package/Tests/Runtime/DataStructures/BalancedKDTree2DTests.cs +562 -0
  1020. package/Tests/Runtime/DataStructures/{BalancedKDTreeTests.cs.meta → BalancedKDTree2DTests.cs.meta} +11 -11
  1021. package/Tests/Runtime/DataStructures/BalancedKDTree3DTests.cs +10 -0
  1022. package/Tests/Runtime/DataStructures/BalancedKDTree3DTests.cs.meta +11 -0
  1023. package/Tests/Runtime/DataStructures/BitSetTests.cs +1400 -0
  1024. package/Tests/Runtime/DataStructures/BitSetTests.cs.meta +3 -0
  1025. package/Tests/Runtime/DataStructures/BoundingBox3DTests.cs +1215 -0
  1026. package/Tests/Runtime/DataStructures/BoundingBox3DTests.cs.meta +11 -0
  1027. package/Tests/Runtime/DataStructures/CircleTests.cs +965 -0
  1028. package/Tests/Runtime/DataStructures/CircleTests.cs.meta +11 -0
  1029. package/Tests/Runtime/DataStructures/CyclicBufferTests.cs +2083 -324
  1030. package/Tests/Runtime/DataStructures/CyclicBufferTests.cs.meta +2 -2
  1031. package/Tests/Runtime/DataStructures/DequeTests.cs +790 -0
  1032. package/Tests/Runtime/DataStructures/DequeTests.cs.meta +3 -0
  1033. package/Tests/Runtime/DataStructures/DisjointSetTests.cs +1114 -0
  1034. package/Tests/Runtime/DataStructures/DisjointSetTests.cs.meta +3 -0
  1035. package/Tests/Runtime/DataStructures/FastOneOfTests.cs +966 -0
  1036. package/Tests/Runtime/DataStructures/FastOneOfTests.cs.meta +11 -0
  1037. package/Tests/Runtime/DataStructures/FastVector2IntTests.cs +286 -0
  1038. package/Tests/Runtime/DataStructures/FastVector2IntTests.cs.meta +11 -0
  1039. package/Tests/Runtime/DataStructures/FastVector3IntTests.cs +414 -0
  1040. package/Tests/Runtime/DataStructures/FastVector3IntTests.cs.meta +11 -0
  1041. package/Tests/Runtime/DataStructures/HeapTests.cs +1953 -0
  1042. package/Tests/Runtime/DataStructures/HeapTests.cs.meta +11 -0
  1043. package/Tests/Runtime/DataStructures/ImmutableBitSetTests.cs +833 -0
  1044. package/Tests/Runtime/DataStructures/ImmutableBitSetTests.cs.meta +3 -0
  1045. package/Tests/Runtime/DataStructures/KDTree3DTestsBase.cs +297 -0
  1046. package/Tests/Runtime/DataStructures/KDTree3DTestsBase.cs.meta +11 -0
  1047. package/Tests/Runtime/DataStructures/OctTree3DTests.cs +351 -0
  1048. package/Tests/Runtime/DataStructures/OctTree3DTests.cs.meta +11 -0
  1049. package/Tests/Runtime/DataStructures/PriorityQueueTests.cs +71 -0
  1050. package/Tests/Runtime/DataStructures/PriorityQueueTests.cs.meta +3 -0
  1051. package/Tests/Runtime/DataStructures/ProtobufSerializationTests.cs +475 -0
  1052. package/Tests/Runtime/DataStructures/ProtobufSerializationTests.cs.meta +11 -0
  1053. package/Tests/Runtime/DataStructures/QuadTree2DTests.cs +660 -0
  1054. package/Tests/Runtime/DataStructures/QuadTree2DTests.cs.meta +11 -0
  1055. package/Tests/Runtime/DataStructures/RTree2DTests.cs +823 -0
  1056. package/Tests/Runtime/DataStructures/RTree2DTests.cs.meta +3 -0
  1057. package/Tests/Runtime/DataStructures/RTree3DTests.cs +270 -0
  1058. package/Tests/Runtime/DataStructures/RTree3DTests.cs.meta +11 -0
  1059. package/Tests/Runtime/DataStructures/SparseSetTests.cs +1146 -0
  1060. package/Tests/Runtime/DataStructures/SparseSetTests.cs.meta +3 -0
  1061. package/Tests/Runtime/DataStructures/SpatialHashTests.cs +992 -0
  1062. package/Tests/Runtime/DataStructures/SpatialHashTests.cs.meta +11 -0
  1063. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsConsistencyTests.cs +351 -0
  1064. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsConsistencyTests.cs.meta +11 -0
  1065. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsEdgeTests.cs +127 -0
  1066. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsEdgeTests.cs.meta +11 -0
  1067. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsFuzzTests.cs +218 -0
  1068. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsFuzzTests.cs.meta +11 -0
  1069. package/Tests/Runtime/DataStructures/SpatialTree2DTests.cs +396 -0
  1070. package/Tests/Runtime/DataStructures/SpatialTree2DTests.cs.meta +11 -0
  1071. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsConsistencyTests.cs +281 -0
  1072. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsConsistencyTests.cs.meta +11 -0
  1073. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsEdgeTests.cs +127 -0
  1074. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsEdgeTests.cs.meta +11 -0
  1075. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsFuzzTests.cs +170 -0
  1076. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsFuzzTests.cs.meta +11 -0
  1077. package/Tests/Runtime/DataStructures/SpatialTree3DTests.cs +474 -0
  1078. package/Tests/Runtime/DataStructures/SpatialTree3DTests.cs.meta +11 -0
  1079. package/Tests/Runtime/DataStructures/SphereTests.cs +806 -0
  1080. package/Tests/Runtime/DataStructures/SphereTests.cs.meta +3 -0
  1081. package/Tests/Runtime/DataStructures/StringWrapperTests.cs +333 -0
  1082. package/Tests/Runtime/DataStructures/StringWrapperTests.cs.meta +11 -0
  1083. package/Tests/Runtime/DataStructures/TimedCacheTests.cs +669 -0
  1084. package/Tests/Runtime/DataStructures/TimedCacheTests.cs.meta +11 -0
  1085. package/Tests/Runtime/DataStructures/TrieTests.cs +3385 -0
  1086. package/Tests/Runtime/DataStructures/TrieTests.cs.meta +11 -0
  1087. package/Tests/Runtime/DataStructures/UnbalancedKDTree2DTests.cs +565 -0
  1088. package/Tests/Runtime/DataStructures/{UnbalancedKDTreeTests.cs.meta → UnbalancedKDTree2DTests.cs.meta} +11 -11
  1089. package/Tests/Runtime/DataStructures/UnbalancedKDTree3DTests.cs +10 -0
  1090. package/Tests/Runtime/DataStructures/UnbalancedKDTree3DTests.cs.meta +11 -0
  1091. package/Tests/Runtime/DataStructures.meta +8 -8
  1092. package/Tests/Runtime/Extensions/AnimatorExtensionsTests.cs +28 -0
  1093. package/Tests/Runtime/Extensions/AnimatorExtensionsTests.cs.meta +11 -0
  1094. package/Tests/Runtime/Extensions/AsyncOperationExtensionsTests.cs +667 -0
  1095. package/Tests/Runtime/Extensions/AsyncOperationExtensionsTests.cs.meta +11 -0
  1096. package/Tests/Runtime/Extensions/CircleExtensionsTests.cs +230 -0
  1097. package/Tests/Runtime/Extensions/CircleExtensionsTests.cs.meta +11 -0
  1098. package/Tests/Runtime/Extensions/ColorExtensionsTests.cs +55 -0
  1099. package/Tests/Runtime/Extensions/ColorExtensionsTests.cs.meta +11 -0
  1100. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs +724 -438
  1101. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs.meta +2 -2
  1102. package/Tests/Runtime/Extensions/DirectionExtensionsComprehensiveTests.cs +403 -0
  1103. package/Tests/Runtime/Extensions/DirectionExtensionsComprehensiveTests.cs.meta +11 -0
  1104. package/Tests/Runtime/Extensions/DirectionExtensionsTests.cs +69 -0
  1105. package/Tests/Runtime/Extensions/DirectionExtensionsTests.cs.meta +11 -0
  1106. package/Tests/Runtime/Extensions/EnumExtensionTests.cs +809 -153
  1107. package/Tests/Runtime/Extensions/EnumExtensionTests.cs.meta +2 -2
  1108. package/Tests/Runtime/Extensions/IEnumerableExtensionsTests.cs +191 -0
  1109. package/Tests/Runtime/Extensions/IEnumerableExtensionsTests.cs.meta +11 -0
  1110. package/Tests/Runtime/Extensions/IListExtensionTests.cs +955 -169
  1111. package/Tests/Runtime/Extensions/IListExtensionTests.cs.meta +2 -2
  1112. package/Tests/Runtime/Extensions/IReadonlyListExtensionTests.cs +266 -58
  1113. package/Tests/Runtime/Extensions/IReadonlyListExtensionTests.cs.meta +2 -2
  1114. package/Tests/Runtime/Extensions/LoggingExtensionTests.cs +721 -718
  1115. package/Tests/Runtime/Extensions/LoggingExtensionTests.cs.meta +2 -2
  1116. package/Tests/Runtime/Extensions/ProtoEqualityExtensionsTests.cs +565 -0
  1117. package/Tests/Runtime/Extensions/ProtoEqualityExtensionsTests.cs.meta +3 -0
  1118. package/Tests/Runtime/Extensions/ProtoEqualityPolymorphismTests.cs +100 -0
  1119. package/Tests/Runtime/Extensions/ProtoEqualityPolymorphismTests.cs.meta +11 -0
  1120. package/Tests/Runtime/Extensions/RandomExtensionTests.cs +719 -27
  1121. package/Tests/Runtime/Extensions/RandomExtensionTests.cs.meta +2 -2
  1122. package/Tests/Runtime/Extensions/StringExtensionTests.cs +2592 -31
  1123. package/Tests/Runtime/Extensions/StringExtensionTests.cs.meta +2 -2
  1124. package/Tests/Runtime/Extensions/UnityExtensionsBasicTests.cs +166 -0
  1125. package/Tests/Runtime/Extensions/UnityExtensionsBasicTests.cs.meta +11 -0
  1126. package/Tests/Runtime/Extensions/UnityExtensionsComprehensiveTests.cs +1446 -0
  1127. package/Tests/Runtime/Extensions/UnityExtensionsComprehensiveTests.cs.meta +11 -0
  1128. package/Tests/Runtime/Extensions/UnityExtensionsMathTests.cs +1779 -0
  1129. package/Tests/Runtime/Extensions/UnityExtensionsMathTests.cs.meta +11 -0
  1130. package/Tests/Runtime/Extensions/UnityExtensionsVector2HullTests.cs +292 -0
  1131. package/Tests/Runtime/Extensions/UnityExtensionsVector2HullTests.cs.meta +11 -0
  1132. package/Tests/Runtime/Extensions/UnityLogTagFormatterEdgeTests.cs +260 -0
  1133. package/Tests/Runtime/Extensions/UnityLogTagFormatterEdgeTests.cs.meta +11 -0
  1134. package/Tests/Runtime/Extensions.meta +2 -2
  1135. package/Tests/Runtime/Helper/ArrayConverterTests.cs +19 -19
  1136. package/Tests/Runtime/Helper/ArrayConverterTests.cs.meta +2 -2
  1137. package/Tests/Runtime/Helper/AssignUtilitiesTests.cs +38 -0
  1138. package/Tests/Runtime/Helper/AssignUtilitiesTests.cs.meta +11 -0
  1139. package/Tests/Runtime/Helper/DirectoryHelperTests.cs +347 -0
  1140. package/Tests/Runtime/Helper/DirectoryHelperTests.cs.meta +11 -0
  1141. package/Tests/Runtime/Helper/EnumerablesTests.cs +45 -0
  1142. package/Tests/Runtime/Helper/EnumerablesTests.cs.meta +11 -0
  1143. package/Tests/Runtime/Helper/FileHelperTests.cs +481 -0
  1144. package/Tests/Runtime/Helper/FileHelperTests.cs.meta +11 -0
  1145. package/Tests/Runtime/Helper/FormattingHelpersTests.cs +353 -0
  1146. package/Tests/Runtime/Helper/FormattingHelpersTests.cs.meta +11 -0
  1147. package/Tests/Runtime/Helper/FuncBasedComparerTests.cs +27 -0
  1148. package/Tests/Runtime/Helper/FuncBasedComparerTests.cs.meta +11 -0
  1149. package/Tests/Runtime/Helper/GeometryTests.cs +517 -0
  1150. package/Tests/Runtime/Helper/GeometryTests.cs.meta +3 -0
  1151. package/Tests/Runtime/Helper/HelpersTests.cs +749 -0
  1152. package/Tests/Runtime/Helper/HelpersTests.cs.meta +11 -0
  1153. package/Tests/Runtime/Helper/IterationHelpersTests.cs +173 -0
  1154. package/Tests/Runtime/Helper/IterationHelpersTests.cs.meta +11 -0
  1155. package/Tests/Runtime/Helper/LineHelperTests.cs +662 -0
  1156. package/Tests/Runtime/Helper/LineHelperTests.cs.meta +11 -0
  1157. package/Tests/Runtime/Helper/ObjectHelperTests.cs +444 -432
  1158. package/Tests/Runtime/Helper/ObjectHelperTests.cs.meta +2 -2
  1159. package/Tests/Runtime/Helper/ObjectsTests.cs +363 -0
  1160. package/Tests/Runtime/Helper/ObjectsTests.cs.meta +3 -0
  1161. package/Tests/Runtime/Helper/PathHelperTests.cs +183 -0
  1162. package/Tests/Runtime/Helper/PathHelperTests.cs.meta +11 -0
  1163. package/Tests/Runtime/Helper/ReflectionHelperTests.cs +2199 -1493
  1164. package/Tests/Runtime/Helper/ReflectionHelperTests.cs.meta +2 -2
  1165. package/Tests/Runtime/Helper/ReflectionHelpersMemberLookupTests.cs +192 -0
  1166. package/Tests/Runtime/Helper/ReflectionHelpersMemberLookupTests.cs.meta +11 -0
  1167. package/Tests/Runtime/Helper/ReflectionHelpersTypeScanningTests.cs +58 -0
  1168. package/Tests/Runtime/Helper/ReflectionHelpersTypeScanningTests.cs.meta +11 -0
  1169. package/Tests/Runtime/Helper/SceneHelperTests.cs +77 -94
  1170. package/Tests/Runtime/Helper/SceneHelperTests.cs.meta +2 -2
  1171. package/Tests/Runtime/Helper/UnityMainThreadDispatcherTests.cs +45 -0
  1172. package/Tests/Runtime/Helper/UnityMainThreadDispatcherTests.cs.meta +11 -0
  1173. package/Tests/Runtime/Helper/WallMathTests.cs +1884 -233
  1174. package/Tests/Runtime/Helper/WallMathTests.cs.meta +2 -2
  1175. package/Tests/Runtime/Helper.meta +2 -2
  1176. package/Tests/Runtime/Integrations/VContainer/RelationalComponentsVContainerTests.cs +560 -0
  1177. package/Tests/Runtime/Integrations/VContainer/RelationalComponentsVContainerTests.cs.meta +11 -0
  1178. package/Tests/Runtime/Integrations/VContainer/WallstopStudios.UnityHelpers.Tests.Runtime.VContainer.asmdef +38 -0
  1179. package/Tests/Runtime/Integrations/VContainer/WallstopStudios.UnityHelpers.Tests.Runtime.VContainer.asmdef.meta +7 -0
  1180. package/Tests/Runtime/Integrations/VContainer.meta +8 -0
  1181. package/Tests/Runtime/Integrations/Zenject/RelationalComponentsZenjectTests.cs +591 -0
  1182. package/Tests/Runtime/Integrations/Zenject/RelationalComponentsZenjectTests.cs.meta +11 -0
  1183. package/Tests/Runtime/Integrations/Zenject/WallstopStudios.UnityHelpers.Tests.Runtime.Zenject.asmdef +38 -0
  1184. package/Tests/Runtime/Integrations/Zenject/WallstopStudios.UnityHelpers.Tests.Runtime.Zenject.asmdef.meta +7 -0
  1185. package/Tests/Runtime/Integrations/Zenject.meta +8 -0
  1186. package/Tests/Runtime/Integrations.meta +8 -0
  1187. package/Tests/Runtime/Math/Line2DTests.cs +594 -0
  1188. package/Tests/Runtime/Math/Line2DTests.cs.meta +11 -0
  1189. package/Tests/Runtime/Math/Line3DTests.cs +655 -0
  1190. package/Tests/Runtime/Math/Line3DTests.cs.meta +11 -0
  1191. package/Tests/Runtime/Math/LineTests.cs +480 -0
  1192. package/Tests/Runtime/Math/LineTests.cs.meta +11 -0
  1193. package/Tests/Runtime/Math/ParabolaTests.cs +477 -0
  1194. package/Tests/Runtime/Math/ParabolaTests.cs.meta +11 -0
  1195. package/Tests/Runtime/Math/PointPolygonCheckTests.cs +939 -0
  1196. package/Tests/Runtime/Math/PointPolygonCheckTests.cs.meta +11 -0
  1197. package/Tests/Runtime/Math/RangeTests.cs +197 -0
  1198. package/Tests/Runtime/Math/RangeTests.cs.meta +11 -0
  1199. package/Tests/Runtime/Math.meta +8 -0
  1200. package/Tests/Runtime/Performance/BenchmarkReadmeUpdater.cs +81 -0
  1201. package/Tests/Runtime/Performance/BenchmarkReadmeUpdater.cs.meta +11 -0
  1202. package/Tests/Runtime/Performance/JsonSerializationPerformanceTests.cs +421 -0
  1203. package/Tests/Runtime/Performance/JsonSerializationPerformanceTests.cs.meta +3 -0
  1204. package/Tests/Runtime/Performance/ListExtensionPerformanceTests.cs +76 -76
  1205. package/Tests/Runtime/Performance/ListExtensionPerformanceTests.cs.meta +2 -2
  1206. package/Tests/Runtime/Performance/ProtoEqualsPerformanceTests.cs +161 -0
  1207. package/Tests/Runtime/Performance/ProtoEqualsPerformanceTests.cs.meta +11 -0
  1208. package/Tests/Runtime/Performance/ProtoSerializationPerformanceTests.cs +207 -0
  1209. package/Tests/Runtime/Performance/ProtoSerializationPerformanceTests.cs.meta +3 -0
  1210. package/Tests/Runtime/Performance/RandomPerformanceTests.cs +195 -181
  1211. package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -11
  1212. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +60 -61
  1213. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +2 -2
  1214. package/Tests/Runtime/Performance/SpatialTree2DPerformanceTests.cs +692 -0
  1215. package/Tests/Runtime/Performance/SpatialTree2DPerformanceTests.cs.meta +11 -0
  1216. package/Tests/Runtime/Performance/SpatialTree3DPerformanceTests.cs +650 -0
  1217. package/Tests/Runtime/Performance/SpatialTree3DPerformanceTests.cs.meta +11 -0
  1218. package/Tests/Runtime/Performance.meta +8 -8
  1219. package/Tests/Runtime/Random/DotNetRandomTests.cs +9 -9
  1220. package/Tests/Runtime/Random/DotNetRandomTests.cs.meta +2 -2
  1221. package/Tests/Runtime/Random/IllusionFlowTests.cs +12 -12
  1222. package/Tests/Runtime/Random/IllusionFlowTests.cs.meta +2 -2
  1223. package/Tests/Runtime/Random/LinearCongruentialGeneratorTests.cs +12 -12
  1224. package/Tests/Runtime/Random/LinearCongruentialGeneratorTests.cs.meta +2 -2
  1225. package/Tests/Runtime/Random/PcgRandomTests.cs +9 -9
  1226. package/Tests/Runtime/Random/PcgRandomTests.cs.meta +11 -11
  1227. package/Tests/Runtime/Random/RandomProtoSerializationTests.cs +494 -0
  1228. package/Tests/Runtime/Random/RandomProtoSerializationTests.cs.meta +3 -0
  1229. package/Tests/Runtime/Random/RandomStateSerializationTests.cs +304 -0
  1230. package/Tests/Runtime/Random/RandomStateSerializationTests.cs.meta +4 -0
  1231. package/Tests/Runtime/Random/RandomTestBase.cs +836 -787
  1232. package/Tests/Runtime/Random/RandomTestBase.cs.meta +11 -11
  1233. package/Tests/Runtime/Random/RomuDuoRandomTests.cs +9 -9
  1234. package/Tests/Runtime/Random/RomuDuoRandomTests.cs.meta +2 -2
  1235. package/Tests/Runtime/Random/SplitMix64RandomTests.cs +9 -9
  1236. package/Tests/Runtime/Random/SplitMix64RandomTests.cs.meta +2 -2
  1237. package/Tests/Runtime/Random/SquirrelRandomTests.cs +14 -14
  1238. package/Tests/Runtime/Random/SquirrelRandomTests.cs.meta +11 -11
  1239. package/Tests/Runtime/Random/SystemRandomTests.cs +10 -10
  1240. package/Tests/Runtime/Random/SystemRandomTests.cs.meta +11 -11
  1241. package/Tests/Runtime/Random/UnityRandomTests.cs +9 -9
  1242. package/Tests/Runtime/Random/UnityRandomTests.cs.meta +11 -11
  1243. package/Tests/Runtime/Random/WyRandomTests.cs +9 -9
  1244. package/Tests/Runtime/Random/WyRandomTests.cs.meta +2 -2
  1245. package/Tests/Runtime/Random/XorShiftRandomTests.cs +9 -9
  1246. package/Tests/Runtime/Random/XorShiftRandomTests.cs.meta +11 -11
  1247. package/Tests/Runtime/Random/XoroShiroRandomTests.cs +9 -9
  1248. package/Tests/Runtime/Random/XoroShiroRandomTests.cs.meta +2 -2
  1249. package/Tests/Runtime/Random.meta +8 -8
  1250. package/Tests/Runtime/RuntimeTestTimeouts.cs +3 -0
  1251. package/Tests/Runtime/RuntimeTestTimeouts.cs.meta +11 -0
  1252. package/Tests/Runtime/Scenes/Test1.unity +723 -723
  1253. package/Tests/Runtime/Scenes/Test1.unity.meta +7 -7
  1254. package/Tests/Runtime/Scenes/Test2.unity +723 -723
  1255. package/Tests/Runtime/Scenes/Test2.unity.meta +7 -7
  1256. package/Tests/Runtime/Scenes.meta +2 -2
  1257. package/Tests/Runtime/Serialization/AdaptersJsonTests.cs +67 -0
  1258. package/Tests/Runtime/Serialization/AdaptersJsonTests.cs.meta +11 -0
  1259. package/Tests/Runtime/Serialization/BitSetJsonTests.cs +50 -0
  1260. package/Tests/Runtime/Serialization/BitSetJsonTests.cs.meta +11 -0
  1261. package/Tests/Runtime/Serialization/CyclicBufferJsonTests.cs +67 -0
  1262. package/Tests/Runtime/Serialization/CyclicBufferJsonTests.cs.meta +11 -0
  1263. package/Tests/Runtime/Serialization/DequeJsonTests.cs +70 -0
  1264. package/Tests/Runtime/Serialization/DequeJsonTests.cs.meta +11 -0
  1265. package/Tests/Runtime/Serialization/ImmutableBitSetJsonTests.cs +25 -0
  1266. package/Tests/Runtime/Serialization/ImmutableBitSetJsonTests.cs.meta +11 -0
  1267. package/Tests/Runtime/Serialization/JsonConverterTests.cs +1157 -0
  1268. package/Tests/Runtime/Serialization/JsonConverterTests.cs.meta +11 -0
  1269. package/Tests/Runtime/Serialization/JsonRoundtripComprehensiveTests.cs +239 -0
  1270. package/Tests/Runtime/Serialization/JsonRoundtripComprehensiveTests.cs.meta +11 -0
  1271. package/Tests/Runtime/Serialization/JsonSerializationCorrectnessTests.cs +458 -0
  1272. package/Tests/Runtime/Serialization/JsonSerializationCorrectnessTests.cs.meta +3 -0
  1273. package/Tests/Runtime/Serialization/JsonSerializationTest.cs +156 -156
  1274. package/Tests/Runtime/Serialization/JsonSerializationTest.cs.meta +2 -2
  1275. package/Tests/Runtime/Serialization/MathJsonTests.cs +79 -0
  1276. package/Tests/Runtime/Serialization/MathJsonTests.cs.meta +11 -0
  1277. package/Tests/Runtime/Serialization/ProtoInterfaceResolutionEdgeTests.cs +76 -0
  1278. package/Tests/Runtime/Serialization/ProtoInterfaceResolutionEdgeTests.cs.meta +11 -0
  1279. package/Tests/Runtime/Serialization/ProtoRootRegistrationTests.cs +80 -0
  1280. package/Tests/Runtime/Serialization/ProtoRootRegistrationTests.cs.meta +11 -0
  1281. package/Tests/Runtime/Serialization/ProtoRoundtripComprehensiveTests.cs +257 -0
  1282. package/Tests/Runtime/Serialization/ProtoRoundtripComprehensiveTests.cs.meta +11 -0
  1283. package/Tests/Runtime/Serialization/ProtoSerializationCorrectnessTests.cs +471 -0
  1284. package/Tests/Runtime/Serialization/ProtoSerializationCorrectnessTests.cs.meta +3 -0
  1285. package/Tests/Runtime/Serialization/ProtoSerializationTests.cs +169 -0
  1286. package/Tests/Runtime/Serialization/ProtoSerializationTests.cs.meta +11 -0
  1287. package/Tests/Runtime/Serialization/ProtoSerializeBehaviorTests.cs +62 -0
  1288. package/Tests/Runtime/Serialization/ProtoSerializeBehaviorTests.cs.meta +11 -0
  1289. package/Tests/Runtime/Serialization/SerializerAdditionalTests.cs +895 -0
  1290. package/Tests/Runtime/Serialization/SerializerAdditionalTests.cs.meta +3 -0
  1291. package/Tests/Runtime/Serialization/TypeConverterTests.cs +34 -0
  1292. package/Tests/Runtime/Serialization/TypeConverterTests.cs.meta +11 -0
  1293. package/Tests/Runtime/Serialization.meta +2 -2
  1294. package/Tests/Runtime/Tags/AttributeComponentTests.cs +174 -0
  1295. package/Tests/Runtime/Tags/AttributeComponentTests.cs.meta +3 -0
  1296. package/Tests/Runtime/Tags/AttributeDataTests.cs +312 -0
  1297. package/Tests/Runtime/Tags/AttributeDataTests.cs.meta +11 -0
  1298. package/Tests/Runtime/Tags/AttributeUtilitiesTests.cs +405 -0
  1299. package/Tests/Runtime/Tags/AttributeUtilitiesTests.cs.meta +3 -0
  1300. package/Tests/Runtime/Tags/CosmeticAndCollisionTests.cs +147 -0
  1301. package/Tests/Runtime/Tags/CosmeticAndCollisionTests.cs.meta +11 -0
  1302. package/Tests/Runtime/Tags/CosmeticEffectDataTests.cs +60 -0
  1303. package/Tests/Runtime/Tags/CosmeticEffectDataTests.cs.meta +3 -0
  1304. package/Tests/Runtime/Tags/EffectHandleTests.cs +61 -0
  1305. package/Tests/Runtime/Tags/EffectHandleTests.cs.meta +3 -0
  1306. package/Tests/Runtime/Tags/EffectHandlerTests.cs +270 -0
  1307. package/Tests/Runtime/Tags/EffectHandlerTests.cs.meta +3 -0
  1308. package/Tests/Runtime/Tags/Helpers/RecordingCosmeticComponent.cs +39 -0
  1309. package/Tests/Runtime/Tags/Helpers/RecordingCosmeticComponent.cs.meta +3 -0
  1310. package/Tests/Runtime/Tags/Helpers/TagTestBase.cs +49 -0
  1311. package/Tests/Runtime/Tags/Helpers/TagTestBase.cs.meta +3 -0
  1312. package/Tests/Runtime/Tags/Helpers/TestAttributesComponent.cs +28 -0
  1313. package/Tests/Runtime/Tags/Helpers/TestAttributesComponent.cs.meta +3 -0
  1314. package/Tests/Runtime/Tags/Helpers.meta +3 -0
  1315. package/Tests/Runtime/Tags/TagHandlerTests.cs +108 -0
  1316. package/Tests/Runtime/Tags/TagHandlerTests.cs.meta +3 -0
  1317. package/Tests/Runtime/Tags.meta +8 -0
  1318. package/Tests/Runtime/TestUtils/CommonTestBase.cs +213 -0
  1319. package/Tests/Runtime/TestUtils/CommonTestBase.cs.meta +11 -0
  1320. package/Tests/Runtime/TestUtils/GCAssert.cs +55 -0
  1321. package/Tests/Runtime/TestUtils/GCAssert.cs.meta +11 -0
  1322. package/Tests/Runtime/TestUtils/SpatialAssert.cs +33 -0
  1323. package/Tests/Runtime/TestUtils/SpatialAssert.cs.meta +11 -0
  1324. package/Tests/Runtime/TestUtils/SpatialDiagnostics.cs +195 -0
  1325. package/Tests/Runtime/TestUtils/SpatialDiagnostics.cs.meta +11 -0
  1326. package/Tests/Runtime/TestUtils.meta +8 -0
  1327. package/Tests/Runtime/Utils/AnimationEventEqualityComparerTests.cs +144 -0
  1328. package/Tests/Runtime/Utils/AnimationEventEqualityComparerTests.cs.meta +11 -0
  1329. package/Tests/Runtime/Utils/Ascii85Tests.cs +56 -0
  1330. package/Tests/Runtime/Utils/Ascii85Tests.cs.meta +11 -0
  1331. package/Tests/Runtime/Utils/BuffersTests.cs +1148 -741
  1332. package/Tests/Runtime/Utils/BuffersTests.cs.meta +2 -2
  1333. package/Tests/Runtime/Utils/BuffersWaitInstructionTests.cs +31 -0
  1334. package/Tests/Runtime/Utils/BuffersWaitInstructionTests.cs.meta +11 -0
  1335. package/Tests/Runtime/Utils/CenterPointOffsetTests.cs +67 -0
  1336. package/Tests/Runtime/Utils/CenterPointOffsetTests.cs.meta +11 -0
  1337. package/Tests/Runtime/Utils/ChildSpawnerTests.cs +490 -0
  1338. package/Tests/Runtime/Utils/ChildSpawnerTests.cs.meta +11 -0
  1339. package/Tests/Runtime/Utils/CircleLineRendererTests.cs +80 -0
  1340. package/Tests/Runtime/Utils/CircleLineRendererTests.cs.meta +11 -0
  1341. package/Tests/Runtime/Utils/CollisionProxyTests.cs +442 -0
  1342. package/Tests/Runtime/Utils/CollisionProxyTests.cs.meta +11 -0
  1343. package/Tests/Runtime/Utils/CoroutineHandlerTests.cs +353 -0
  1344. package/Tests/Runtime/Utils/CoroutineHandlerTests.cs.meta +11 -0
  1345. package/Tests/Runtime/Utils/DeferredDisposalResultTests.cs +44 -0
  1346. package/Tests/Runtime/Utils/DeferredDisposalResultTests.cs.meta +11 -0
  1347. package/Tests/Runtime/Utils/LZMAComprehensiveTests.cs +249 -0
  1348. package/Tests/Runtime/Utils/LZMAComprehensiveTests.cs.meta +11 -0
  1349. package/Tests/Runtime/Utils/LZMATests.cs +31 -0
  1350. package/Tests/Runtime/Utils/LZMATests.cs.meta +11 -0
  1351. package/Tests/Runtime/Utils/MatchColliderToSpriteAdditionalTests.cs +86 -0
  1352. package/Tests/Runtime/Utils/MatchColliderToSpriteAdditionalTests.cs.meta +11 -0
  1353. package/Tests/Runtime/Utils/MatchColliderToSpriteTests.cs +503 -0
  1354. package/Tests/Runtime/Utils/MatchColliderToSpriteTests.cs.meta +11 -0
  1355. package/Tests/Runtime/Utils/MatchTransformEdgeTests.cs +34 -0
  1356. package/Tests/Runtime/Utils/MatchTransformEdgeTests.cs.meta +11 -0
  1357. package/Tests/Runtime/Utils/MatchTransformTests.cs +495 -0
  1358. package/Tests/Runtime/Utils/MatchTransformTests.cs.meta +11 -0
  1359. package/Tests/Runtime/Utils/OscillatorTests.cs +540 -0
  1360. package/Tests/Runtime/Utils/OscillatorTests.cs.meta +11 -0
  1361. package/Tests/Runtime/Utils/PolygonCollider2DOptimizerTests.cs +52 -0
  1362. package/Tests/Runtime/Utils/PolygonCollider2DOptimizerTests.cs.meta +11 -0
  1363. package/Tests/Runtime/Utils/RuntimeSingletonTests.cs +766 -0
  1364. package/Tests/Runtime/Utils/RuntimeSingletonTests.cs.meta +11 -0
  1365. package/Tests/Runtime/Utils/SerializedStringComparerEdgeTests.cs +47 -0
  1366. package/Tests/Runtime/Utils/SerializedStringComparerEdgeTests.cs.meta +11 -0
  1367. package/Tests/Runtime/Utils/SerializedStringComparerTests.cs +361 -0
  1368. package/Tests/Runtime/Utils/SerializedStringComparerTests.cs.meta +11 -0
  1369. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs +383 -398
  1370. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs.meta +2 -2
  1371. package/Tests/Runtime/Utils/SpriteRendererSyncTests.cs +134 -0
  1372. package/Tests/Runtime/Utils/SpriteRendererSyncTests.cs.meta +11 -0
  1373. package/Tests/Runtime/Utils/StartTrackerTests.cs +24 -0
  1374. package/Tests/Runtime/Utils/StartTrackerTests.cs.meta +11 -0
  1375. package/Tests/Runtime/Utils/TextureScaleEdgeTests.cs +114 -0
  1376. package/Tests/Runtime/Utils/TextureScaleEdgeTests.cs.meta +11 -0
  1377. package/Tests/Runtime/Utils/TextureScaleTests.cs +298 -0
  1378. package/Tests/Runtime/Utils/TextureScaleTests.cs.meta +3 -0
  1379. package/Tests/Runtime/Utils/TypeNameSorterAdditionalTests.cs +36 -0
  1380. package/Tests/Runtime/Utils/TypeNameSorterAdditionalTests.cs.meta +11 -0
  1381. package/Tests/Runtime/Utils/TypeNameSorterTests.cs +34 -0
  1382. package/Tests/Runtime/Utils/TypeNameSorterTests.cs.meta +11 -0
  1383. package/Tests/Runtime/Utils/UnityObjectNameComparerEdgeTests.cs +63 -0
  1384. package/Tests/Runtime/Utils/UnityObjectNameComparerEdgeTests.cs.meta +11 -0
  1385. package/Tests/Runtime/Utils/UnityObjectNameComparerTests.cs +59 -0
  1386. package/Tests/Runtime/Utils/UnityObjectNameComparerTests.cs.meta +11 -0
  1387. package/Tests/Runtime/Utils.meta +2 -2
  1388. package/Tests/Runtime/Visuals/AnimatedSpriteLayerTests.cs +266 -0
  1389. package/Tests/Runtime/Visuals/AnimatedSpriteLayerTests.cs.meta +11 -0
  1390. package/Tests/Runtime/Visuals/EnhancedImageTests.cs +184 -0
  1391. package/Tests/Runtime/Visuals/EnhancedImageTests.cs.meta +11 -0
  1392. package/Tests/Runtime/Visuals/LayeredImageTests.cs +422 -0
  1393. package/Tests/Runtime/Visuals/LayeredImageTests.cs.meta +11 -0
  1394. package/Tests/Runtime/Visuals/VisualsTestHelpers.cs +132 -0
  1395. package/Tests/Runtime/Visuals/VisualsTestHelpers.cs.meta +11 -0
  1396. package/Tests/Runtime/Visuals.meta +3 -0
  1397. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef +24 -23
  1398. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef.meta +7 -7
  1399. package/Tests/Runtime.meta +8 -8
  1400. package/Tests.meta +8 -8
  1401. package/URP/VolumeProfiles/Post Processing Bloom Profile(URP).asset +63 -63
  1402. package/URP/VolumeProfiles/Post Processing Bloom Profile(URP).asset.meta +8 -8
  1403. package/URP/VolumeProfiles.meta +8 -8
  1404. package/URP.meta +8 -8
  1405. package/node_modules.meta +8 -0
  1406. package/package.json +95 -38
  1407. package/package.json.meta +7 -7
  1408. package/scripts/check-eol.ps1 +52 -0
  1409. package/scripts/check-eol.ps1.meta +7 -0
  1410. package/scripts/clean-nul.ps1 +29 -0
  1411. package/scripts/clean-nul.ps1.meta +7 -0
  1412. package/scripts/lint-doc-links.ps1 +80 -0
  1413. package/scripts/lint-doc-links.ps1.meta +7 -0
  1414. package/scripts/normalize-eol.ps1 +71 -0
  1415. package/scripts/normalize-eol.ps1.meta +7 -0
  1416. package/scripts.meta +8 -0
  1417. package/Editor/Sprites/ProjectAnimationSettings.cs +0 -50
  1418. package/Editor/Sprites/ProjectAnimationSettings.cs.meta +0 -3
  1419. package/Editor/Sprites/TextureSettingsApplier.cs +0 -178
  1420. package/Editor/Sprites/TextureSettingsApplier.cs.meta +0 -3
  1421. package/Runtime/Core/Attributes/ParentComponent.cs +0 -189
  1422. package/Runtime/Core/DataStructure/KDTree.cs +0 -434
  1423. package/Runtime/Core/DataStructure/QuadTree.cs +0 -431
  1424. package/Runtime/Core/DataStructure/RTree.cs +0 -356
  1425. package/Runtime/Core/Extension/HashSetExtensions.cs +0 -12
  1426. package/Runtime/Core/Extension/HashSetExtensions.cs.meta +0 -11
  1427. package/Runtime/Core/Math/Line.cs +0 -55
  1428. package/Runtime/Core/Math/Line.cs.meta +0 -11
  1429. package/Runtime/Core/Math/XXHash.cs +0 -310
  1430. package/Runtime/Core/Math/XXHash.cs.meta +0 -11
  1431. package/Tests/Runtime/Components/RelationalComponentsTesterSimple.cs +0 -40
  1432. package/Tests/Runtime/Components.meta +0 -3
  1433. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs +0 -14
  1434. package/Tests/Runtime/DataStructures/QuadTreeTests.cs +0 -14
  1435. package/Tests/Runtime/DataStructures/QuadTreeTests.cs.meta +0 -11
  1436. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs +0 -130
  1437. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs.meta +0 -11
  1438. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs +0 -14
  1439. package/Tests/Runtime/Helper/FormattingHelperTests.cs +0 -129
  1440. package/Tests/Runtime/Helper/FormattingHelperTests.cs.meta +0 -3
  1441. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs +0 -14
  1442. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs.meta +0 -11
  1443. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs +0 -14
  1444. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs.meta +0 -11
  1445. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs +0 -158
  1446. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs.meta +0 -11
  1447. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs +0 -14
  1448. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs.meta +0 -11
  1449. package/Third Party Notices.md +0 -1
@@ -1,655 +1,1318 @@
1
- namespace WallstopStudios.UnityHelpers.Core.Random
2
- {
3
- using System;
4
- using System.Collections.Concurrent;
5
- using System.Collections.Generic;
6
- using System.Linq;
7
- using System.Runtime.Serialization;
8
- using DataStructure.Adapters;
9
- using UnityEngine;
10
-
11
- [Serializable]
12
- [DataContract]
13
- public abstract class AbstractRandom : IRandom
14
- {
15
- private static readonly ConcurrentDictionary<Type, Array> EnumTypeCache = new();
16
-
17
- protected const uint HalfwayUint = uint.MaxValue / 2;
18
- protected const float MagicFloat = 5.960465E-008F;
19
-
20
- protected double? _cachedGaussian;
21
-
22
- public abstract RandomState InternalState { get; }
23
-
24
- private readonly byte[] _guidBytes = new byte[16];
25
-
26
- public virtual int Next()
27
- {
28
- // Mask out the MSB to ensure the value is within [0, int.MaxValue]
29
- return unchecked((int)NextUint() & 0x7FFFFFFF);
30
- }
31
-
32
- public int Next(int max)
33
- {
34
- if (max <= 0)
35
- {
36
- throw new ArgumentException($"Max {max} cannot be less-than or equal-to 0");
37
- }
38
-
39
- return unchecked((int)NextUint(unchecked((uint)max)));
40
- }
41
-
42
- public int Next(int min, int max)
43
- {
44
- if (max <= min)
45
- {
46
- throw new ArgumentException(
47
- $"Min {min} cannot be larger-than or equal-to max {max}"
48
- );
49
- }
50
-
51
- uint range = (uint)(max - min);
52
- if (range == 0)
53
- {
54
- return unchecked((int)NextUint());
55
- }
56
-
57
- return unchecked((int)(min + NextUint(range)));
58
- }
59
-
60
- // Internal sampler
61
- public abstract uint NextUint();
62
-
63
- public uint NextUint(uint max)
64
- {
65
- if (max == 0)
66
- {
67
- throw new ArgumentException("Max cannot be zero");
68
- }
69
-
70
- uint result = (uint)(NextDouble() * max);
71
- if (result == max)
72
- {
73
- return result - 1;
74
- }
75
-
76
- return result;
77
- }
78
-
79
- public uint NextUint(uint min, uint max)
80
- {
81
- if (max <= min)
82
- {
83
- throw new ArgumentException(
84
- $"Min {min} cannot be larger-than or equal-to max {max}"
85
- );
86
- }
87
-
88
- return min + NextUint(max - min);
89
- }
90
-
91
- public short NextShort()
92
- {
93
- return NextShort(short.MaxValue);
94
- }
95
-
96
- public short NextShort(short max)
97
- {
98
- return NextShort(0, max);
99
- }
100
-
101
- public short NextShort(short min, short max)
102
- {
103
- return unchecked((short)Next(min, max));
104
- }
105
-
106
- public byte NextByte()
107
- {
108
- return NextByte(byte.MaxValue);
109
- }
110
-
111
- public byte NextByte(byte max)
112
- {
113
- return NextByte(0, max);
114
- }
115
-
116
- public byte NextByte(byte min, byte max)
117
- {
118
- return unchecked((byte)Next(min, max));
119
- }
120
-
121
- public long NextLong()
122
- {
123
- uint upper = NextUint();
124
- uint lower = NextUint();
125
- unchecked
126
- {
127
- return (long)((((ulong)upper << 32) | lower) & 0x7FFFFFFFFFFFFFFF);
128
- }
129
- }
130
-
131
- public long NextLong(long max)
132
- {
133
- if (max <= 0)
134
- {
135
- throw new ArgumentException($"Max {max} cannot be less-than or equal-to 0");
136
- }
137
-
138
- long result = (long)(NextDouble() * max);
139
- if (result == max)
140
- {
141
- return result - 1;
142
- }
143
-
144
- return result;
145
- }
146
-
147
- public long NextLong(long min, long max)
148
- {
149
- if (max <= min)
150
- {
151
- throw new ArgumentException(
152
- $"Min {min} cannot be larger-than or equal-to Max {max}"
153
- );
154
- }
155
-
156
- ulong range = (ulong)(max - min);
157
- if (range == 0)
158
- {
159
- return unchecked((long)NextUlong());
160
- }
161
-
162
- long result = unchecked((long)(NextDouble() * range + min));
163
- if (result == max)
164
- {
165
- return result - 1;
166
- }
167
-
168
- return result;
169
- }
170
-
171
- public ulong NextUlong()
172
- {
173
- uint upper = NextUint();
174
- uint lower = NextUint();
175
- return ((ulong)upper << 32) | lower;
176
- }
177
-
178
- public ulong NextUlong(ulong max)
179
- {
180
- ulong result = (ulong)(NextDouble() * max);
181
- if (result == max)
182
- {
183
- return result - 1;
184
- }
185
- return result;
186
- }
187
-
188
- public ulong NextUlong(ulong min, ulong max)
189
- {
190
- if (max <= min)
191
- {
192
- throw new ArgumentException(
193
- $"Min {min} cannot be larger-than or equal-to max {max}"
194
- );
195
- }
196
-
197
- return NextUlong(max - min) + min;
198
- }
199
-
200
- public virtual bool NextBool()
201
- {
202
- return NextUint() < HalfwayUint;
203
- }
204
-
205
- public void NextBytes(byte[] buffer)
206
- {
207
- if (buffer == null)
208
- {
209
- throw new ArgumentException(nameof(buffer));
210
- }
211
-
212
- const int sizeOfInt = 4; // May differ on some platforms
213
-
214
- // See how many ints we can slap into it.
215
- int chunks = buffer.Length / sizeOfInt;
216
- int spare = buffer.Length - chunks * sizeOfInt;
217
- for (int i = 0; i < chunks; ++i)
218
- {
219
- int offset = i * sizeOfInt;
220
- uint random = NextUint();
221
- for (int j = 0; j < sizeOfInt; ++j)
222
- {
223
- buffer[offset + j] = unchecked(
224
- (byte)((random >> (j * sizeOfInt)) & 0x000000FF)
225
- );
226
- }
227
- }
228
-
229
- if (0 < spare)
230
- {
231
- uint spareRandom = NextUint();
232
- for (int i = 0; i < spare; ++i)
233
- {
234
- buffer[buffer.Length - 1 - i] = unchecked(
235
- (byte)((spareRandom >> (i * sizeOfInt)) & 0x000000FF)
236
- );
237
- }
238
- }
239
- }
240
-
241
- public virtual double NextDouble()
242
- {
243
- double value;
244
- do
245
- {
246
- value = NextUint() * (1.0 / uint.MaxValue);
247
- } while (1.0 <= value);
248
-
249
- return value;
250
- }
251
-
252
- public double NextDouble(double max)
253
- {
254
- if (max <= 0)
255
- {
256
- throw new ArgumentException($"Max {max} cannot be less-than or equal-to 0");
257
- }
258
-
259
- return NextDouble() * max;
260
- }
261
-
262
- public double NextDouble(double min, double max)
263
- {
264
- if (max <= min)
265
- {
266
- throw new ArgumentException(
267
- $"Min {min} cannot be larger-than or equal-to max {max}"
268
- );
269
- }
270
-
271
- double range = max - min;
272
- if (double.IsInfinity(range))
273
- {
274
- return NextDoubleWithInfiniteRange(min, max);
275
- }
276
-
277
- return min + NextDouble() * range;
278
- }
279
-
280
- protected double NextDoubleWithInfiniteRange(double min, double max)
281
- {
282
- double random;
283
- do
284
- {
285
- random = NextDoubleFullRange();
286
- } while (random < min || max <= random);
287
-
288
- return random;
289
- }
290
-
291
- protected double NextDoubleFullRange()
292
- {
293
- double value = double.NaN;
294
- do
295
- {
296
- ulong randomBits = NextUlong();
297
-
298
- // Extract exponent (bits 52-62)
299
- const ulong exponentMask = 0x7FF0000000000000;
300
-
301
- ulong exponent = (randomBits & exponentMask) >> 52;
302
-
303
- // Ensure exponent is not all 1's to avoid Inf and NaN
304
- if (exponent == 0x7FF)
305
- {
306
- continue; // Regenerate
307
- }
308
-
309
- /*
310
- For uniform distribution over all finite doubles, no further masking is necessary,
311
- reassemble the bits
312
- */
313
- value = BitConverter.Int64BitsToDouble(unchecked((long)randomBits));
314
- } while (double.IsInfinity(value) || double.IsNaN(value));
315
-
316
- return value;
317
- }
318
-
319
- public double NextGaussian(double mean = 0, double stdDev = 1)
320
- {
321
- return mean + NextGaussianInternal() * stdDev;
322
- }
323
-
324
- private double NextGaussianInternal()
325
- {
326
- if (_cachedGaussian != null)
327
- {
328
- double gaussian = _cachedGaussian.Value;
329
- _cachedGaussian = null;
330
- return gaussian;
331
- }
332
-
333
- // https://stackoverflow.com/q/7183229/1917135
334
- double x;
335
- double y;
336
- double square;
337
- do
338
- {
339
- x = 2 * NextDouble() - 1;
340
- y = 2 * NextDouble() - 1;
341
- square = x * x + y * y;
342
- } while (square is 0 or > 1);
343
-
344
- double fac = Math.Sqrt(-2 * Math.Log(square) / square);
345
- _cachedGaussian = x * fac;
346
- return y * fac;
347
- }
348
-
349
- public virtual float NextFloat()
350
- {
351
- float value;
352
- do
353
- {
354
- value = NextUint() / (1f * uint.MaxValue);
355
- } while (1f <= value);
356
-
357
- return value;
358
- }
359
-
360
- public float NextFloat(float max)
361
- {
362
- if (max <= 0)
363
- {
364
- throw new ArgumentException($"{max} cannot be less-than or equal-to 0");
365
- }
366
-
367
- return NextFloat() * max;
368
- }
369
-
370
- public float NextFloat(float min, float max)
371
- {
372
- if (max <= min)
373
- {
374
- throw new ArgumentException(
375
- $"Min {min} cannot be larger-than or equal-to max {max}"
376
- );
377
- }
378
-
379
- float range = max - min;
380
- if (float.IsInfinity(range))
381
- {
382
- return (float)NextDouble(min, max);
383
- }
384
-
385
- return min + NextFloat(range);
386
- }
387
-
388
- public T NextOf<T>(IEnumerable<T> enumerable)
389
- {
390
- return enumerable switch
391
- {
392
- IReadOnlyList<T> list => NextOf(list),
393
- IReadOnlyCollection<T> collection => NextOf(collection),
394
- null => throw new ArgumentNullException(nameof(enumerable)),
395
- _ => NextOf(enumerable.ToArray()),
396
- };
397
- }
398
-
399
- public T NextOf<T>(IReadOnlyCollection<T> collection)
400
- {
401
- if (collection is not { Count: > 0 })
402
- {
403
- throw new ArgumentException("Collection cannot be empty");
404
- }
405
-
406
- if (collection is IReadOnlyList<T> list)
407
- {
408
- return NextOf(list);
409
- }
410
- int index = Next(collection.Count);
411
-
412
- switch (collection)
413
- {
414
- case HashSet<T> hashSet:
415
- {
416
- int i = 0;
417
- foreach (T element in hashSet)
418
- {
419
- if (index == i++)
420
- {
421
- return element;
422
- }
423
- }
424
- throw new ArgumentException(nameof(collection));
425
- }
426
- case SortedSet<T> sortedSet:
427
- {
428
- int i = 0;
429
- foreach (T element in sortedSet)
430
- {
431
- if (index == i++)
432
- {
433
- return element;
434
- }
435
- }
436
-
437
- throw new ArgumentException(nameof(collection));
438
- }
439
- case LinkedList<T> linkedList:
440
- {
441
- int i = 0;
442
- foreach (T element in linkedList)
443
- {
444
- if (index == i++)
445
- {
446
- return element;
447
- }
448
- }
449
-
450
- throw new ArgumentException(nameof(collection));
451
- }
452
- case Queue<T> queue:
453
- {
454
- int i = 0;
455
- foreach (T element in queue)
456
- {
457
- if (index == i++)
458
- {
459
- return element;
460
- }
461
- }
462
-
463
- throw new ArgumentException(nameof(collection));
464
- }
465
- case Stack<T> stack:
466
- {
467
- int i = 0;
468
- foreach (T element in stack)
469
- {
470
- if (index == i++)
471
- {
472
- return element;
473
- }
474
- }
475
-
476
- throw new ArgumentException(nameof(collection));
477
- }
478
- default:
479
- {
480
- return collection.ElementAt(index);
481
- }
482
- }
483
- }
484
-
485
- public T NextOf<T>(IReadOnlyList<T> list)
486
- {
487
- if (list is not { Count: > 0 })
488
- {
489
- throw new ArgumentNullException(nameof(list));
490
- }
491
-
492
- /*
493
- For small lists, it's much more efficient to simply return one of their elements
494
- instead of trying to generate a random number within bounds (which is implemented as a while(true) loop)
495
- */
496
- return list.Count switch
497
- {
498
- 1 => list[0],
499
- 2 => NextBool() ? list[0] : list[1],
500
- _ => list[Next(list.Count)],
501
- };
502
- }
503
-
504
- public T NextEnum<T>()
505
- where T : struct, Enum
506
- {
507
- Type enumType = typeof(T);
508
- T[] enumValues = (T[])EnumTypeCache.GetOrAdd(enumType, type => Enum.GetValues(type));
509
-
510
- return RandomOf(enumValues);
511
- }
512
-
513
- public Guid NextGuid()
514
- {
515
- return new Guid(GenerateGuidBytes(_guidBytes));
516
- }
517
-
518
- public KGuid NextKGuid()
519
- {
520
- return new KGuid(GenerateGuidBytes(_guidBytes));
521
- }
522
-
523
- private byte[] GenerateGuidBytes(byte[] guidBytes)
524
- {
525
- NextBytes(guidBytes);
526
- SetUuidV4Bits(guidBytes);
527
- return guidBytes;
528
- }
529
-
530
- public static void SetUuidV4Bits(byte[] bytes)
531
- {
532
- // Set version to 4 (bits 6-7 of byte 6)
533
-
534
- // Clear the version bits first (clear bits 4-7)
535
- byte value = bytes[6];
536
- value &= 0x0f;
537
- // Set version 4 (set bits 4-7 to 0100)
538
- value |= 0x40;
539
- bytes[6] = value;
540
-
541
- // Set variant to RFC 4122 (bits 6-7 of byte 8)
542
- value = bytes[8];
543
- // Clear the variant bits first (clear bits 6-7)
544
- value &= 0x3f;
545
- // Set RFC 4122 variant (set bits 6-7 to 10)
546
- value |= 0x80;
547
- bytes[8] = value;
548
- }
549
-
550
- // Advances the RNG
551
- // https://code2d.wordpress.com/2020/07/21/perlin-noise/
552
- public float[,] NextNoiseMap(
553
- int width,
554
- int height,
555
- PerlinNoise noise = null,
556
- float scale = 2.5f,
557
- int octaves = 8
558
- )
559
- {
560
- if (width <= 0)
561
- {
562
- throw new ArgumentException(nameof(width));
563
- }
564
-
565
- if (height <= 0)
566
- {
567
- throw new ArgumentException(nameof(height));
568
- }
569
-
570
- if (scale <= 0)
571
- {
572
- throw new ArgumentException(nameof(scale));
573
- }
574
-
575
- if (octaves < 1)
576
- {
577
- throw new ArgumentException(nameof(octaves));
578
- }
579
-
580
- noise ??= PerlinNoise.Instance;
581
- float[,] noiseMap = new float[width, height];
582
-
583
- Vector2[] octaveOffsets = new Vector2[octaves];
584
- for (int i = 0; i < octaves; i++)
585
- {
586
- float offsetX = Next(-100000, 100000);
587
- float offsetY = Next(-100000, 100000);
588
- octaveOffsets[i] = new Vector2(offsetX, offsetY);
589
- }
590
-
591
- float maxNoiseHeight = float.MinValue;
592
- float minNoiseHeight = float.MaxValue;
593
-
594
- float halfWidth = width / 2f;
595
- float halfHeight = height / 2f;
596
-
597
- for (int x = 0; x < width; ++x)
598
- {
599
- for (int y = 0; y < height; ++y)
600
- {
601
- float amplitude = 1;
602
- float frequency = 1;
603
- float noiseHeight = 0;
604
- for (int i = 0; i < octaves; i++)
605
- {
606
- float sampleX = (x - halfWidth) / scale * frequency + octaveOffsets[i].x;
607
- float sampleY = (y - halfHeight) / scale * frequency + octaveOffsets[i].y;
608
-
609
- float perlinValue = noise.Noise(sampleX, sampleY) * 2 - 1;
610
- noiseHeight += perlinValue * amplitude;
611
- }
612
-
613
- if (noiseHeight > maxNoiseHeight)
614
- {
615
- maxNoiseHeight = noiseHeight;
616
- }
617
- else if (noiseHeight < minNoiseHeight)
618
- {
619
- minNoiseHeight = noiseHeight;
620
- }
621
-
622
- noiseMap[x, y] = noiseHeight;
623
- }
624
- }
625
-
626
- for (int x = 0; x < width; ++x)
627
- {
628
- for (int y = 0; y < height; ++y)
629
- {
630
- // Returns a value between 0f and 1f based on noiseMap value
631
- // minNoiseHeight being 0f, and maxNoiseHeight being 1f
632
- noiseMap[x, y] = Mathf.InverseLerp(
633
- minNoiseHeight,
634
- maxNoiseHeight,
635
- noiseMap[x, y]
636
- );
637
- }
638
- }
639
- return noiseMap;
640
- }
641
-
642
- protected T RandomOf<T>(T[] values)
643
- {
644
- return values.Length switch
645
- {
646
- 0 => default,
647
- 1 => values[0],
648
- 2 => NextBool() ? values[0] : values[1],
649
- _ => values[Next(values.Length)],
650
- };
651
- }
652
-
653
- public abstract IRandom Copy();
654
- }
655
- }
1
+ namespace WallstopStudios.UnityHelpers.Core.Random
2
+ {
3
+ using System;
4
+ using System.Collections.Generic;
5
+ using System.Linq;
6
+ using System.Runtime.CompilerServices;
7
+ using System.Runtime.Serialization;
8
+ using DataStructure.Adapters;
9
+ using ProtoBuf;
10
+ using UnityEngine;
11
+ using Utils;
12
+ #if !SINGLE_THREADED
13
+ using System.Collections.Concurrent;
14
+ #else
15
+ using Extension;
16
+ #endif
17
+
18
+ [Serializable]
19
+ [DataContract]
20
+ [ProtoContract]
21
+ /// <summary>
22
+ /// Common abstract base for all <see cref="IRandom"/> implementations with protobuf support.
23
+ /// </summary>
24
+ /// <remarks>
25
+ /// <para>
26
+ /// This type is annotated with [ProtoContract] and explicitly lists all known concrete
27
+ /// implementations via [ProtoInclude]. This enables polymorphic protobuf serialization when
28
+ /// the declared type is AbstractRandom (or another abstract base that carries the
29
+ /// [ProtoInclude] annotations).
30
+ /// </para>
31
+ /// <para>
32
+ /// Adding a new PRNG: implement <see cref="IRandom"/>, derive from <see cref="AbstractRandom"/>,
33
+ /// and add a new [ProtoInclude(tag, typeof(YourRandom))] entry here with a unique, stable
34
+ /// field number. Never renumber existing tags once published.
35
+ /// </para>
36
+ /// <example>
37
+ /// <code>
38
+ /// // 1) Implement your generator
39
+ /// [ProtoContract]
40
+ /// public sealed class MyCustomRandom : AbstractRandom { /* state + [ProtoMember]s... */ }
41
+ ///
42
+ /// // 2) Add a ProtoInclude tag below, e.g.
43
+ /// // [ProtoInclude(112, typeof(MyCustomRandom))]
44
+ ///
45
+ /// // 3) Use AbstractRandom as your declared type in protobuf models for seamless polymorphism
46
+ /// [ProtoContract]
47
+ /// class RNGHolder { [ProtoMember(1)] public AbstractRandom rng; }
48
+ /// </code>
49
+ /// </example>
50
+ /// <para>
51
+ /// Interfaces: protobuf-net cannot infer a concrete type when deserializing to an interface such as
52
+ /// <see cref="IRandom"/>. You can still serialize an IRandom value (we use the runtime type), but for
53
+ /// deserialization you must either:
54
+ /// </para>
55
+ /// <list type="bullet">
56
+ /// <item><description>Declare the field/property as AbstractRandom (recommended), or</description></item>
57
+ /// <item><description>Call Serializer.RegisterProtobufRoot&lt;IRandom, SomeConcreteRandom&gt;() at startup and
58
+ /// then use Serializer.ProtoDeserialize&lt;IRandom&gt;.</description></item>
59
+ /// </list>
60
+ /// </remarks>
61
+ [ProtoInclude(100, typeof(DotNetRandom))]
62
+ [ProtoInclude(101, typeof(PcgRandom))]
63
+ [ProtoInclude(102, typeof(XorShiftRandom))]
64
+ [ProtoInclude(103, typeof(WyRandom))]
65
+ [ProtoInclude(104, typeof(XoroShiroRandom))]
66
+ [ProtoInclude(105, typeof(UnityRandom))]
67
+ [ProtoInclude(106, typeof(SystemRandom))]
68
+ [ProtoInclude(107, typeof(LinearCongruentialGenerator))]
69
+ [ProtoInclude(108, typeof(SquirrelRandom))]
70
+ [ProtoInclude(109, typeof(RomuDuo))]
71
+ [ProtoInclude(110, typeof(SplitMix64))]
72
+ [ProtoInclude(111, typeof(IllusionFlow))]
73
+ public abstract class AbstractRandom : IRandom
74
+ {
75
+ #if SINGLE_THREADED
76
+ private static readonly Dictionary<Type, Array> EnumTypeCache = new();
77
+ #else
78
+ private static readonly ConcurrentDictionary<Type, Array> EnumTypeCache = new();
79
+ #endif
80
+
81
+ protected const float MagicFloat = 5.960465E-008F;
82
+ private const ulong LongBias = 1UL << 63;
83
+ private const int MaxRejectionAttempts32 = 1 << 16;
84
+ private const int MaxRejectionAttempts64 = 1 << 20;
85
+ private const int MaxGaussianAttempts = 1 << 20;
86
+ private const int MaxDoubleBitAttempts = 1 << 20;
87
+
88
+ [ProtoMember(1)]
89
+ protected double? _cachedGaussian;
90
+
91
+ public abstract RandomState InternalState { get; }
92
+
93
+ private readonly byte[] _guidBytes = new byte[16];
94
+
95
+ // Bit/byte reservoirs to accelerate small requests
96
+ // Note: included in protobuf to preserve exact generator state across round-trips
97
+ [ProtoMember(2)]
98
+ protected uint _bitBuffer;
99
+
100
+ [ProtoMember(3)]
101
+ protected int _bitCount;
102
+
103
+ [ProtoMember(4)]
104
+ protected uint _byteBuffer;
105
+
106
+ [ProtoMember(5)]
107
+ protected int _byteCount;
108
+
109
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
110
+ protected RandomState BuildState(ulong state1, ulong state2 = 0, byte[] payload = null)
111
+ {
112
+ return new RandomState(
113
+ state1,
114
+ state2,
115
+ _cachedGaussian,
116
+ payload: payload,
117
+ bitBuffer: _bitBuffer,
118
+ bitCount: _bitCount,
119
+ byteBuffer: _byteBuffer,
120
+ byteCount: _byteCount
121
+ );
122
+ }
123
+
124
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
125
+ protected void RestoreCommonState(RandomState state)
126
+ {
127
+ _cachedGaussian = state.Gaussian;
128
+ _bitBuffer = state.BitBuffer;
129
+ _bitCount = state.BitCount;
130
+ _byteBuffer = state.ByteBuffer;
131
+ _byteCount = state.ByteCount;
132
+ }
133
+
134
+ public virtual int Next()
135
+ {
136
+ // Mask out the MSB to ensure the value is within [0, int.MaxValue]
137
+ return unchecked((int)NextUint() & 0x7FFFFFFF);
138
+ }
139
+
140
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
141
+ public int Next(int max)
142
+ {
143
+ if (max <= 0)
144
+ {
145
+ throw new ArgumentException($"Max {max} cannot be less-than or equal-to 0");
146
+ }
147
+
148
+ return unchecked((int)NextUint(unchecked((uint)max)));
149
+ }
150
+
151
+ public int Next(int min, int max)
152
+ {
153
+ if (max <= min)
154
+ {
155
+ throw new ArgumentException(
156
+ $"Min {min} cannot be larger-than or equal-to max {max}"
157
+ );
158
+ }
159
+
160
+ uint range = (uint)(max - min);
161
+ if (range == 0)
162
+ {
163
+ return unchecked((int)NextUint());
164
+ }
165
+
166
+ return unchecked((int)(min + NextUint(range)));
167
+ }
168
+
169
+ // Internal sampler
170
+ public abstract uint NextUint();
171
+
172
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
173
+ public uint NextUint(uint max)
174
+ {
175
+ if (max == 0)
176
+ {
177
+ throw new ArgumentException("Max cannot be zero");
178
+ }
179
+
180
+ // Power-of-two fast path
181
+ if ((max & (max - 1)) == 0)
182
+ {
183
+ return NextUint() & (max - 1);
184
+ }
185
+
186
+ // Lemire's method (32-bit): take high 32 bits of r*max
187
+ uint r = NextUint();
188
+ ulong m = (ulong)r * max;
189
+ uint lo = (uint)m;
190
+ if (lo < max)
191
+ {
192
+ uint t = unchecked((0u - max) % max);
193
+ int attempts = 0;
194
+ while (lo < t)
195
+ {
196
+ if (++attempts > MaxRejectionAttempts32)
197
+ {
198
+ // Prevent infinite loop: fall back to modulo (small bias) rather than hang
199
+ return r % max;
200
+ }
201
+ r = NextUint();
202
+ m = (ulong)r * max;
203
+ lo = (uint)m;
204
+ }
205
+ }
206
+ return (uint)(m >> 32);
207
+ }
208
+
209
+ public uint NextUint(uint min, uint max)
210
+ {
211
+ if (max <= min)
212
+ {
213
+ throw new ArgumentException(
214
+ $"Min {min} cannot be larger-than or equal-to max {max}"
215
+ );
216
+ }
217
+
218
+ return min + NextUint(max - min);
219
+ }
220
+
221
+ public short NextShort()
222
+ {
223
+ return NextShort(short.MaxValue);
224
+ }
225
+
226
+ public short NextShort(short max)
227
+ {
228
+ return NextShort(0, max);
229
+ }
230
+
231
+ public short NextShort(short min, short max)
232
+ {
233
+ return unchecked((short)Next(min, max));
234
+ }
235
+
236
+ public byte NextByte()
237
+ {
238
+ if (_byteCount == 0)
239
+ {
240
+ _byteBuffer = NextUint();
241
+ _byteCount = 4;
242
+ }
243
+ byte b = (byte)_byteBuffer;
244
+ _byteBuffer >>= 8;
245
+ _byteCount--;
246
+ return b;
247
+ }
248
+
249
+ public byte NextByte(byte max)
250
+ {
251
+ return NextByte(0, max);
252
+ }
253
+
254
+ public byte NextByte(byte min, byte max)
255
+ {
256
+ return unchecked((byte)Next(min, max));
257
+ }
258
+
259
+ public long NextLong()
260
+ {
261
+ uint upper = NextUint();
262
+ uint lower = NextUint();
263
+ unchecked
264
+ {
265
+ return (long)((((ulong)upper << 32) | lower) & 0x7FFFFFFFFFFFFFFF);
266
+ }
267
+ }
268
+
269
+ public long NextLong(long max)
270
+ {
271
+ if (max <= 0)
272
+ {
273
+ throw new ArgumentException($"Max {max} cannot be less-than or equal-to 0");
274
+ }
275
+
276
+ return unchecked((long)NextUlong(unchecked((ulong)max)));
277
+ }
278
+
279
+ public long NextLong(long min, long max)
280
+ {
281
+ if (max <= min)
282
+ {
283
+ throw new ArgumentException(
284
+ $"Min {min} cannot be larger-than or equal-to Max {max}"
285
+ );
286
+ }
287
+
288
+ ulong biasedMin = BiasLong(min);
289
+ ulong biasedMax = BiasLong(max);
290
+ ulong range = biasedMax - biasedMin;
291
+
292
+ ulong sample = NextUlong(range);
293
+ ulong biasedResult = biasedMin + sample;
294
+ return UnbiasLong(biasedResult);
295
+ }
296
+
297
+ public ulong NextUlong()
298
+ {
299
+ uint upper = NextUint();
300
+ uint lower = NextUint();
301
+ return ((ulong)upper << 32) | lower;
302
+ }
303
+
304
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
305
+ public ulong NextUlong(ulong max)
306
+ {
307
+ if (max == 0)
308
+ {
309
+ throw new ArgumentException("Max cannot be zero");
310
+ }
311
+
312
+ // 64-bit Lemire method via high 64 bits of 128-bit product
313
+ // Produces uniform values in [0, max) without rejection
314
+ return MulHi64(NextUlong(), max);
315
+ }
316
+
317
+ public ulong NextUlong(ulong min, ulong max)
318
+ {
319
+ if (max <= min)
320
+ {
321
+ throw new ArgumentException(
322
+ $"Min {min} cannot be larger-than or equal-to max {max}"
323
+ );
324
+ }
325
+
326
+ return NextUlong(max - min) + min;
327
+ }
328
+
329
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
330
+ public virtual bool NextBool()
331
+ {
332
+ if (_bitCount == 0)
333
+ {
334
+ _bitBuffer = NextUint();
335
+ _bitCount = 32;
336
+ }
337
+ bool bit = (_bitBuffer & 1u) == 0;
338
+ _bitBuffer >>= 1;
339
+ _bitCount--;
340
+ return bit;
341
+ }
342
+
343
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
344
+ public virtual void NextBytes(byte[] buffer)
345
+ {
346
+ if (buffer == null)
347
+ {
348
+ throw new ArgumentNullException(nameof(buffer));
349
+ }
350
+ NextBytes(buffer.AsSpan());
351
+ }
352
+
353
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
354
+ public virtual void NextBytes(Span<byte> buffer)
355
+ {
356
+ int i = 0;
357
+ int len = buffer.Length;
358
+
359
+ // 16-byte unrolled blocks
360
+ for (; i <= len - 16; i += 16)
361
+ {
362
+ uint r0 = NextUint();
363
+ uint r1 = NextUint();
364
+ uint r2 = NextUint();
365
+ uint r3 = NextUint();
366
+
367
+ buffer[i + 0] = (byte)r0;
368
+ buffer[i + 1] = (byte)(r0 >> 8);
369
+ buffer[i + 2] = (byte)(r0 >> 16);
370
+ buffer[i + 3] = (byte)(r0 >> 24);
371
+
372
+ buffer[i + 4] = (byte)r1;
373
+ buffer[i + 5] = (byte)(r1 >> 8);
374
+ buffer[i + 6] = (byte)(r1 >> 16);
375
+ buffer[i + 7] = (byte)(r1 >> 24);
376
+
377
+ buffer[i + 8] = (byte)r2;
378
+ buffer[i + 9] = (byte)(r2 >> 8);
379
+ buffer[i + 10] = (byte)(r2 >> 16);
380
+ buffer[i + 11] = (byte)(r2 >> 24);
381
+
382
+ buffer[i + 12] = (byte)r3;
383
+ buffer[i + 13] = (byte)(r3 >> 8);
384
+ buffer[i + 14] = (byte)(r3 >> 16);
385
+ buffer[i + 15] = (byte)(r3 >> 24);
386
+ }
387
+
388
+ // 4-byte chunks
389
+ for (; i <= len - 4; i += 4)
390
+ {
391
+ uint r = NextUint();
392
+ buffer[i + 0] = (byte)r;
393
+ buffer[i + 1] = (byte)(r >> 8);
394
+ buffer[i + 2] = (byte)(r >> 16);
395
+ buffer[i + 3] = (byte)(r >> 24);
396
+ }
397
+
398
+ // Tail
399
+ if (i < len)
400
+ {
401
+ uint r = NextUint();
402
+ int j = 0;
403
+ for (; i < len; ++i, ++j)
404
+ {
405
+ buffer[i] = (byte)(r >> (j * 8));
406
+ }
407
+ }
408
+ }
409
+
410
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
411
+ public virtual double NextDouble()
412
+ {
413
+ // 53 random bits from a 64-bit sample
414
+ const double scale = 1.0 / 9007199254740992.0; // 2^53
415
+ ulong combined = NextUlong() >> 11;
416
+ return combined * scale;
417
+ }
418
+
419
+ public double NextDouble(double max)
420
+ {
421
+ if (max <= 0)
422
+ {
423
+ throw new ArgumentException($"Max {max} cannot be less-than or equal-to 0");
424
+ }
425
+
426
+ return NextDouble() * max;
427
+ }
428
+
429
+ public double NextDouble(double min, double max)
430
+ {
431
+ if (max <= min)
432
+ {
433
+ throw new ArgumentException(
434
+ $"Min {min} cannot be larger-than or equal-to max {max}"
435
+ );
436
+ }
437
+
438
+ double range = max - min;
439
+ if (double.IsInfinity(range))
440
+ {
441
+ return NextDoubleWithInfiniteRange(min, max);
442
+ }
443
+
444
+ return min + NextDouble() * range;
445
+ }
446
+
447
+ protected double NextDoubleWithInfiniteRange(double min, double max)
448
+ {
449
+ ulong orderedMin = ToOrderedDouble(min);
450
+ ulong orderedMax = ToOrderedDouble(max);
451
+
452
+ if (orderedMax <= orderedMin)
453
+ {
454
+ throw new ArgumentException(
455
+ $"Invalid range [{min}, {max}) for infinite-range sampling."
456
+ );
457
+ }
458
+
459
+ ulong range = orderedMax - orderedMin;
460
+ int attempts = 0;
461
+ while (true)
462
+ {
463
+ ulong sample = orderedMin + NextUlong(range);
464
+ double value = FromOrderedDouble(sample);
465
+
466
+ if (!double.IsNaN(value) && !double.IsInfinity(value))
467
+ {
468
+ return value;
469
+ }
470
+ if (++attempts > MaxRejectionAttempts64)
471
+ {
472
+ // Transparent fallback: pick a finite value inside [min, max)
473
+ if (double.IsPositiveInfinity(max))
474
+ {
475
+ return FromOrderedDouble(orderedMax - 1);
476
+ }
477
+ if (double.IsNegativeInfinity(min))
478
+ {
479
+ return FromOrderedDouble(orderedMin + 1);
480
+ }
481
+
482
+ ulong midpoint = orderedMin + (range >> 1);
483
+ double midValue = FromOrderedDouble(midpoint);
484
+ if (!double.IsNaN(midValue) && !double.IsInfinity(midValue))
485
+ {
486
+ return midValue;
487
+ }
488
+
489
+ // Final safeguard: nudge just above min in ordered space
490
+ return FromOrderedDouble(orderedMin + 1);
491
+ }
492
+ }
493
+ }
494
+
495
+ protected double NextDoubleFullRange()
496
+ {
497
+ const ulong exponentMask = 0x7FF0000000000000;
498
+ ulong randomBits;
499
+ int attempts = 0;
500
+ do
501
+ {
502
+ randomBits = NextUlong();
503
+ if (++attempts > MaxDoubleBitAttempts)
504
+ {
505
+ // Force a finite value by clearing exponent bits
506
+ randomBits &= ~exponentMask;
507
+ break;
508
+ }
509
+ } while ((randomBits & exponentMask) == exponentMask);
510
+
511
+ return BitConverter.Int64BitsToDouble(unchecked((long)randomBits));
512
+ }
513
+
514
+ public double NextGaussian(double mean = 0, double stdDev = 1)
515
+ {
516
+ return mean + NextGaussianInternal() * stdDev;
517
+ }
518
+
519
+ private double NextGaussianInternal()
520
+ {
521
+ if (_cachedGaussian != null)
522
+ {
523
+ double gaussian = _cachedGaussian.Value;
524
+ _cachedGaussian = null;
525
+ return gaussian;
526
+ }
527
+
528
+ // https://stackoverflow.com/q/7183229/1917135
529
+ double x;
530
+ double y;
531
+ double square;
532
+ int attempts = 0;
533
+ do
534
+ {
535
+ x = 2 * NextDouble() - 1;
536
+ y = 2 * NextDouble() - 1;
537
+ square = x * x + y * y;
538
+ if (++attempts > MaxGaussianAttempts)
539
+ {
540
+ // Fallback to Box-Muller without rejection to avoid infinite loop
541
+ double u1 = NextDouble();
542
+ if (u1 <= double.Epsilon)
543
+ {
544
+ u1 = double.Epsilon;
545
+ }
546
+ double u2 = NextDouble();
547
+ double mag = Math.Sqrt(-2.0 * Math.Log(u1));
548
+ double z0 = mag * Math.Cos(2.0 * Math.PI * u2);
549
+ double z1 = mag * Math.Sin(2.0 * Math.PI * u2);
550
+ _cachedGaussian = z1;
551
+ return z0;
552
+ }
553
+ } while (square is 0 or > 1);
554
+
555
+ double fac = Math.Sqrt(-2 * Math.Log(square) / square);
556
+ _cachedGaussian = x * fac;
557
+ return y * fac;
558
+ }
559
+
560
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
561
+ public virtual float NextFloat()
562
+ {
563
+ // Use 24 random bits for float mantissa
564
+ return (NextUint() >> 8) * (1f / (1 << 24));
565
+ }
566
+
567
+ public float NextFloat(float max)
568
+ {
569
+ if (max <= 0)
570
+ {
571
+ throw new ArgumentException($"{max} cannot be less-than or equal-to 0");
572
+ }
573
+
574
+ return NextFloat() * max;
575
+ }
576
+
577
+ public float NextFloat(float min, float max)
578
+ {
579
+ if (max <= min)
580
+ {
581
+ throw new ArgumentException(
582
+ $"Min {min} cannot be larger-than or equal-to max {max}"
583
+ );
584
+ }
585
+
586
+ float range = max - min;
587
+ if (float.IsInfinity(range))
588
+ {
589
+ return (float)NextDouble(min, max);
590
+ }
591
+
592
+ return min + NextFloat(range);
593
+ }
594
+
595
+ public T NextOf<T>(IEnumerable<T> enumerable)
596
+ {
597
+ if (enumerable is null)
598
+ {
599
+ throw new ArgumentNullException(nameof(enumerable));
600
+ }
601
+
602
+ return enumerable switch
603
+ {
604
+ IReadOnlyList<T> list => NextOf(list),
605
+ IReadOnlyCollection<T> collection => NextOf(collection),
606
+ _ => NextFromEnumerable(enumerable),
607
+ };
608
+ }
609
+
610
+ public T NextOf<T>(IReadOnlyCollection<T> collection)
611
+ {
612
+ if (collection is not { Count: > 0 })
613
+ {
614
+ throw new ArgumentException("Collection cannot be empty");
615
+ }
616
+
617
+ if (collection is IReadOnlyList<T> list)
618
+ {
619
+ return RandomOf(list);
620
+ }
621
+ int index = Next(collection.Count);
622
+
623
+ switch (collection)
624
+ {
625
+ case HashSet<T> hashSet:
626
+ {
627
+ int i = 0;
628
+ foreach (T element in hashSet)
629
+ {
630
+ if (index == i++)
631
+ {
632
+ return element;
633
+ }
634
+ }
635
+ throw new ArgumentException(nameof(collection));
636
+ }
637
+ case SortedSet<T> sortedSet:
638
+ {
639
+ int i = 0;
640
+ foreach (T element in sortedSet)
641
+ {
642
+ if (index == i++)
643
+ {
644
+ return element;
645
+ }
646
+ }
647
+
648
+ throw new ArgumentException(nameof(collection));
649
+ }
650
+ case LinkedList<T> linkedList:
651
+ {
652
+ int i = 0;
653
+ foreach (T element in linkedList)
654
+ {
655
+ if (index == i++)
656
+ {
657
+ return element;
658
+ }
659
+ }
660
+
661
+ throw new ArgumentException(nameof(collection));
662
+ }
663
+ case Queue<T> queue:
664
+ {
665
+ int i = 0;
666
+ foreach (T element in queue)
667
+ {
668
+ if (index == i++)
669
+ {
670
+ return element;
671
+ }
672
+ }
673
+
674
+ throw new ArgumentException(nameof(collection));
675
+ }
676
+ case Stack<T> stack:
677
+ {
678
+ int i = 0;
679
+ foreach (T element in stack)
680
+ {
681
+ if (index == i++)
682
+ {
683
+ return element;
684
+ }
685
+ }
686
+
687
+ throw new ArgumentException(nameof(collection));
688
+ }
689
+ default:
690
+ {
691
+ return collection.ElementAt(index);
692
+ }
693
+ }
694
+ }
695
+
696
+ public T NextOf<T>(IReadOnlyList<T> list)
697
+ {
698
+ if (list is not { Count: > 0 })
699
+ {
700
+ throw new ArgumentException("Collection cannot be empty", nameof(list));
701
+ }
702
+
703
+ /*
704
+ For small lists, it's much more efficient to simply return one of their elements
705
+ instead of trying to generate a random number within bounds (which is implemented as a while(true) loop)
706
+ */
707
+ return RandomOf(list);
708
+ }
709
+
710
+ public T NextOfParams<T>(params T[] elements)
711
+ {
712
+ if (elements.Length == 0)
713
+ {
714
+ throw new ArgumentException(nameof(elements));
715
+ }
716
+
717
+ return RandomOf(elements);
718
+ }
719
+
720
+ private T NextFromEnumerable<T>(IEnumerable<T> enumerable)
721
+ {
722
+ using IEnumerator<T> enumerator = enumerable.GetEnumerator();
723
+ if (!enumerator.MoveNext())
724
+ {
725
+ throw new ArgumentException("Collection cannot be empty", nameof(enumerable));
726
+ }
727
+
728
+ T selection = enumerator.Current;
729
+ ulong seen = 1;
730
+
731
+ while (enumerator.MoveNext())
732
+ {
733
+ seen++;
734
+ if (NextUlong(seen) == 0)
735
+ {
736
+ selection = enumerator.Current;
737
+ }
738
+ }
739
+
740
+ return selection;
741
+ }
742
+
743
+ private static T[] GetEnumValues<T>()
744
+ where T : unmanaged, Enum
745
+ {
746
+ Type enumType = typeof(T);
747
+ Array boxedValues = EnumTypeCache.GetOrAdd(enumType, type => Enum.GetValues(type));
748
+ return Unsafe.As<Array, T[]>(ref boxedValues);
749
+ }
750
+
751
+ private static void EnsureEnumHasAvailableValues<T>(
752
+ T[] enumValues,
753
+ ReadOnlySpan<T> exclusions
754
+ )
755
+ where T : unmanaged, Enum
756
+ {
757
+ if (enumValues.Length == 0)
758
+ {
759
+ throw new InvalidOperationException(
760
+ $"Enum {typeof(T).Name} does not define any values."
761
+ );
762
+ }
763
+
764
+ if (exclusions.IsEmpty)
765
+ {
766
+ return;
767
+ }
768
+
769
+ int enumCount = enumValues.Length;
770
+ const int StackThreshold = 8;
771
+
772
+ if (exclusions.Length <= StackThreshold)
773
+ {
774
+ Span<T> unique = stackalloc T[StackThreshold];
775
+ int uniqueCount = 0;
776
+
777
+ foreach (T exclusion in exclusions)
778
+ {
779
+ if (Array.IndexOf(enumValues, exclusion) < 0)
780
+ {
781
+ continue;
782
+ }
783
+
784
+ bool seen = false;
785
+ for (int i = 0; i < uniqueCount; ++i)
786
+ {
787
+ if (EqualityComparer<T>.Default.Equals(unique[i], exclusion))
788
+ {
789
+ seen = true;
790
+ break;
791
+ }
792
+ }
793
+
794
+ if (seen)
795
+ {
796
+ continue;
797
+ }
798
+
799
+ unique[uniqueCount++] = exclusion;
800
+ if (uniqueCount >= enumCount)
801
+ {
802
+ ThrowAllEnumValuesExcluded<T>(enumCount);
803
+ }
804
+ }
805
+
806
+ return;
807
+ }
808
+
809
+ using PooledResource<HashSet<T>> pooledSet = Buffers<T>.HashSet.Get();
810
+ HashSet<T> set = pooledSet.resource;
811
+ foreach (T exclusion in exclusions)
812
+ {
813
+ if (Array.IndexOf(enumValues, exclusion) < 0)
814
+ {
815
+ continue;
816
+ }
817
+
818
+ set.Add(exclusion);
819
+ if (set.Count >= enumCount)
820
+ {
821
+ set.Clear();
822
+ ThrowAllEnumValuesExcluded<T>(enumCount);
823
+ }
824
+ }
825
+
826
+ set.Clear();
827
+ }
828
+
829
+ private T NextEnumExceptInternal<T>(ReadOnlySpan<T> exclusions)
830
+ where T : unmanaged, Enum
831
+ {
832
+ T[] enumValues = GetEnumValues<T>();
833
+ EnsureEnumHasAvailableValues(enumValues, exclusions);
834
+ return SelectEnumValue(enumValues, exclusions);
835
+ }
836
+
837
+ private T SelectEnumValue<T>(T[] enumValues, ReadOnlySpan<T> exclusions)
838
+ where T : unmanaged, Enum
839
+ {
840
+ if (exclusions.IsEmpty)
841
+ {
842
+ return RandomOf(enumValues);
843
+ }
844
+
845
+ const int StackThreshold = 128;
846
+ int enumCount = enumValues.Length;
847
+ Span<T> buffer = enumCount <= StackThreshold ? stackalloc T[enumCount] : default;
848
+
849
+ if (!buffer.IsEmpty)
850
+ {
851
+ int count = PopulateAllowedValues(enumValues, exclusions, buffer);
852
+ if (count == 0)
853
+ {
854
+ ThrowAllEnumValuesExcluded<T>(enumCount);
855
+ }
856
+
857
+ return count == 1 ? buffer[0] : buffer[Next(count)];
858
+ }
859
+
860
+ using PooledResource<T[]> pooled = WallstopFastArrayPool<T>.Get(
861
+ enumCount,
862
+ out T[] temp
863
+ );
864
+ Span<T> tempSpan = temp.AsSpan(0, enumCount);
865
+ int index = PopulateAllowedValues(enumValues, exclusions, tempSpan);
866
+ if (index == 0)
867
+ {
868
+ ThrowAllEnumValuesExcluded<T>(enumCount);
869
+ }
870
+
871
+ return index == 1 ? temp[0] : temp[Next(index)];
872
+ }
873
+
874
+ private T SelectEnumValue<T>(T[] enumValues, HashSet<T> exclusions)
875
+ where T : unmanaged, Enum
876
+ {
877
+ if (exclusions == null || exclusions.Count == 0)
878
+ {
879
+ return RandomOf(enumValues);
880
+ }
881
+
882
+ const int StackThreshold = 128;
883
+ int enumCount = enumValues.Length;
884
+ Span<T> buffer = enumCount <= StackThreshold ? stackalloc T[enumCount] : default;
885
+
886
+ if (!buffer.IsEmpty)
887
+ {
888
+ int count = PopulateAllowedValues(enumValues, exclusions, buffer);
889
+ if (count == 0)
890
+ {
891
+ ThrowAllEnumValuesExcluded<T>(enumCount);
892
+ }
893
+
894
+ return count == 1 ? buffer[0] : buffer[Next(count)];
895
+ }
896
+
897
+ using PooledResource<T[]> pooled = WallstopFastArrayPool<T>.Get(
898
+ enumCount,
899
+ out T[] temp
900
+ );
901
+ Span<T> tempSpan = temp.AsSpan(0, enumCount);
902
+ int index = PopulateAllowedValues(enumValues, exclusions, tempSpan);
903
+ if (index == 0)
904
+ {
905
+ ThrowAllEnumValuesExcluded<T>(enumCount);
906
+ }
907
+
908
+ return index == 1 ? temp[0] : temp[Next(index)];
909
+ }
910
+
911
+ private static void EnsureEnumHasAvailableValues<T>(T[] enumValues, HashSet<T> exclusions)
912
+ where T : struct, Enum
913
+ {
914
+ if (enumValues.Length == 0)
915
+ {
916
+ exclusions.Clear();
917
+ throw new InvalidOperationException(
918
+ $"Enum {typeof(T).Name} does not define any values."
919
+ );
920
+ }
921
+
922
+ if (exclusions.Count == 0)
923
+ {
924
+ return;
925
+ }
926
+
927
+ int excludedCount = 0;
928
+ foreach (T value in enumValues)
929
+ {
930
+ if (exclusions.Contains(value))
931
+ {
932
+ excludedCount++;
933
+ }
934
+ }
935
+
936
+ if (excludedCount >= enumValues.Length)
937
+ {
938
+ exclusions.Clear();
939
+ ThrowAllEnumValuesExcluded<T>(enumValues.Length);
940
+ }
941
+ }
942
+
943
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
944
+ private static bool SpanContains<T>(ReadOnlySpan<T> span, T value)
945
+ {
946
+ for (int i = 0; i < span.Length; ++i)
947
+ {
948
+ if (EqualityComparer<T>.Default.Equals(span[i], value))
949
+ {
950
+ return true;
951
+ }
952
+ }
953
+
954
+ return false;
955
+ }
956
+
957
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
958
+ private static int PopulateAllowedValues<T>(
959
+ T[] enumValues,
960
+ ReadOnlySpan<T> exclusions,
961
+ Span<T> destination
962
+ )
963
+ where T : unmanaged, Enum
964
+ {
965
+ int count = 0;
966
+ foreach (T value in enumValues)
967
+ {
968
+ if (!SpanContains(exclusions, value))
969
+ {
970
+ destination[count++] = value;
971
+ }
972
+ }
973
+
974
+ return count;
975
+ }
976
+
977
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
978
+ private static int PopulateAllowedValues<T>(
979
+ T[] enumValues,
980
+ HashSet<T> exclusions,
981
+ Span<T> destination
982
+ )
983
+ where T : unmanaged, Enum
984
+ {
985
+ int count = 0;
986
+ foreach (T value in enumValues)
987
+ {
988
+ if (!exclusions.Contains(value))
989
+ {
990
+ destination[count++] = value;
991
+ }
992
+ }
993
+
994
+ return count;
995
+ }
996
+
997
+ [MethodImpl(MethodImplOptions.NoInlining)]
998
+ private static void ThrowAllEnumValuesExcluded<T>(int enumCount)
999
+ where T : struct, Enum
1000
+ {
1001
+ throw new InvalidOperationException(
1002
+ $"Cannot select a value from enum {typeof(T).Name} because all {enumCount} defined values are excluded."
1003
+ );
1004
+ }
1005
+
1006
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
1007
+ private static ulong BiasLong(long value)
1008
+ {
1009
+ return unchecked((ulong)value + LongBias);
1010
+ }
1011
+
1012
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
1013
+ private static long UnbiasLong(ulong value)
1014
+ {
1015
+ return unchecked((long)(value - LongBias));
1016
+ }
1017
+
1018
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
1019
+ private static ulong MulHi64(ulong x, ulong y)
1020
+ {
1021
+ #if NET7_0_OR_GREATER
1022
+ if (System.Runtime.Intrinsics.X86.Bmi2.X64.IsSupported)
1023
+ {
1024
+ unsafe
1025
+ {
1026
+ ulong lo;
1027
+ ulong hi = System.Runtime.Intrinsics.X86.Bmi2.X64.MultiplyNoFlags(x, y, &lo);
1028
+ return hi;
1029
+ }
1030
+ }
1031
+ #endif
1032
+ ulong x0 = (uint)x;
1033
+ ulong x1 = x >> 32;
1034
+ ulong y0 = (uint)y;
1035
+ ulong y1 = y >> 32;
1036
+
1037
+ ulong p11 = x1 * y1;
1038
+ ulong p01 = x0 * y1;
1039
+ ulong p10 = x1 * y0;
1040
+ ulong p00 = x0 * y0;
1041
+
1042
+ ulong middle = p10 + (p00 >> 32) + (uint)p01;
1043
+ ulong hi = p11 + (middle >> 32) + (p01 >> 32);
1044
+ return hi;
1045
+ }
1046
+
1047
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
1048
+ private static ulong ToOrderedDouble(double value)
1049
+ {
1050
+ if (double.IsNaN(value))
1051
+ {
1052
+ throw new ArgumentException(
1053
+ "NaN is not a valid bound for random sampling.",
1054
+ nameof(value)
1055
+ );
1056
+ }
1057
+
1058
+ ulong bits = unchecked((ulong)BitConverter.DoubleToInt64Bits(value));
1059
+ const ulong signBit = 1UL << 63;
1060
+ return (bits & signBit) != 0 ? ~bits : bits | signBit;
1061
+ }
1062
+
1063
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
1064
+ private static double FromOrderedDouble(ulong value)
1065
+ {
1066
+ const ulong signBit = 1UL << 63;
1067
+ ulong bits = (value & signBit) != 0 ? value & ~signBit : ~value;
1068
+ return BitConverter.Int64BitsToDouble(unchecked((long)bits));
1069
+ }
1070
+
1071
+ public T NextEnum<T>()
1072
+ where T : unmanaged, Enum
1073
+ {
1074
+ T[] enumValues = GetEnumValues<T>();
1075
+ if (enumValues.Length == 0)
1076
+ {
1077
+ throw new InvalidOperationException(
1078
+ $"Enum {typeof(T).Name} does not define any values."
1079
+ );
1080
+ }
1081
+
1082
+ return RandomOf(enumValues);
1083
+ }
1084
+
1085
+ public T NextEnumExcept<T>(T exception1)
1086
+ where T : unmanaged, Enum
1087
+ {
1088
+ Span<T> exclusions = stackalloc T[1];
1089
+ exclusions[0] = exception1;
1090
+ return NextEnumExceptInternal<T>(exclusions);
1091
+ }
1092
+
1093
+ public T NextEnumExcept<T>(T exception1, T exception2)
1094
+ where T : unmanaged, Enum
1095
+ {
1096
+ Span<T> exclusions = stackalloc T[2];
1097
+ exclusions[0] = exception1;
1098
+ exclusions[1] = exception2;
1099
+ return NextEnumExceptInternal<T>(exclusions);
1100
+ }
1101
+
1102
+ public T NextEnumExcept<T>(T exception1, T exception2, T exception3)
1103
+ where T : unmanaged, Enum
1104
+ {
1105
+ Span<T> exclusions = stackalloc T[3];
1106
+ exclusions[0] = exception1;
1107
+ exclusions[1] = exception2;
1108
+ exclusions[2] = exception3;
1109
+ return NextEnumExceptInternal<T>(exclusions);
1110
+ }
1111
+
1112
+ public T NextEnumExcept<T>(T exception1, T exception2, T exception3, T exception4)
1113
+ where T : unmanaged, Enum
1114
+ {
1115
+ Span<T> exclusions = stackalloc T[4];
1116
+ exclusions[0] = exception1;
1117
+ exclusions[1] = exception2;
1118
+ exclusions[2] = exception3;
1119
+ exclusions[3] = exception4;
1120
+ return NextEnumExceptInternal<T>(exclusions);
1121
+ }
1122
+
1123
+ public T NextEnumExcept<T>(
1124
+ T exception1,
1125
+ T exception2,
1126
+ T exception3,
1127
+ T exception4,
1128
+ params T[] exceptions
1129
+ )
1130
+ where T : unmanaged, Enum
1131
+ {
1132
+ T[] enumValues = GetEnumValues<T>();
1133
+
1134
+ using PooledResource<HashSet<T>> bufferResource = Buffers<T>.HashSet.Get();
1135
+ HashSet<T> set = bufferResource.resource;
1136
+ set.Add(exception1);
1137
+ set.Add(exception2);
1138
+ set.Add(exception3);
1139
+ set.Add(exception4);
1140
+ foreach (T exception in exceptions)
1141
+ {
1142
+ set.Add(exception);
1143
+ }
1144
+
1145
+ EnsureEnumHasAvailableValues(enumValues, set);
1146
+
1147
+ return SelectEnumValue(enumValues, set);
1148
+ }
1149
+
1150
+ public Guid NextGuid()
1151
+ {
1152
+ return new Guid(GenerateGuidBytes(_guidBytes));
1153
+ }
1154
+
1155
+ public KGuid NextKGuid()
1156
+ {
1157
+ return new KGuid(GenerateGuidBytes(_guidBytes));
1158
+ }
1159
+
1160
+ private byte[] GenerateGuidBytes(byte[] guidBytes)
1161
+ {
1162
+ NextBytes(guidBytes);
1163
+ SetUuidV4Bits(guidBytes);
1164
+ return guidBytes;
1165
+ }
1166
+
1167
+ public static void SetUuidV4Bits(byte[] bytes)
1168
+ {
1169
+ // Set version to 4 (bits 6-7 of byte 6)
1170
+
1171
+ // Clear the version bits first (clear bits 4-7)
1172
+ byte value = bytes[6];
1173
+ value &= 0x0f;
1174
+ // Set version 4 (set bits 4-7 to 0100)
1175
+ value |= 0x40;
1176
+ bytes[6] = value;
1177
+
1178
+ // Set variant to RFC 4122 (bits 6-7 of byte 8)
1179
+ value = bytes[8];
1180
+ // Clear the variant bits first (clear bits 6-7)
1181
+ value &= 0x3f;
1182
+ // Set RFC 4122 variant (set bits 6-7 to 10)
1183
+ value |= 0x80;
1184
+ bytes[8] = value;
1185
+ }
1186
+
1187
+ public float[,] NextNoiseMap(
1188
+ float[,] noiseMap,
1189
+ PerlinNoise noise = null,
1190
+ float scale = 2.5f,
1191
+ int octaves = 8,
1192
+ float persistence = 0.5f,
1193
+ float lacunarity = 2f,
1194
+ Vector2 baseOffset = default,
1195
+ float octaveOffsetRange = 100000f,
1196
+ bool normalize = true
1197
+ )
1198
+ {
1199
+ if (noiseMap is null)
1200
+ {
1201
+ throw new ArgumentNullException(nameof(noiseMap));
1202
+ }
1203
+
1204
+ if (scale <= 0)
1205
+ {
1206
+ throw new ArgumentException(nameof(scale));
1207
+ }
1208
+
1209
+ if (octaves < 1)
1210
+ {
1211
+ throw new ArgumentException(nameof(octaves));
1212
+ }
1213
+
1214
+ if (persistence <= 0)
1215
+ {
1216
+ throw new ArgumentException(nameof(persistence));
1217
+ }
1218
+
1219
+ if (lacunarity <= 0)
1220
+ {
1221
+ throw new ArgumentException(nameof(lacunarity));
1222
+ }
1223
+
1224
+ if (octaveOffsetRange <= 0)
1225
+ {
1226
+ throw new ArgumentException(nameof(octaveOffsetRange));
1227
+ }
1228
+
1229
+ noise ??= PerlinNoise.Instance;
1230
+
1231
+ int width = noiseMap.GetLength(0);
1232
+ int height = noiseMap.GetLength(1);
1233
+ using PooledResource<Vector2[]> octaveOffsetBuffer = WallstopFastArrayPool<Vector2>.Get(
1234
+ octaves,
1235
+ out Vector2[] octaveOffsets
1236
+ );
1237
+ for (int i = 0; i < octaves; i++)
1238
+ {
1239
+ float offsetX = NextFloat(-octaveOffsetRange, octaveOffsetRange);
1240
+ float offsetY = NextFloat(-octaveOffsetRange, octaveOffsetRange);
1241
+ octaveOffsets[i] = new Vector2(offsetX, offsetY);
1242
+ }
1243
+
1244
+ float maxNoiseHeight = float.MinValue;
1245
+ float minNoiseHeight = float.MaxValue;
1246
+
1247
+ float halfWidth = width / 2f;
1248
+ float halfHeight = height / 2f;
1249
+
1250
+ for (int x = 0; x < width; ++x)
1251
+ {
1252
+ for (int y = 0; y < height; ++y)
1253
+ {
1254
+ float amplitude = 1;
1255
+ float frequency = 1;
1256
+ float noiseHeight = 0;
1257
+ for (int i = 0; i < octaves; i++)
1258
+ {
1259
+ float sampleX =
1260
+ (x - halfWidth) / scale * frequency + octaveOffsets[i].x + baseOffset.x;
1261
+ float sampleY =
1262
+ (y - halfHeight) / scale * frequency
1263
+ + octaveOffsets[i].y
1264
+ + baseOffset.y;
1265
+
1266
+ float perlinValue = noise.Noise(sampleX, sampleY) * 2 - 1;
1267
+ noiseHeight += perlinValue * amplitude;
1268
+ amplitude *= persistence;
1269
+ frequency *= lacunarity;
1270
+ }
1271
+
1272
+ if (noiseHeight > maxNoiseHeight)
1273
+ {
1274
+ maxNoiseHeight = noiseHeight;
1275
+ }
1276
+ else if (noiseHeight < minNoiseHeight)
1277
+ {
1278
+ minNoiseHeight = noiseHeight;
1279
+ }
1280
+
1281
+ noiseMap[x, y] = noiseHeight;
1282
+ }
1283
+ }
1284
+
1285
+ if (normalize)
1286
+ {
1287
+ for (int x = 0; x < width; ++x)
1288
+ {
1289
+ for (int y = 0; y < height; ++y)
1290
+ {
1291
+ // Returns a value between 0f and 1f based on noiseMap value
1292
+ // minNoiseHeight being 0f, and maxNoiseHeight being 1f
1293
+ noiseMap[x, y] = Mathf.InverseLerp(
1294
+ minNoiseHeight,
1295
+ maxNoiseHeight,
1296
+ noiseMap[x, y]
1297
+ );
1298
+ }
1299
+ }
1300
+ }
1301
+ return noiseMap;
1302
+ }
1303
+
1304
+ protected T RandomOf<T>(IReadOnlyList<T> values)
1305
+ {
1306
+ int count = values.Count;
1307
+ return count switch
1308
+ {
1309
+ 0 => default,
1310
+ 1 => values[0],
1311
+ 2 => NextBool() ? values[0] : values[1],
1312
+ _ => values[Next(count)],
1313
+ };
1314
+ }
1315
+
1316
+ public abstract IRandom Copy();
1317
+ }
1318
+ }