com.wallstop-studios.unity-helpers 2.0.0-rc81.7 → 2.0.0

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 (1500) 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 +75 -0
  7. package/.githooks/pre-push +50 -0
  8. package/.github/dependabot.yml +32 -10
  9. package/.github/scripts/check-markdown-links.ps1 +77 -0
  10. package/.github/scripts/check_markdown_links.py +89 -0
  11. package/.github/scripts/check_markdown_url_encoding.py +74 -0
  12. package/.github/scripts/validate_markdown_links.py +194 -0
  13. package/.github/workflows/csharpier-autofix.yml +152 -0
  14. package/.github/workflows/format-on-demand.yml +305 -0
  15. package/.github/workflows/lint-doc-links.yml +30 -0
  16. package/.github/workflows/markdown-json.yml +45 -0
  17. package/.github/workflows/npm-publish.yml +75 -75
  18. package/.github/workflows/prettier-autofix.yml +195 -0
  19. package/.github/workflows/update-dotnet-tools.yml +80 -0
  20. package/.github/workflows/yaml-format-lint.yml +41 -0
  21. package/.lychee.toml +26 -0
  22. package/.markdownlint.json +21 -0
  23. package/.markdownlint.jsonc +21 -0
  24. package/.markdownlintignore +8 -0
  25. package/.pre-commit-config.yaml +47 -22
  26. package/.prettierignore +22 -0
  27. package/.prettierrc.json +20 -0
  28. package/.yamllint.yaml +31 -0
  29. package/AGENTS.md +56 -0
  30. package/{Third Party Notices.md.meta → AGENTS.md.meta} +7 -7
  31. package/CHANGELOG.md +11 -0
  32. package/CHANGELOG.md.meta +7 -7
  33. package/CONTRIBUTING.md +49 -0
  34. package/CONTRIBUTING.md.meta +7 -0
  35. package/DATA_STRUCTURES.md +324 -0
  36. package/DATA_STRUCTURES.md.meta +7 -0
  37. package/Docs/Images/attribute_resolution.svg +40 -0
  38. package/Docs/Images/attribute_resolution.svg.meta +7 -0
  39. package/Docs/Images/bitset.svg +47 -0
  40. package/Docs/Images/bitset.svg.meta +7 -0
  41. package/Docs/Images/concave_hull.svg +30 -0
  42. package/Docs/Images/concave_hull.svg.meta +7 -0
  43. package/Docs/Images/convex_hull.svg +29 -0
  44. package/Docs/Images/convex_hull.svg.meta +7 -0
  45. package/Docs/Images/cyclic_buffer.svg +37 -0
  46. package/Docs/Images/cyclic_buffer.svg.meta +7 -0
  47. package/Docs/Images/data_distribution_decision.svg +88 -0
  48. package/Docs/Images/data_distribution_decision.svg.meta +7 -0
  49. package/Docs/Images/deque.svg +64 -0
  50. package/Docs/Images/deque.svg.meta +7 -0
  51. package/Docs/Images/deque_queue.svg +107 -0
  52. package/Docs/Images/deque_queue.svg.meta +7 -0
  53. package/Docs/Images/disjoint_set.svg +47 -0
  54. package/Docs/Images/disjoint_set.svg.meta +7 -0
  55. package/Docs/Images/effects_pipeline.svg +59 -0
  56. package/Docs/Images/effects_pipeline.svg.meta +7 -0
  57. package/Docs/Images/geometry_edge_cases.svg +61 -0
  58. package/Docs/Images/geometry_edge_cases.svg.meta +7 -0
  59. package/Docs/Images/heap.svg +56 -0
  60. package/Docs/Images/heap.svg.meta +7 -0
  61. package/Docs/Images/kdtree_2d.svg +38 -0
  62. package/Docs/Images/kdtree_2d.svg.meta +7 -0
  63. package/Docs/Images/kdtree_3d.svg +83 -0
  64. package/Docs/Images/kdtree_3d.svg.meta +7 -0
  65. package/Docs/Images/octree_3d.svg +79 -0
  66. package/Docs/Images/octree_3d.svg.meta +7 -0
  67. package/Docs/Images/polyline_simplify.svg +18 -0
  68. package/Docs/Images/polyline_simplify.svg.meta +7 -0
  69. package/Docs/Images/quadtree_2d.svg +37 -0
  70. package/Docs/Images/quadtree_2d.svg.meta +7 -0
  71. package/Docs/Images/query_boundaries.svg +38 -0
  72. package/Docs/Images/query_boundaries.svg.meta +7 -0
  73. package/Docs/Images/random_generators.svg +105 -0
  74. package/Docs/Images/random_generators.svg.meta +7 -0
  75. package/Docs/Images/reflection_scan.svg +33 -0
  76. package/Docs/Images/reflection_scan.svg.meta +7 -0
  77. package/Docs/Images/relational_wiring.svg +75 -0
  78. package/Docs/Images/relational_wiring.svg.meta +7 -0
  79. package/Docs/Images/rtree_2d.svg +27 -0
  80. package/Docs/Images/rtree_2d.svg.meta +7 -0
  81. package/Docs/Images/rtree_3d.svg +79 -0
  82. package/Docs/Images/rtree_3d.svg.meta +7 -0
  83. package/Docs/Images/serialization_flow.svg +50 -0
  84. package/Docs/Images/serialization_flow.svg.meta +7 -0
  85. package/Docs/Images/singletons_lifecycle.svg +54 -0
  86. package/Docs/Images/singletons_lifecycle.svg.meta +7 -0
  87. package/Docs/Images/sparse_set.svg +54 -0
  88. package/Docs/Images/sparse_set.svg.meta +7 -0
  89. package/Docs/Images/trie.svg +55 -0
  90. package/Docs/Images/trie.svg.meta +7 -0
  91. package/Docs/Images.meta +8 -0
  92. package/Docs.meta +8 -0
  93. package/EDITOR_TOOLS_GUIDE.md +1980 -0
  94. package/EDITOR_TOOLS_GUIDE.md.meta +7 -0
  95. package/EFFECTS_SYSTEM.md +242 -0
  96. package/EFFECTS_SYSTEM.md.meta +7 -0
  97. package/EFFECTS_SYSTEM_TUTORIAL.md +467 -0
  98. package/EFFECTS_SYSTEM_TUTORIAL.md.meta +7 -0
  99. package/Editor/AnimationEventEditor.cs +1570 -874
  100. package/Editor/AnimationEventEditor.cs.meta +11 -11
  101. package/Editor/AssemblyInfo.cs +4 -0
  102. package/Editor/AssemblyInfo.cs.meta +3 -0
  103. package/Editor/AssetProcessors/SpriteLabelProcessor.cs +138 -111
  104. package/Editor/AssetProcessors/SpriteLabelProcessor.cs.meta +2 -2
  105. package/Editor/AssetProcessors.meta +2 -2
  106. package/Editor/Core/Helper/AnimationEventHelpers.cs +230 -0
  107. package/{Runtime/Core/DataStructure/ISpatialTree.cs.meta → Editor/Core/Helper/AnimationEventHelpers.cs.meta} +11 -11
  108. package/Editor/Core/Helper.meta +8 -0
  109. package/Editor/Core.meta +8 -0
  110. package/Editor/CustomDrawers/IntDropdownDrawer.cs +46 -46
  111. package/Editor/CustomDrawers/IntDropdownDrawer.cs.meta +2 -2
  112. package/Editor/CustomDrawers/StringInListeDrawer.cs +135 -135
  113. package/Editor/CustomDrawers/StringInListeDrawer.cs.meta +2 -2
  114. package/Editor/CustomDrawers/WShowIfPropertyDrawer.cs +105 -105
  115. package/Editor/CustomDrawers/WShowIfPropertyDrawer.cs.meta +2 -2
  116. package/Editor/CustomDrawers.meta +2 -2
  117. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs +32 -32
  118. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs.meta +2 -2
  119. package/Editor/CustomEditors/PersistentDirectoryGUI.cs +808 -799
  120. package/Editor/CustomEditors/PersistentDirectoryGUI.cs.meta +2 -2
  121. package/Editor/CustomEditors/PolygonCollider2DOptimizerEditor.cs +38 -40
  122. package/Editor/CustomEditors/PolygonCollider2DOptimizerEditor.cs.meta +2 -2
  123. package/Editor/CustomEditors/SourceFolderEntryDrawer.cs +685 -413
  124. package/Editor/CustomEditors/SourceFolderEntryDrawer.cs.meta +2 -2
  125. package/Editor/CustomEditors/TexturePlatformOverrideEntryDrawer.cs +155 -0
  126. package/{Runtime/Core/DataStructure/KDTree.cs.meta → Editor/CustomEditors/TexturePlatformOverrideEntryDrawer.cs.meta} +11 -11
  127. package/Editor/CustomEditors.meta +2 -2
  128. package/Editor/Extensions/SerializedPropertyExtensions.cs +217 -190
  129. package/Editor/Extensions/SerializedPropertyExtensions.cs.meta +2 -2
  130. package/Editor/Extensions/UnityExtensions.cs +50 -26
  131. package/Editor/Extensions/UnityExtensions.cs.meta +2 -2
  132. package/Editor/Extensions.meta +2 -2
  133. package/Editor/FitTextureSizeWindow.cs +809 -332
  134. package/Editor/FitTextureSizeWindow.cs.meta +2 -2
  135. package/Editor/Persistence/MultiFileSelectorPersistenceManager.cs +62 -0
  136. package/{Runtime/Core/DataStructure/QuadTree.cs.meta → Editor/Persistence/MultiFileSelectorPersistenceManager.cs.meta} +11 -11
  137. package/Editor/Persistence/MultiFileSelectorPersistenceWindow.cs +65 -0
  138. package/Editor/Persistence/MultiFileSelectorPersistenceWindow.cs.meta +11 -0
  139. package/Editor/Persistence.meta +8 -0
  140. package/Editor/PersistentDirectorySettings.cs +581 -248
  141. package/Editor/PersistentDirectorySettings.cs.meta +2 -2
  142. package/Editor/PrefabChecker.cs +1396 -741
  143. package/Editor/PrefabChecker.cs.meta +11 -11
  144. package/Editor/Sprites/AnimationCopier.cs +1594 -789
  145. package/Editor/Sprites/AnimationCopier.cs.meta +2 -2
  146. package/Editor/Sprites/AnimationCreator.cs +1573 -881
  147. package/Editor/Sprites/AnimationCreator.cs.meta +11 -11
  148. package/Editor/Sprites/AnimationViewerWindow.cs +1670 -1522
  149. package/Editor/Sprites/AnimationViewerWindow.cs.meta +2 -2
  150. package/Editor/Sprites/ScriptableSpriteAtlas.cs +251 -178
  151. package/Editor/Sprites/ScriptableSpriteAtlas.cs.meta +2 -2
  152. package/Editor/Sprites/ScriptableSpriteAtlasEditor.cs +1470 -1026
  153. package/Editor/Sprites/ScriptableSpriteAtlasEditor.cs.meta +2 -2
  154. package/Editor/Sprites/SpriteCropper.cs +1013 -523
  155. package/Editor/Sprites/SpriteCropper.cs.meta +2 -2
  156. package/Editor/Sprites/SpritePivotAdjustor.cs +605 -265
  157. package/Editor/Sprites/SpritePivotAdjustor.cs.meta +2 -2
  158. package/Editor/Sprites/SpriteSettingsApplier.cs +942 -918
  159. package/Editor/Sprites/SpriteSettingsApplier.cs.meta +2 -2
  160. package/Editor/Sprites/SpriteSettingsApplierAPI.cs +441 -0
  161. package/Editor/Sprites/SpriteSettingsApplierAPI.cs.meta +11 -0
  162. package/Editor/Sprites/SpriteSettingsProfileCollection.cs +12 -0
  163. package/Editor/Sprites/SpriteSettingsProfileCollection.cs.meta +11 -0
  164. package/Editor/Sprites/SpriteSheetAnimationCreator.cs +1586 -1537
  165. package/Editor/Sprites/SpriteSheetAnimationCreator.cs.meta +2 -2
  166. package/Editor/Sprites/TexturePlatformNameHelper.cs +89 -0
  167. package/Editor/Sprites/TexturePlatformNameHelper.cs.meta +11 -0
  168. package/Editor/Sprites/TextureResizerWizard.cs +456 -175
  169. package/Editor/Sprites/TextureResizerWizard.cs.meta +2 -2
  170. package/Editor/Sprites/TextureSettingsApplierAPI.cs +359 -0
  171. package/Editor/Sprites/TextureSettingsApplierAPI.cs.meta +11 -0
  172. package/Editor/Sprites/TextureSettingsApplierWindow.cs +668 -0
  173. package/Editor/Sprites/TextureSettingsApplierWindow.cs.meta +11 -0
  174. package/Editor/Sprites.meta +2 -2
  175. package/Editor/Styles/AnimationViewer.uss +115 -115
  176. package/Editor/Styles/AnimationViewer.uss.meta +2 -2
  177. package/Editor/Styles/AnimationViewer.uxml +56 -56
  178. package/Editor/Styles/AnimationViewer.uxml.meta +2 -2
  179. package/Editor/Styles/SpriteSheetAnimationCreator.uss +10 -0
  180. package/Editor/Styles/SpriteSheetAnimationCreator.uss.meta +11 -0
  181. package/Editor/Styles.meta +2 -2
  182. package/Editor/Tags/AttributeMetadataCacheEditor.cs +46 -0
  183. package/Editor/Tags/AttributeMetadataCacheEditor.cs.meta +11 -0
  184. package/Editor/Tags/AttributeMetadataCacheGenerator.cs +258 -0
  185. package/Editor/Tags/AttributeMetadataCacheGenerator.cs.meta +11 -0
  186. package/Editor/Tags.meta +8 -0
  187. package/Editor/Tools/ImageBlurTool.cs +522 -409
  188. package/Editor/Tools/ImageBlurTool.cs.meta +2 -2
  189. package/Editor/Tools.meta +2 -2
  190. package/Editor/Utils/DxReadOnlyPropertyDrawer.cs +26 -26
  191. package/Editor/Utils/DxReadOnlyPropertyDrawer.cs.meta +11 -11
  192. package/Editor/Utils/EditorUi.cs +228 -0
  193. package/Editor/Utils/EditorUi.cs.meta +11 -0
  194. package/Editor/Utils/EditorUtilities.cs +22 -22
  195. package/Editor/Utils/EditorUtilities.cs.meta +11 -11
  196. package/Editor/Utils/ScriptableObjectSingletonCreator.cs +633 -52
  197. package/Editor/Utils/ScriptableObjectSingletonCreator.cs.meta +2 -2
  198. package/Editor/Utils.meta +8 -8
  199. package/Editor/Visuals/EnhancedImageEditor.cs +160 -160
  200. package/Editor/Visuals/EnhancedImageEditor.cs.meta +11 -11
  201. package/Editor/Visuals.meta +2 -2
  202. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef +14 -18
  203. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef.meta +7 -7
  204. package/Editor.meta +8 -8
  205. package/GETTING_STARTED.md +409 -0
  206. package/GETTING_STARTED.md.meta +7 -0
  207. package/GLOSSARY.md +313 -0
  208. package/GLOSSARY.md.meta +7 -0
  209. package/HULLS.md +45 -0
  210. package/HULLS.md.meta +7 -0
  211. package/INDEX.md +429 -0
  212. package/INDEX.md.meta +7 -0
  213. package/LICENSE +21 -21
  214. package/LICENSE.md +7 -7
  215. package/LICENSE.md.meta +7 -7
  216. package/LICENSE.meta +7 -7
  217. package/MATH_AND_EXTENSIONS.md +316 -0
  218. package/MATH_AND_EXTENSIONS.md.meta +7 -0
  219. package/RANDOM_PERFORMANCE.md +140 -0
  220. package/RANDOM_PERFORMANCE.md.meta +7 -0
  221. package/README.md +1183 -188
  222. package/README.md.meta +7 -7
  223. package/REFLECTION_HELPERS.md +272 -0
  224. package/REFLECTION_HELPERS.md.meta +7 -0
  225. package/RELATIONAL_COMPONENTS.md +552 -0
  226. package/RELATIONAL_COMPONENTS.md.meta +7 -0
  227. package/Runtime/AssemblyInfo.cs +9 -0
  228. package/Runtime/AssemblyInfo.cs.meta +11 -0
  229. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll +0 -0
  230. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll.meta +33 -33
  231. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml +499 -278
  232. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml.meta +7 -7
  233. package/Runtime/Binaries/System.IO.Pipelines.dll +0 -0
  234. package/Runtime/Binaries/System.IO.Pipelines.dll.meta +33 -0
  235. package/Runtime/Binaries/System.IO.Pipelines.xml +702 -0
  236. package/Runtime/Binaries/System.IO.Pipelines.xml.meta +7 -0
  237. package/Runtime/Binaries/System.Text.Encodings.Web.dll +0 -0
  238. package/Runtime/Binaries/System.Text.Encodings.Web.dll.meta +33 -33
  239. package/Runtime/Binaries/System.Text.Encodings.Web.xml +1084 -1079
  240. package/Runtime/Binaries/System.Text.Encodings.Web.xml.meta +7 -7
  241. package/Runtime/Binaries/System.Text.Json.dll +0 -0
  242. package/Runtime/Binaries/System.Text.Json.dll.meta +33 -33
  243. package/Runtime/Binaries/System.Text.Json.xml +10217 -8116
  244. package/Runtime/Binaries/System.Text.Json.xml.meta +7 -7
  245. package/Runtime/Binaries.meta +8 -8
  246. package/Runtime/Core/Attributes/AnimationEventAttribute.cs +10 -138
  247. package/Runtime/Core/Attributes/AnimationEventAttribute.cs.meta +11 -11
  248. package/Runtime/Core/Attributes/BaseRelationalComponentAttribute.cs +841 -0
  249. package/Runtime/Core/Attributes/BaseRelationalComponentAttribute.cs.meta +11 -0
  250. package/Runtime/Core/Attributes/ChildComponentAttribute.cs +284 -226
  251. package/Runtime/Core/Attributes/ChildComponentAttribute.cs.meta +11 -11
  252. package/Runtime/Core/Attributes/DxReadOnlyAttribute.cs +6 -6
  253. package/Runtime/Core/Attributes/DxReadOnlyAttribute.cs.meta +11 -11
  254. package/Runtime/Core/Attributes/EnumDisplayNameAttribute.cs +15 -15
  255. package/Runtime/Core/Attributes/EnumDisplayNameAttribute.cs.meta +2 -2
  256. package/Runtime/Core/Attributes/IRelationalComponentAssigner.cs +36 -0
  257. package/Runtime/Core/Attributes/IRelationalComponentAssigner.cs.meta +11 -0
  258. package/Runtime/Core/Attributes/IntDropdownAttribute.cs +14 -14
  259. package/Runtime/Core/Attributes/IntDropdownAttribute.cs.meta +2 -2
  260. package/Runtime/Core/Attributes/KSerializableAttribute.cs +19 -19
  261. package/Runtime/Core/Attributes/KSerializableAttribute.cs.meta +11 -11
  262. package/Runtime/Core/Attributes/NotNullAttribute.cs +30 -32
  263. package/Runtime/Core/Attributes/NotNullAttribute.cs.meta +11 -11
  264. package/Runtime/Core/Attributes/ParentComponentAttribute.cs +376 -0
  265. package/Runtime/Core/Attributes/{ParentComponent.cs.meta → ParentComponentAttribute.cs.meta} +11 -11
  266. package/Runtime/Core/Attributes/RelationalComponentAssigner.cs +152 -0
  267. package/Runtime/Core/Attributes/RelationalComponentAssigner.cs.meta +11 -0
  268. package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +61 -14
  269. package/Runtime/Core/Attributes/RelationalComponentExtensions.cs.meta +11 -11
  270. package/Runtime/Core/Attributes/RelationalComponentInitializer.cs +331 -0
  271. package/Runtime/Core/Attributes/RelationalComponentInitializer.cs.meta +11 -0
  272. package/Runtime/Core/Attributes/ScriptableSingletonPathAttribute.cs +15 -15
  273. package/Runtime/Core/Attributes/ScriptableSingletonPathAttribute.cs.meta +2 -2
  274. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +264 -137
  275. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs.meta +11 -11
  276. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs +115 -106
  277. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs.meta +11 -11
  278. package/Runtime/Core/Attributes/ValueHelpers.cs +10 -0
  279. package/Runtime/Core/Attributes/ValueHelpers.cs.meta +3 -0
  280. package/Runtime/Core/Attributes/WShowIfAttribute.cs +24 -24
  281. package/Runtime/Core/Attributes/WShowIfAttribute.cs.meta +2 -2
  282. package/Runtime/Core/Attributes.meta +8 -8
  283. package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs +192 -92
  284. package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs.meta +11 -11
  285. package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs +268 -185
  286. package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs.meta +11 -11
  287. package/Runtime/Core/DataStructure/Adapters/KGuid.cs +360 -305
  288. package/Runtime/Core/DataStructure/Adapters/KGuid.cs.meta +11 -11
  289. package/Runtime/Core/DataStructure/Adapters/KVector2.cs +146 -80
  290. package/Runtime/Core/DataStructure/Adapters/KVector2.cs.meta +11 -11
  291. package/Runtime/Core/DataStructure/Adapters.meta +8 -8
  292. package/Runtime/Core/DataStructure/BitSet.cs +626 -0
  293. package/Runtime/Core/DataStructure/BitSet.cs.meta +11 -0
  294. package/Runtime/Core/DataStructure/BoundingBox3D.cs +405 -0
  295. package/Runtime/Core/DataStructure/BoundingBox3D.cs.meta +11 -0
  296. package/Runtime/Core/DataStructure/Circle.cs +203 -50
  297. package/Runtime/Core/DataStructure/Circle.cs.meta +11 -11
  298. package/Runtime/Core/DataStructure/CyclicBuffer.cs +488 -266
  299. package/Runtime/Core/DataStructure/CyclicBuffer.cs.meta +11 -11
  300. package/Runtime/Core/DataStructure/Deque.cs +561 -0
  301. package/Runtime/Core/DataStructure/Deque.cs.meta +11 -0
  302. package/Runtime/Core/DataStructure/DisjointSet.cs +483 -0
  303. package/Runtime/Core/DataStructure/DisjointSet.cs.meta +11 -0
  304. package/Runtime/Core/DataStructure/Heap.cs +514 -0
  305. package/Runtime/Core/DataStructure/Heap.cs.meta +11 -0
  306. package/Runtime/Core/DataStructure/{ISpatialTree.cs → ISpatialTree2D.cs} +25 -21
  307. package/Runtime/Core/DataStructure/ISpatialTree2D.cs.meta +11 -0
  308. package/Runtime/Core/DataStructure/ISpatialTree3D.cs +33 -0
  309. package/Runtime/Core/DataStructure/ISpatialTree3D.cs.meta +11 -0
  310. package/Runtime/Core/DataStructure/ImmutableBitSet.cs +398 -0
  311. package/Runtime/Core/DataStructure/ImmutableBitSet.cs.meta +3 -0
  312. package/Runtime/Core/DataStructure/KDTree2D.cs +852 -0
  313. package/Runtime/Core/DataStructure/KDTree2D.cs.meta +11 -0
  314. package/Runtime/Core/DataStructure/KDTree3D.cs +911 -0
  315. package/Runtime/Core/DataStructure/KDTree3D.cs.meta +11 -0
  316. package/Runtime/Core/DataStructure/OctTree3D.cs +983 -0
  317. package/Runtime/Core/DataStructure/OctTree3D.cs.meta +11 -0
  318. package/Runtime/Core/DataStructure/PriorityQueue.cs +194 -0
  319. package/Runtime/Core/DataStructure/PriorityQueue.cs.meta +11 -0
  320. package/Runtime/Core/DataStructure/QuadTree2D.cs +722 -0
  321. package/Runtime/Core/DataStructure/QuadTree2D.cs.meta +11 -0
  322. package/Runtime/Core/DataStructure/RTree2D.cs +704 -0
  323. package/Runtime/Core/DataStructure/{RTree.cs.meta → RTree2D.cs.meta} +11 -11
  324. package/Runtime/Core/DataStructure/RTree3D.cs +775 -0
  325. package/Runtime/Core/DataStructure/RTree3D.cs.meta +11 -0
  326. package/Runtime/Core/DataStructure/SparseSet.cs +597 -0
  327. package/Runtime/Core/DataStructure/SparseSet.cs.meta +11 -0
  328. package/Runtime/Core/DataStructure/SpatialHash2D.cs +312 -0
  329. package/Runtime/Core/DataStructure/SpatialHash2D.cs.meta +3 -0
  330. package/Runtime/Core/DataStructure/SpatialHash3D.cs +341 -0
  331. package/Runtime/Core/DataStructure/SpatialHash3D.cs.meta +11 -0
  332. package/Runtime/Core/DataStructure/Sphere.cs +264 -0
  333. package/Runtime/Core/DataStructure/Sphere.cs.meta +11 -0
  334. package/Runtime/Core/DataStructure/StringWrapper.cs +115 -91
  335. package/Runtime/Core/DataStructure/StringWrapper.cs.meta +11 -11
  336. package/Runtime/Core/DataStructure/TimedCache.cs +88 -66
  337. package/Runtime/Core/DataStructure/TimedCache.cs.meta +11 -11
  338. package/Runtime/Core/DataStructure/Trie.cs +660 -359
  339. package/Runtime/Core/DataStructure/Trie.cs.meta +2 -2
  340. package/Runtime/Core/DataStructure.meta +8 -8
  341. package/Runtime/Core/Extension/AnimatorExtensions.cs +40 -25
  342. package/Runtime/Core/Extension/AnimatorExtensions.cs.meta +11 -11
  343. package/Runtime/Core/Extension/AsyncOperationExtensions.cs +404 -110
  344. package/Runtime/Core/Extension/AsyncOperationExtensions.cs.meta +2 -2
  345. package/Runtime/Core/Extension/CircleExtensions.cs +125 -25
  346. package/Runtime/Core/Extension/CircleExtensions.cs.meta +11 -11
  347. package/Runtime/Core/Extension/ColorExtensions.cs +983 -644
  348. package/Runtime/Core/Extension/ColorExtensions.cs.meta +11 -11
  349. package/Runtime/Core/Extension/DictionaryExtensions.cs +606 -299
  350. package/Runtime/Core/Extension/DictionaryExtensions.cs.meta +11 -11
  351. package/Runtime/Core/Extension/DirectionExtensions.cs +377 -213
  352. package/Runtime/Core/Extension/DirectionExtensions.cs.meta +11 -11
  353. package/Runtime/Core/Extension/EnumExtensions.cs +535 -137
  354. package/Runtime/Core/Extension/EnumExtensions.cs.meta +2 -2
  355. package/Runtime/Core/Extension/IEnumerableExtensions.cs +341 -124
  356. package/Runtime/Core/Extension/IEnumerableExtensions.cs.meta +11 -11
  357. package/Runtime/Core/Extension/IListExtensions.cs +767 -248
  358. package/Runtime/Core/Extension/IListExtensions.cs.meta +11 -11
  359. package/Runtime/Core/Extension/IReadonlyListExtensions.cs +687 -37
  360. package/Runtime/Core/Extension/IReadonlyListExtensions.cs.meta +2 -2
  361. package/Runtime/Core/Extension/ProtoEqualityExtensions.cs +292 -0
  362. package/Runtime/Core/Extension/ProtoEqualityExtensions.cs.meta +3 -0
  363. package/Runtime/Core/Extension/RandomExtensions.cs +1006 -109
  364. package/Runtime/Core/Extension/RandomExtensions.cs.meta +11 -11
  365. package/Runtime/Core/Extension/StringExtensions.cs +1635 -239
  366. package/Runtime/Core/Extension/StringExtensions.cs.meta +11 -11
  367. package/Runtime/Core/Extension/UnityExtensions.cs +4555 -1689
  368. package/Runtime/Core/Extension/UnityExtensions.cs.meta +11 -11
  369. package/Runtime/Core/Extension/WallstopStudiosLogger.cs +287 -245
  370. package/Runtime/Core/Extension/WallstopStudiosLogger.cs.meta +11 -11
  371. package/Runtime/Core/Extension.meta +8 -8
  372. package/Runtime/Core/Helper/ArrayConverter.cs +73 -39
  373. package/Runtime/Core/Helper/ArrayConverter.cs.meta +2 -2
  374. package/Runtime/Core/Helper/AssignUtilities.cs +33 -14
  375. package/Runtime/Core/Helper/AssignUtilities.cs.meta +11 -11
  376. package/Runtime/Core/Helper/DirectoryHelper.cs +210 -196
  377. package/Runtime/Core/Helper/DirectoryHelper.cs.meta +2 -2
  378. package/Runtime/Core/Helper/Enumerables.cs +51 -17
  379. package/Runtime/Core/Helper/Enumerables.cs.meta +11 -11
  380. package/Runtime/Core/Helper/FileHelper.cs +97 -77
  381. package/Runtime/Core/Helper/FileHelper.cs.meta +2 -2
  382. package/Runtime/Core/Helper/FormattingHelpers.cs +49 -38
  383. package/Runtime/Core/Helper/FormattingHelpers.cs.meta +2 -2
  384. package/Runtime/Core/Helper/FuncBasedComparer.cs +29 -0
  385. package/Runtime/Core/Helper/FuncBasedComparer.cs.meta +3 -0
  386. package/Runtime/Core/Helper/Geometry.cs +65 -43
  387. package/Runtime/Core/Helper/Geometry.cs.meta +11 -11
  388. package/Runtime/Core/Helper/Helpers.cs +1271 -831
  389. package/Runtime/Core/Helper/Helpers.cs.meta +11 -11
  390. package/Runtime/Core/Helper/IterationHelpers.cs +83 -32
  391. package/Runtime/Core/Helper/IterationHelpers.cs.meta +11 -11
  392. package/Runtime/Core/Helper/LifetimeHelpers.cs +20 -13
  393. package/Runtime/Core/Helper/LifetimeHelpers.cs.meta +11 -11
  394. package/Runtime/Core/Helper/LineHelper.cs +259 -194
  395. package/Runtime/Core/Helper/LineHelper.cs.meta +2 -2
  396. package/Runtime/Core/Helper/Logging/UnityLogTagFormatter.cs +549 -539
  397. package/Runtime/Core/Helper/Logging/UnityLogTagFormatter.cs.meta +2 -2
  398. package/Runtime/Core/Helper/Logging.meta +2 -2
  399. package/Runtime/Core/Helper/Objects.cs +477 -769
  400. package/Runtime/Core/Helper/Objects.cs.meta +11 -11
  401. package/Runtime/Core/Helper/Partials/LogHelpers.cs +13 -13
  402. package/Runtime/Core/Helper/Partials/LogHelpers.cs.meta +2 -2
  403. package/Runtime/Core/Helper/Partials/MathHelpers.cs +45 -30
  404. package/Runtime/Core/Helper/Partials/MathHelpers.cs.meta +2 -2
  405. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +509 -400
  406. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs.meta +2 -2
  407. package/Runtime/Core/Helper/Partials/TransformHelpers.cs +393 -377
  408. package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +2 -2
  409. package/Runtime/Core/Helper/Partials.meta +2 -2
  410. package/Runtime/Core/Helper/PathHelper.cs +42 -15
  411. package/Runtime/Core/Helper/PathHelper.cs.meta +2 -2
  412. package/Runtime/Core/Helper/ReflectionHelpers.cs +5298 -1963
  413. package/Runtime/Core/Helper/ReflectionHelpers.cs.meta +2 -2
  414. package/Runtime/Core/Helper/ReverseComparer.cs +33 -0
  415. package/Runtime/Core/Helper/ReverseComparer.cs.meta +3 -0
  416. package/Runtime/Core/Helper/SceneHelper.cs +251 -224
  417. package/Runtime/Core/Helper/SceneHelper.cs.meta +2 -2
  418. package/Runtime/Core/Helper/SpriteHelpers.cs +52 -41
  419. package/Runtime/Core/Helper/SpriteHelpers.cs.meta +11 -11
  420. package/Runtime/Core/Helper/StringInList.cs +61 -35
  421. package/Runtime/Core/Helper/StringInList.cs.meta +11 -11
  422. package/Runtime/Core/Helper/TestAssemblyHelper.cs +134 -0
  423. package/Runtime/Core/Helper/TestAssemblyHelper.cs.meta +11 -0
  424. package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs +144 -82
  425. package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs.meta +2 -2
  426. package/Runtime/Core/Helper/WallMath.cs +672 -166
  427. package/Runtime/Core/Helper/WallMath.cs.meta +11 -11
  428. package/Runtime/Core/Helper.meta +8 -8
  429. package/Runtime/Core/Math/Line2D.cs +263 -0
  430. package/Runtime/Core/Math/Line2D.cs.meta +11 -0
  431. package/Runtime/Core/Math/Line3D.cs +452 -0
  432. package/Runtime/Core/Math/Line3D.cs.meta +11 -0
  433. package/Runtime/Core/Math/Parabola.cs +241 -47
  434. package/Runtime/Core/Math/Parabola.cs.meta +11 -11
  435. package/Runtime/Core/Math/PointPolygonCheck.cs +175 -36
  436. package/Runtime/Core/Math/PointPolygonCheck.cs.meta +11 -11
  437. package/Runtime/Core/Math/Range.cs +157 -92
  438. package/Runtime/Core/Math/Range.cs.meta +11 -11
  439. package/Runtime/Core/Math.meta +8 -8
  440. package/Runtime/Core/Model/Direction.cs +25 -43
  441. package/Runtime/Core/Model/Direction.cs.meta +11 -11
  442. package/Runtime/Core/Model.meta +8 -8
  443. package/Runtime/Core/OneOf/FastOneOf.cs +252 -152
  444. package/Runtime/Core/OneOf/FastOneOf.cs.meta +11 -11
  445. package/Runtime/Core/OneOf/FastOneOf2.cs +198 -0
  446. package/Runtime/Core/OneOf/FastOneOf2.cs.meta +11 -0
  447. package/Runtime/Core/OneOf/FastOneOf4.cs +324 -0
  448. package/Runtime/Core/OneOf/FastOneOf4.cs.meta +11 -0
  449. package/Runtime/Core/OneOf/None.cs +30 -4
  450. package/Runtime/Core/OneOf/None.cs.meta +11 -11
  451. package/Runtime/Core/OneOf.meta +8 -8
  452. package/Runtime/Core/Random/AbstractRandom.cs +1318 -655
  453. package/Runtime/Core/Random/AbstractRandom.cs.meta +11 -11
  454. package/Runtime/Core/Random/DotNetRandom.cs +118 -54
  455. package/Runtime/Core/Random/DotNetRandom.cs.meta +2 -2
  456. package/Runtime/Core/Random/IRandom.cs +203 -161
  457. package/Runtime/Core/Random/IRandom.cs.meta +11 -11
  458. package/Runtime/Core/Random/IllusionFlow.cs +171 -107
  459. package/Runtime/Core/Random/IllusionFlow.cs.meta +2 -2
  460. package/Runtime/Core/Random/LinearCongruentialGenerator.cs +90 -49
  461. package/Runtime/Core/Random/LinearCongruentialGenerator.cs.meta +2 -2
  462. package/Runtime/Core/Random/NativePcgRandom.cs +139 -97
  463. package/Runtime/Core/Random/NativePcgRandom.cs.meta +11 -11
  464. package/Runtime/Core/Random/PRNG.cs +21 -7
  465. package/Runtime/Core/Random/PRNG.cs.meta +2 -2
  466. package/Runtime/Core/Random/PcgRandom.cs +243 -149
  467. package/Runtime/Core/Random/PcgRandom.cs.meta +11 -11
  468. package/Runtime/Core/Random/PerlinNoise.cs +369 -369
  469. package/Runtime/Core/Random/PerlinNoise.cs.meta +2 -2
  470. package/Runtime/Core/Random/RandomComparer.cs +34 -0
  471. package/Runtime/Core/Random/RandomComparer.cs.meta +3 -0
  472. package/Runtime/Core/Random/RandomState.cs +206 -131
  473. package/Runtime/Core/Random/RandomState.cs.meta +11 -11
  474. package/Runtime/Core/Random/RandomUtilities.cs +55 -26
  475. package/Runtime/Core/Random/RandomUtilities.cs.meta +11 -11
  476. package/Runtime/Core/Random/RomuDuo.cs +171 -116
  477. package/Runtime/Core/Random/RomuDuo.cs.meta +2 -2
  478. package/Runtime/Core/Random/SplitMix64.cs +134 -94
  479. package/Runtime/Core/Random/SplitMix64.cs.meta +2 -2
  480. package/Runtime/Core/Random/SquirrelRandom.cs +127 -84
  481. package/Runtime/Core/Random/SquirrelRandom.cs.meta +11 -11
  482. package/Runtime/Core/Random/SystemRandom.cs +203 -162
  483. package/Runtime/Core/Random/SystemRandom.cs.meta +11 -11
  484. package/Runtime/Core/Random/ThreadLocalRandom.cs +25 -12
  485. package/Runtime/Core/Random/ThreadLocalRandom.cs.meta +11 -11
  486. package/Runtime/Core/Random/UnityRandom.cs +109 -57
  487. package/Runtime/Core/Random/UnityRandom.cs.meta +11 -11
  488. package/Runtime/Core/Random/WyRandom.cs +158 -121
  489. package/Runtime/Core/Random/WyRandom.cs.meta +2 -2
  490. package/Runtime/Core/Random/XorShiftRandom.cs +106 -52
  491. package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -11
  492. package/Runtime/Core/Random/XoroShiroRandom.cs +184 -119
  493. package/Runtime/Core/Random/XoroShiroRandom.cs.meta +2 -2
  494. package/Runtime/Core/Random.meta +8 -8
  495. package/Runtime/Core/Serialization/JsonConverters/AnimationCurveConverter.cs +248 -0
  496. package/Runtime/Core/Serialization/JsonConverters/AnimationCurveConverter.cs.meta +11 -0
  497. package/Runtime/Core/Serialization/JsonConverters/BitSetConverter.cs +119 -0
  498. package/Runtime/Core/Serialization/JsonConverters/BitSetConverter.cs.meta +11 -0
  499. package/Runtime/Core/Serialization/JsonConverters/BoundingSphereConverter.cs +74 -0
  500. package/Runtime/Core/Serialization/JsonConverters/BoundingSphereConverter.cs.meta +11 -0
  501. package/Runtime/Core/Serialization/JsonConverters/BoundsConverter.cs +132 -0
  502. package/Runtime/Core/Serialization/JsonConverters/BoundsConverter.cs.meta +11 -0
  503. package/Runtime/Core/Serialization/JsonConverters/BoundsIntConverter.cs +135 -0
  504. package/Runtime/Core/Serialization/JsonConverters/BoundsIntConverter.cs.meta +11 -0
  505. package/Runtime/Core/Serialization/JsonConverters/Color32Converter.cs +98 -0
  506. package/Runtime/Core/Serialization/JsonConverters/Color32Converter.cs.meta +11 -0
  507. package/Runtime/Core/Serialization/JsonConverters/ColorBlockConverter.cs +123 -0
  508. package/Runtime/Core/Serialization/JsonConverters/ColorBlockConverter.cs.meta +11 -0
  509. package/Runtime/Core/Serialization/JsonConverters/ColorConverter.cs +88 -88
  510. package/Runtime/Core/Serialization/JsonConverters/ColorConverter.cs.meta +2 -2
  511. package/Runtime/Core/Serialization/JsonConverters/CyclicBufferConverterFactory.cs +112 -0
  512. package/Runtime/Core/Serialization/JsonConverters/CyclicBufferConverterFactory.cs.meta +11 -0
  513. package/Runtime/Core/Serialization/JsonConverters/DequeConverterFactory.cs +62 -0
  514. package/Runtime/Core/Serialization/JsonConverters/DequeConverterFactory.cs.meta +11 -0
  515. package/Runtime/Core/Serialization/JsonConverters/FastVector2IntConverter.cs +72 -0
  516. package/Runtime/Core/Serialization/JsonConverters/FastVector2IntConverter.cs.meta +11 -0
  517. package/Runtime/Core/Serialization/JsonConverters/FastVector3IntConverter.cs +80 -0
  518. package/Runtime/Core/Serialization/JsonConverters/FastVector3IntConverter.cs.meta +11 -0
  519. package/Runtime/Core/Serialization/JsonConverters/GameObjectConverter.cs +44 -36
  520. package/Runtime/Core/Serialization/JsonConverters/GameObjectConverter.cs.meta +2 -2
  521. package/Runtime/Core/Serialization/JsonConverters/GradientConverter.cs +245 -0
  522. package/Runtime/Core/Serialization/JsonConverters/GradientConverter.cs.meta +11 -0
  523. package/Runtime/Core/Serialization/JsonConverters/Hash128Converter.cs +92 -0
  524. package/Runtime/Core/Serialization/JsonConverters/Hash128Converter.cs.meta +11 -0
  525. package/Runtime/Core/Serialization/JsonConverters/ImmutableBitSetConverter.cs +119 -0
  526. package/Runtime/Core/Serialization/JsonConverters/ImmutableBitSetConverter.cs.meta +11 -0
  527. package/Runtime/Core/Serialization/JsonConverters/KVector2Converter.cs +72 -0
  528. package/Runtime/Core/Serialization/JsonConverters/KVector2Converter.cs.meta +11 -0
  529. package/Runtime/Core/Serialization/JsonConverters/LayerMaskConverter.cs +95 -0
  530. package/Runtime/Core/Serialization/JsonConverters/LayerMaskConverter.cs.meta +11 -0
  531. package/Runtime/Core/Serialization/JsonConverters/Matrix4x4Converter.cs +237 -218
  532. package/Runtime/Core/Serialization/JsonConverters/Matrix4x4Converter.cs.meta +2 -2
  533. package/Runtime/Core/Serialization/JsonConverters/MinMaxCurveConverter.cs +142 -0
  534. package/Runtime/Core/Serialization/JsonConverters/MinMaxCurveConverter.cs.meta +11 -0
  535. package/Runtime/Core/Serialization/JsonConverters/MinMaxGradientConverter.cs +135 -0
  536. package/Runtime/Core/Serialization/JsonConverters/MinMaxGradientConverter.cs.meta +11 -0
  537. package/Runtime/Core/Serialization/JsonConverters/PlaneConverter.cs +79 -0
  538. package/Runtime/Core/Serialization/JsonConverters/PlaneConverter.cs.meta +11 -0
  539. package/Runtime/Core/Serialization/JsonConverters/PoseConverter.cs +76 -0
  540. package/Runtime/Core/Serialization/JsonConverters/PoseConverter.cs.meta +11 -0
  541. package/Runtime/Core/Serialization/JsonConverters/QuaternionConverter.cs +88 -0
  542. package/Runtime/Core/Serialization/JsonConverters/QuaternionConverter.cs.meta +11 -0
  543. package/Runtime/Core/Serialization/JsonConverters/RangeConverterFactory.cs +106 -0
  544. package/Runtime/Core/Serialization/JsonConverters/RangeConverterFactory.cs.meta +11 -0
  545. package/Runtime/Core/Serialization/JsonConverters/RangeIntConverter.cs +71 -0
  546. package/Runtime/Core/Serialization/JsonConverters/RangeIntConverter.cs.meta +11 -0
  547. package/Runtime/Core/Serialization/JsonConverters/Ray2DConverter.cs +80 -0
  548. package/Runtime/Core/Serialization/JsonConverters/Ray2DConverter.cs.meta +11 -0
  549. package/Runtime/Core/Serialization/JsonConverters/RayConverter.cs +76 -0
  550. package/Runtime/Core/Serialization/JsonConverters/RayConverter.cs.meta +11 -0
  551. package/Runtime/Core/Serialization/JsonConverters/RaycastHitConverter.cs +115 -0
  552. package/Runtime/Core/Serialization/JsonConverters/RaycastHitConverter.cs.meta +11 -0
  553. package/Runtime/Core/Serialization/JsonConverters/RectConverter.cs +84 -0
  554. package/Runtime/Core/Serialization/JsonConverters/RectConverter.cs.meta +11 -0
  555. package/Runtime/Core/Serialization/JsonConverters/RectIntConverter.cs +88 -0
  556. package/Runtime/Core/Serialization/JsonConverters/RectIntConverter.cs.meta +11 -0
  557. package/Runtime/Core/Serialization/JsonConverters/RectOffsetConverter.cs +87 -0
  558. package/Runtime/Core/Serialization/JsonConverters/RectOffsetConverter.cs.meta +11 -0
  559. package/Runtime/Core/Serialization/JsonConverters/RenderTextureDescriptorConverter.cs +264 -0
  560. package/Runtime/Core/Serialization/JsonConverters/RenderTextureDescriptorConverter.cs.meta +11 -0
  561. package/Runtime/Core/Serialization/JsonConverters/ResolutionConverter.cs +158 -0
  562. package/Runtime/Core/Serialization/JsonConverters/ResolutionConverter.cs.meta +11 -0
  563. package/Runtime/Core/Serialization/JsonConverters/SceneConverter.cs +103 -0
  564. package/Runtime/Core/Serialization/JsonConverters/SceneConverter.cs.meta +11 -0
  565. package/Runtime/Core/Serialization/JsonConverters/SphericalHarmonicsL2Converter.cs +121 -0
  566. package/Runtime/Core/Serialization/JsonConverters/SphericalHarmonicsL2Converter.cs.meta +11 -0
  567. package/Runtime/Core/Serialization/JsonConverters/TouchConverter.cs +54 -0
  568. package/Runtime/Core/Serialization/JsonConverters/TouchConverter.cs.meta +11 -0
  569. package/Runtime/Core/Serialization/JsonConverters/TypeConverter.cs +30 -28
  570. package/Runtime/Core/Serialization/JsonConverters/TypeConverter.cs.meta +2 -2
  571. package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +72 -74
  572. package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs.meta +11 -11
  573. package/Runtime/Core/Serialization/JsonConverters/Vector2IntConverter.cs +72 -0
  574. package/Runtime/Core/Serialization/JsonConverters/Vector2IntConverter.cs.meta +11 -0
  575. package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +80 -81
  576. package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs.meta +11 -11
  577. package/Runtime/Core/Serialization/JsonConverters/Vector3IntConverter.cs +80 -0
  578. package/Runtime/Core/Serialization/JsonConverters/Vector3IntConverter.cs.meta +11 -0
  579. package/Runtime/Core/Serialization/JsonConverters/Vector4Converter.cs +88 -88
  580. package/Runtime/Core/Serialization/JsonConverters/Vector4Converter.cs.meta +2 -2
  581. package/Runtime/Core/Serialization/JsonConverters.meta +8 -8
  582. package/Runtime/Core/Serialization/ProtobufUnitySurrogates.cs +383 -0
  583. package/Runtime/Core/Serialization/ProtobufUnitySurrogates.cs.meta +11 -0
  584. package/Runtime/Core/Serialization/Serializer.cs +2121 -195
  585. package/Runtime/Core/Serialization/Serializer.cs.meta +11 -11
  586. package/Runtime/Core/Serialization.meta +8 -8
  587. package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +228 -228
  588. package/Runtime/Core/Threading/SingleThreadedThreadPool.cs.meta +11 -11
  589. package/Runtime/Core/Threading.meta +8 -8
  590. package/Runtime/Core.meta +8 -8
  591. package/Runtime/Integrations/VContainer/AssemblyInfo.cs +9 -0
  592. package/Runtime/Integrations/VContainer/AssemblyInfo.cs.meta +3 -0
  593. package/Runtime/Integrations/VContainer/ObjectResolverRelationalExtensions.cs +281 -0
  594. package/Runtime/Integrations/VContainer/ObjectResolverRelationalExtensions.cs.meta +11 -0
  595. package/Runtime/Integrations/VContainer/RelationalComponentEntryPoint.cs +189 -0
  596. package/Runtime/Integrations/VContainer/RelationalComponentEntryPoint.cs.meta +11 -0
  597. package/Runtime/Integrations/VContainer/RelationalComponentsBuilderExtensions.cs +90 -0
  598. package/Runtime/Integrations/VContainer/RelationalComponentsBuilderExtensions.cs.meta +11 -0
  599. package/Runtime/Integrations/VContainer/RelationalObjectPools.cs +114 -0
  600. package/Runtime/Integrations/VContainer/RelationalObjectPools.cs.meta +11 -0
  601. package/Runtime/Integrations/VContainer/RelationalSceneAssignmentOptions.cs +95 -0
  602. package/Runtime/Integrations/VContainer/RelationalSceneAssignmentOptions.cs.meta +11 -0
  603. package/Runtime/Integrations/VContainer/RelationalSceneLoadListener.cs +241 -0
  604. package/Runtime/Integrations/VContainer/RelationalSceneLoadListener.cs.meta +11 -0
  605. package/Runtime/Integrations/VContainer/WallstopStudios.UnityHelpers.Integration.VContainer.asmdef +30 -0
  606. package/Runtime/Integrations/VContainer/WallstopStudios.UnityHelpers.Integration.VContainer.asmdef.meta +7 -0
  607. package/Runtime/Integrations/VContainer.meta +8 -0
  608. package/Runtime/Integrations/Zenject/AssemblyInfo.cs +9 -0
  609. package/Runtime/Integrations/Zenject/AssemblyInfo.cs.meta +3 -0
  610. package/Runtime/Integrations/Zenject/DiContainerRelationalExtensions.cs +247 -0
  611. package/Runtime/Integrations/Zenject/DiContainerRelationalExtensions.cs.meta +11 -0
  612. package/Runtime/Integrations/Zenject/RelationalComponentSceneInitializer.cs +182 -0
  613. package/Runtime/Integrations/Zenject/RelationalComponentSceneInitializer.cs.meta +11 -0
  614. package/Runtime/Integrations/Zenject/RelationalComponentsInstaller.cs +94 -0
  615. package/Runtime/Integrations/Zenject/RelationalComponentsInstaller.cs.meta +11 -0
  616. package/Runtime/Integrations/Zenject/RelationalMemoryPools.cs +44 -0
  617. package/Runtime/Integrations/Zenject/RelationalMemoryPools.cs.meta +11 -0
  618. package/Runtime/Integrations/Zenject/RelationalSceneAssignmentOptions.cs +93 -0
  619. package/Runtime/Integrations/Zenject/RelationalSceneAssignmentOptions.cs.meta +11 -0
  620. package/Runtime/Integrations/Zenject/RelationalSceneLoadListener.cs +243 -0
  621. package/Runtime/Integrations/Zenject/RelationalSceneLoadListener.cs.meta +11 -0
  622. package/Runtime/Integrations/Zenject/WallstopStudios.UnityHelpers.Integration.Zenject.asmdef +30 -0
  623. package/Runtime/Integrations/Zenject/WallstopStudios.UnityHelpers.Integration.Zenject.asmdef.meta +7 -0
  624. package/Runtime/Integrations/Zenject.meta +8 -0
  625. package/Runtime/Integrations.meta +8 -0
  626. package/Runtime/Protobuf-Net/System.Collections.Immutable.dll.meta +33 -33
  627. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll.meta +33 -33
  628. package/Runtime/Protobuf-Net/protobuf-net.Core.dll.meta +33 -33
  629. package/Runtime/Protobuf-Net/protobuf-net.dll.meta +33 -33
  630. package/Runtime/Protobuf-Net.meta +8 -8
  631. package/Runtime/Tags/AlwaysIncludeInAttributeMetadataCacheAttribute.cs +11 -0
  632. package/Runtime/Tags/AlwaysIncludeInAttributeMetadataCacheAttribute.cs.meta +11 -0
  633. package/Runtime/Tags/Attribute.cs +399 -205
  634. package/Runtime/Tags/Attribute.cs.meta +2 -2
  635. package/Runtime/Tags/AttributeEffect.cs +372 -281
  636. package/Runtime/Tags/AttributeEffect.cs.meta +2 -2
  637. package/Runtime/Tags/AttributeMetadataCache.cs +500 -0
  638. package/Runtime/Tags/AttributeMetadataCache.cs.meta +11 -0
  639. package/Runtime/Tags/AttributeMetadataFilters.cs +108 -0
  640. package/Runtime/Tags/AttributeMetadataFilters.cs.meta +11 -0
  641. package/Runtime/Tags/AttributeModification.cs +132 -48
  642. package/Runtime/Tags/AttributeModification.cs.meta +2 -2
  643. package/Runtime/Tags/AttributeUtilities.cs +376 -209
  644. package/Runtime/Tags/AttributeUtilities.cs.meta +2 -2
  645. package/Runtime/Tags/AttributesComponent.cs +237 -163
  646. package/Runtime/Tags/AttributesComponent.cs.meta +2 -2
  647. package/Runtime/Tags/CollisionSenses.cs +117 -91
  648. package/Runtime/Tags/CollisionSenses.cs.meta +2 -2
  649. package/Runtime/Tags/CosmeticEffectComponent.cs +112 -50
  650. package/Runtime/Tags/CosmeticEffectComponent.cs.meta +2 -2
  651. package/Runtime/Tags/CosmeticEffectData.cs +109 -63
  652. package/Runtime/Tags/CosmeticEffectData.cs.meta +2 -2
  653. package/Runtime/Tags/EffectHandle.cs +150 -65
  654. package/Runtime/Tags/EffectHandle.cs.meta +2 -2
  655. package/Runtime/Tags/EffectHandler.cs +470 -393
  656. package/Runtime/Tags/EffectHandler.cs.meta +2 -2
  657. package/Runtime/Tags/ModificationAction.cs +60 -9
  658. package/Runtime/Tags/ModificationAction.cs.meta +2 -2
  659. package/Runtime/Tags/ModifierDurationType.cs +71 -13
  660. package/Runtime/Tags/ModifierDurationType.cs.meta +2 -2
  661. package/Runtime/Tags/TagHandler.cs +373 -158
  662. package/Runtime/Tags/TagHandler.cs.meta +2 -2
  663. package/Runtime/Tags.meta +2 -2
  664. package/Runtime/Utils/AnimationEventEqualityComparer.cs +198 -161
  665. package/Runtime/Utils/AnimationEventEqualityComparer.cs.meta +11 -11
  666. package/Runtime/Utils/AnimatorEnumStateMachine.cs +110 -88
  667. package/Runtime/Utils/AnimatorEnumStateMachine.cs.meta +11 -11
  668. package/Runtime/Utils/Ascii85.cs +132 -115
  669. package/Runtime/Utils/Ascii85.cs.meta +2 -2
  670. package/Runtime/Utils/Buffers.cs +1151 -550
  671. package/Runtime/Utils/Buffers.cs.meta +11 -11
  672. package/Runtime/Utils/CenterPointOffset.cs +35 -30
  673. package/Runtime/Utils/CenterPointOffset.cs.meta +2 -2
  674. package/Runtime/Utils/ChildSpawner.cs +250 -157
  675. package/Runtime/Utils/ChildSpawner.cs.meta +2 -2
  676. package/Runtime/Utils/CircleLineRenderer.cs +142 -142
  677. package/Runtime/Utils/CircleLineRenderer.cs.meta +11 -11
  678. package/Runtime/Utils/CollisionProxy.cs +48 -48
  679. package/Runtime/Utils/CollisionProxy.cs.meta +2 -2
  680. package/Runtime/Utils/CoroutineHandler.cs +4 -4
  681. package/Runtime/Utils/CoroutineHandler.cs.meta +2 -2
  682. package/Runtime/Utils/DeferredDisposalResult.cs +20 -23
  683. package/Runtime/Utils/DeferredDisposalResult.cs.meta +2 -2
  684. package/Runtime/Utils/LZMA.cs +276 -53
  685. package/Runtime/Utils/LZMA.cs.meta +2 -2
  686. package/Runtime/Utils/MatchColliderToSprite.cs +104 -104
  687. package/Runtime/Utils/MatchColliderToSprite.cs.meta +2 -2
  688. package/Runtime/Utils/MatchTransform.cs +99 -82
  689. package/Runtime/Utils/MatchTransform.cs.meta +2 -2
  690. package/Runtime/Utils/Oscillator.cs +27 -27
  691. package/Runtime/Utils/Oscillator.cs.meta +11 -11
  692. package/Runtime/Utils/PolygonCollider2DOptimizer.cs +104 -83
  693. package/Runtime/Utils/PolygonCollider2DOptimizer.cs.meta +2 -2
  694. package/Runtime/Utils/RuntimeSingleton.cs +139 -89
  695. package/Runtime/Utils/RuntimeSingleton.cs.meta +11 -11
  696. package/Runtime/Utils/ScriptableObjectSingleton.cs +225 -85
  697. package/Runtime/Utils/ScriptableObjectSingleton.cs.meta +2 -2
  698. package/Runtime/Utils/SerializedStringComparer.cs +107 -107
  699. package/Runtime/Utils/SerializedStringComparer.cs.meta +2 -2
  700. package/Runtime/Utils/SetTextureImportData.cs +71 -69
  701. package/Runtime/Utils/SetTextureImportData.cs.meta +11 -11
  702. package/Runtime/Utils/SevenZip/Common/CRC.cs +70 -70
  703. package/Runtime/Utils/SevenZip/Common/CRC.cs.meta +11 -11
  704. package/Runtime/Utils/SevenZip/Common/InBuffer.cs +84 -84
  705. package/Runtime/Utils/SevenZip/Common/InBuffer.cs.meta +11 -11
  706. package/Runtime/Utils/SevenZip/Common/OutBuffer.cs +70 -70
  707. package/Runtime/Utils/SevenZip/Common/OutBuffer.cs.meta +11 -11
  708. package/Runtime/Utils/SevenZip/Common.meta +2 -2
  709. package/Runtime/Utils/SevenZip/Compress/LZ/IMatchFinder.cs +28 -28
  710. package/Runtime/Utils/SevenZip/Compress/LZ/IMatchFinder.cs.meta +11 -11
  711. package/Runtime/Utils/SevenZip/Compress/LZ/LzBinTree.cs +454 -454
  712. package/Runtime/Utils/SevenZip/Compress/LZ/LzBinTree.cs.meta +11 -11
  713. package/Runtime/Utils/SevenZip/Compress/LZ/LzInWindow.cs +179 -179
  714. package/Runtime/Utils/SevenZip/Compress/LZ/LzInWindow.cs.meta +11 -11
  715. package/Runtime/Utils/SevenZip/Compress/LZ/LzOutWindow.cs +137 -137
  716. package/Runtime/Utils/SevenZip/Compress/LZ/LzOutWindow.cs.meta +11 -11
  717. package/Runtime/Utils/SevenZip/Compress/LZ.meta +8 -8
  718. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaBase.cs +110 -110
  719. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaBase.cs.meta +11 -11
  720. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaDecoder.cs +525 -527
  721. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaDecoder.cs.meta +11 -11
  722. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaEncoder.cs +1891 -1904
  723. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaEncoder.cs.meta +11 -11
  724. package/Runtime/Utils/SevenZip/Compress/LZMA.meta +8 -8
  725. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoder.cs +242 -242
  726. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoder.cs.meta +11 -11
  727. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoderBit.cs +146 -149
  728. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoderBit.cs.meta +11 -11
  729. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoderBitTree.cs +177 -177
  730. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoderBitTree.cs.meta +11 -11
  731. package/Runtime/Utils/SevenZip/Compress/RangeCoder.meta +8 -8
  732. package/Runtime/Utils/SevenZip/Compress.meta +8 -8
  733. package/Runtime/Utils/SevenZip/ICoder.cs +177 -177
  734. package/Runtime/Utils/SevenZip/ICoder.cs.meta +11 -11
  735. package/Runtime/Utils/SevenZip.meta +2 -2
  736. package/Runtime/Utils/SpriteRendererMetadata.cs +346 -370
  737. package/Runtime/Utils/SpriteRendererMetadata.cs.meta +2 -2
  738. package/Runtime/Utils/SpriteRendererSyncer.cs +100 -100
  739. package/Runtime/Utils/SpriteRendererSyncer.cs.meta +2 -2
  740. package/Runtime/Utils/StartTracker.cs +15 -15
  741. package/Runtime/Utils/StartTracker.cs.meta +2 -2
  742. package/Runtime/Utils/TextureScale.cs +364 -179
  743. package/Runtime/Utils/TextureScale.cs.meta +2 -2
  744. package/Runtime/Utils/TypeNameSorter.cs +17 -17
  745. package/Runtime/Utils/TypeNameSorter.cs.meta +2 -2
  746. package/Runtime/Utils/UnityObjectNameComparer.cs +89 -89
  747. package/Runtime/Utils/UnityObjectNameComparer.cs.meta +2 -2
  748. package/Runtime/Utils.meta +8 -8
  749. package/Runtime/Visuals/AnimatedSpriteLayer.cs +217 -130
  750. package/Runtime/Visuals/AnimatedSpriteLayer.cs.meta +2 -2
  751. package/Runtime/Visuals/UGUI/EnhancedImage.cs +224 -85
  752. package/Runtime/Visuals/UGUI/EnhancedImage.cs.meta +2 -2
  753. package/Runtime/Visuals/UGUI.meta +2 -2
  754. package/Runtime/Visuals/UIToolkit/LayeredImage.cs +784 -484
  755. package/Runtime/Visuals/UIToolkit/LayeredImage.cs.meta +2 -2
  756. package/Runtime/Visuals/UIToolkit/MultiFileSelectorElement.cs +945 -322
  757. package/Runtime/Visuals/UIToolkit/MultiFileSelectorElement.cs.meta +2 -2
  758. package/Runtime/Visuals/UIToolkit.meta +2 -2
  759. package/Runtime/Visuals.meta +2 -2
  760. package/Runtime/WallstopStudios.UnityHelpers.asmdef +22 -14
  761. package/Runtime/WallstopStudios.UnityHelpers.asmdef.meta +7 -7
  762. package/Runtime.meta +8 -8
  763. package/SERIALIZATION.md +663 -0
  764. package/SERIALIZATION.md.meta +7 -0
  765. package/SINGLETONS.md +427 -0
  766. package/SINGLETONS.md.meta +7 -0
  767. package/SPATIAL_TREES_2D_GUIDE.md +261 -0
  768. package/SPATIAL_TREES_2D_GUIDE.md.meta +7 -0
  769. package/SPATIAL_TREES_3D_GUIDE.md +214 -0
  770. package/SPATIAL_TREES_3D_GUIDE.md.meta +7 -0
  771. package/SPATIAL_TREE_2D_PERFORMANCE.md +241 -0
  772. package/SPATIAL_TREE_2D_PERFORMANCE.md.meta +7 -0
  773. package/SPATIAL_TREE_3D_PERFORMANCE.md +243 -0
  774. package/SPATIAL_TREE_3D_PERFORMANCE.md.meta +7 -0
  775. package/SPATIAL_TREE_SEMANTICS.md +106 -0
  776. package/SPATIAL_TREE_SEMANTICS.md.meta +7 -0
  777. package/Samples~/DI - VContainer/Prefabs/RelationalConsumer.prefab +77 -0
  778. package/Samples~/DI - VContainer/Prefabs/RelationalConsumer.prefab.meta +8 -0
  779. package/Samples~/DI - VContainer/Prefabs/Spawner.prefab +47 -0
  780. package/Samples~/DI - VContainer/Prefabs/Spawner.prefab.meta +8 -0
  781. package/Samples~/DI - VContainer/Prefabs.meta +9 -0
  782. package/Samples~/DI - VContainer/README.md +515 -0
  783. package/Samples~/DI - VContainer/README.md.meta +8 -0
  784. package/Samples~/DI - VContainer/Scenes/VContainer_Sample.unity +120 -0
  785. package/Samples~/DI - VContainer/Scenes/VContainer_Sample.unity.meta +8 -0
  786. package/Samples~/DI - VContainer/Scenes.meta +9 -0
  787. package/Samples~/DI - VContainer/Scripts/GameLifetimeScope.cs +42 -0
  788. package/Samples~/DI - VContainer/Scripts/GameLifetimeScope.cs.meta +12 -0
  789. package/Samples~/DI - VContainer/Scripts/RelationalConsumer.cs +24 -0
  790. package/Samples~/DI - VContainer/Scripts/RelationalConsumer.cs.meta +12 -0
  791. package/Samples~/DI - VContainer/Scripts/Samples.UnityHelpers.DI.VContainer.asmdef +37 -0
  792. package/Samples~/DI - VContainer/Scripts/Samples.UnityHelpers.DI.VContainer.asmdef.meta +8 -0
  793. package/Samples~/DI - VContainer/Scripts/Spawner.cs +130 -0
  794. package/Samples~/DI - VContainer/Scripts/Spawner.cs.meta +12 -0
  795. package/Samples~/DI - VContainer/Scripts.meta +9 -0
  796. package/Samples~/DI - VContainer.meta +9 -0
  797. package/Samples~/DI - Zenject/Prefabs/RelationalConsumer.prefab +77 -0
  798. package/Samples~/DI - Zenject/Prefabs/RelationalConsumer.prefab.meta +8 -0
  799. package/Samples~/DI - Zenject/Prefabs/SpawnerZenject.prefab +47 -0
  800. package/Samples~/DI - Zenject/Prefabs/SpawnerZenject.prefab.meta +8 -0
  801. package/Samples~/DI - Zenject/Prefabs.meta +9 -0
  802. package/Samples~/DI - Zenject/README.md +553 -0
  803. package/Samples~/DI - Zenject/README.md.meta +7 -0
  804. package/Samples~/DI - Zenject/Scenes/Zenject_Sample.unity +164 -0
  805. package/Samples~/DI - Zenject/Scenes/Zenject_Sample.unity.meta +8 -0
  806. package/Samples~/DI - Zenject/Scenes.meta +9 -0
  807. package/Samples~/DI - Zenject/Scripts/RelationalConsumer.cs +22 -0
  808. package/Samples~/DI - Zenject/Scripts/RelationalConsumer.cs.meta +12 -0
  809. package/Samples~/DI - Zenject/Scripts/RelationalConsumerPool.cs +37 -0
  810. package/Samples~/DI - Zenject/Scripts/RelationalConsumerPool.cs.meta +12 -0
  811. package/Samples~/DI - Zenject/Scripts/Samples.UnityHelpers.DI.Zenject.asmdef +36 -0
  812. package/Samples~/DI - Zenject/Scripts/Samples.UnityHelpers.DI.Zenject.asmdef.meta +8 -0
  813. package/Samples~/DI - Zenject/Scripts/SceneContextPlaceholder.cs +47 -0
  814. package/Samples~/DI - Zenject/Scripts/SceneContextPlaceholder.cs.meta +12 -0
  815. package/Samples~/DI - Zenject/Scripts/SpawnerZenject.cs +91 -0
  816. package/Samples~/DI - Zenject/Scripts/SpawnerZenject.cs.meta +12 -0
  817. package/Samples~/DI - Zenject/Scripts.meta +9 -0
  818. package/Samples~/DI - Zenject.meta +9 -0
  819. package/Samples~/Random - PRNG/README.md +13 -0
  820. package/Samples~/Random - PRNG/README.md.meta +8 -0
  821. package/Samples~/Random - PRNG/Scripts/RandomPrngDemo.cs +28 -0
  822. package/Samples~/Random - PRNG/Scripts/RandomPrngDemo.cs.meta +12 -0
  823. package/Samples~/Random - PRNG/Scripts/Samples.UnityHelpers.Random.Prng.asmdef +17 -0
  824. package/Samples~/Random - PRNG/Scripts/Samples.UnityHelpers.Random.Prng.asmdef.meta +8 -0
  825. package/Samples~/Random - PRNG/Scripts.meta +9 -0
  826. package/Samples~/Random - PRNG.meta +9 -0
  827. package/Samples~/Relational Components - Basic/README.md +21 -0
  828. package/Samples~/Relational Components - Basic/README.md.meta +8 -0
  829. package/Samples~/Relational Components - Basic/Scripts/RelationalBasicConsumer.cs +37 -0
  830. package/Samples~/Relational Components - Basic/Scripts/RelationalBasicConsumer.cs.meta +12 -0
  831. package/Samples~/Relational Components - Basic/Scripts/Samples.UnityHelpers.Relational.Basic.asmdef +17 -0
  832. package/Samples~/Relational Components - Basic/Scripts/Samples.UnityHelpers.Relational.Basic.asmdef.meta +8 -0
  833. package/Samples~/Relational Components - Basic/Scripts.meta +9 -0
  834. package/Samples~/Relational Components - Basic.meta +9 -0
  835. package/Samples~/Serialization - JSON/README.md +14 -0
  836. package/Samples~/Serialization - JSON/README.md.meta +8 -0
  837. package/Samples~/Serialization - JSON/Scripts/JsonSerializationDemo.cs +50 -0
  838. package/Samples~/Serialization - JSON/Scripts/JsonSerializationDemo.cs.meta +12 -0
  839. package/Samples~/Serialization - JSON/Scripts/Samples.UnityHelpers.Serialization.Json.asmdef +17 -0
  840. package/Samples~/Serialization - JSON/Scripts/Samples.UnityHelpers.Serialization.Json.asmdef.meta +8 -0
  841. package/Samples~/Serialization - JSON/Scripts.meta +9 -0
  842. package/Samples~/Serialization - JSON.meta +9 -0
  843. package/Samples~/Spatial Structures - 2D and 3D/README.md +14 -0
  844. package/Samples~/Spatial Structures - 2D and 3D/README.md.meta +8 -0
  845. package/Samples~/Spatial Structures - 2D and 3D/Scripts/Samples.UnityHelpers.SpatialStructures.asmdef +17 -0
  846. package/Samples~/Spatial Structures - 2D and 3D/Scripts/Samples.UnityHelpers.SpatialStructures.asmdef.meta +8 -0
  847. package/Samples~/Spatial Structures - 2D and 3D/Scripts/SpatialStructuresDemo.cs +62 -0
  848. package/Samples~/Spatial Structures - 2D and 3D/Scripts/SpatialStructuresDemo.cs.meta +12 -0
  849. package/Samples~/Spatial Structures - 2D and 3D/Scripts.meta +9 -0
  850. package/Samples~/Spatial Structures - 2D and 3D.meta +9 -0
  851. package/Samples~/UGUI - EnhancedImage/README.md +13 -0
  852. package/Samples~/UGUI - EnhancedImage/README.md.meta +8 -0
  853. package/Samples~/UGUI - EnhancedImage/Scripts/EnhancedImageDemo.cs +36 -0
  854. package/Samples~/UGUI - EnhancedImage/Scripts/EnhancedImageDemo.cs.meta +12 -0
  855. package/Samples~/UGUI - EnhancedImage/Scripts/Samples.UnityHelpers.UGUI.EnhancedImage.asmdef +17 -0
  856. package/Samples~/UGUI - EnhancedImage/Scripts/Samples.UnityHelpers.UGUI.EnhancedImage.asmdef.meta +8 -0
  857. package/Samples~/UGUI - EnhancedImage/Scripts.meta +9 -0
  858. package/Samples~/UGUI - EnhancedImage.meta +9 -0
  859. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/README.md +13 -0
  860. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/README.md.meta +8 -0
  861. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts/Editor/MultiFileSelectorSampleWindow.cs +45 -0
  862. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts/Editor/MultiFileSelectorSampleWindow.cs.meta +12 -0
  863. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts/Editor/Samples.UnityHelpers.UIToolkit.Editor.asmdef +19 -0
  864. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts/Editor/Samples.UnityHelpers.UIToolkit.Editor.asmdef.meta +8 -0
  865. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts/Editor.meta +9 -0
  866. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts.meta +9 -0
  867. package/Samples~/UI Toolkit - MultiFile Selector (Editor).meta +9 -0
  868. package/Shaders/Materials/BackgroundMask-Material.mat +59 -59
  869. package/Shaders/Materials/BackgroundMask-Material.mat.meta +8 -8
  870. package/Shaders/Materials.meta +8 -8
  871. package/Shaders/ShaderGraph/BackgroundMask.shadergraph +1653 -1653
  872. package/Shaders/ShaderGraph/BackgroundMask.shadergraph.meta +10 -10
  873. package/Shaders/ShaderGraph/DebugDisplayValue.shadersubgraph +835 -835
  874. package/Shaders/ShaderGraph/DebugDisplayValue.shadersubgraph.meta +10 -10
  875. package/Shaders/ShaderGraph.meta +8 -8
  876. package/Shaders/Support/EnhancedImageSupport.shader +64 -0
  877. package/Shaders/Support/EnhancedImageSupport.shader.meta +9 -0
  878. package/Shaders/Support.meta +8 -0
  879. package/Shaders.meta +8 -8
  880. package/Styles/Elements/Progress/ArcedProgressBar.cs +345 -345
  881. package/Styles/Elements/Progress/ArcedProgressBar.cs.meta +2 -2
  882. package/Styles/Elements/Progress/CircularProgressBar.cs +307 -307
  883. package/Styles/Elements/Progress/CircularProgressBar.cs.meta +2 -2
  884. package/Styles/Elements/Progress/GlitchProgressBar.cs +416 -416
  885. package/Styles/Elements/Progress/GlitchProgressBar.cs.meta +2 -2
  886. package/Styles/Elements/Progress/LiquidProgressBar.cs +632 -632
  887. package/Styles/Elements/Progress/LiquidProgressBar.cs.meta +2 -2
  888. package/Styles/Elements/Progress/MarchingAntsProgressBar.cs +722 -722
  889. package/Styles/Elements/Progress/MarchingAntsProgressBar.cs.meta +2 -2
  890. package/Styles/Elements/Progress/RegularProgressBar.cs +405 -405
  891. package/Styles/Elements/Progress/RegularProgressBar.cs.meta +2 -2
  892. package/Styles/Elements/Progress/WigglyProgressBar.cs +837 -837
  893. package/Styles/Elements/Progress/WigglyProgressBar.cs.meta +2 -2
  894. package/Styles/Elements/Progress.meta +2 -2
  895. package/Styles/Elements.meta +2 -2
  896. package/Styles/USS/ArcedProgressBar.uss +18 -18
  897. package/Styles/USS/ArcedProgressBar.uss.meta +2 -2
  898. package/Styles/USS/CirclularProgressBar.uss +17 -17
  899. package/Styles/USS/CirclularProgressBar.uss.meta +2 -2
  900. package/Styles/USS/RegularProgressBar.uss +32 -32
  901. package/Styles/USS/RegularProgressBar.uss.meta +2 -2
  902. package/Styles/USS/WigglyProgressBar.uss +16 -16
  903. package/Styles/USS/WigglyProgressBar.uss.meta +2 -2
  904. package/Styles/USS.meta +2 -2
  905. package/Styles/WallstopStudios.UnityHelpers.Styles.asmdef +14 -17
  906. package/Styles/WallstopStudios.UnityHelpers.Styles.asmdef.meta +7 -7
  907. package/Styles.meta +2 -2
  908. package/THIRD_PARTY_NOTICES.md +74 -0
  909. package/THIRD_PARTY_NOTICES.md.meta +7 -0
  910. package/Tests/Editor/Attributes/AnimationEventHelpersTests.cs +171 -0
  911. package/Tests/Editor/Attributes/AnimationEventHelpersTests.cs.meta +11 -0
  912. package/Tests/Editor/Attributes.meta +8 -0
  913. package/Tests/Editor/Core/Attributes/RelationalComponentAssignerTests.cs +118 -0
  914. package/Tests/Editor/Core/Attributes/RelationalComponentAssignerTests.cs.meta +11 -0
  915. package/Tests/Editor/Core/Attributes.meta +8 -0
  916. package/Tests/Editor/Core.meta +8 -0
  917. package/Tests/Editor/Extensions/SerializedPropertyExtensionsTests.cs +194 -0
  918. package/Tests/Editor/Extensions/SerializedPropertyExtensionsTests.cs.meta +3 -0
  919. package/Tests/Editor/Extensions.meta +3 -0
  920. package/Tests/Editor/Helper/DummyScriptableObject.cs +6 -0
  921. package/Tests/Editor/Helper/DummyScriptableObject.cs.meta +3 -0
  922. package/Tests/Editor/Helper/HelpersTests.cs +101 -0
  923. package/Tests/Editor/Helper/HelpersTests.cs.meta +3 -0
  924. package/Tests/Editor/Helper/ObjectHelpersEditorTests.cs +63 -0
  925. package/Tests/Editor/Helper/ObjectHelpersEditorTests.cs.meta +11 -0
  926. package/Tests/Editor/Helper/PromptScope.cs +28 -0
  927. package/Tests/Editor/Helper/PromptScope.cs.meta +11 -0
  928. package/Tests/Editor/Helper/ReflectionHelpersEditorTests.cs +105 -0
  929. package/Tests/Editor/Helper/ReflectionHelpersEditorTests.cs.meta +11 -0
  930. package/Tests/Editor/Helper/SpriteHelpersTests.cs +334 -0
  931. package/Tests/Editor/Helper/SpriteHelpersTests.cs.meta +3 -0
  932. package/Tests/Editor/Helper/SpriteSettingsApplierAdditionalTests.cs +183 -0
  933. package/Tests/Editor/Helper/SpriteSettingsApplierAdditionalTests.cs.meta +11 -0
  934. package/Tests/Editor/Helper/SpriteSettingsApplierTests.cs +161 -0
  935. package/Tests/Editor/Helper/SpriteSettingsApplierTests.cs.meta +11 -0
  936. package/Tests/Editor/Helper.meta +3 -0
  937. package/Tests/Editor/Integrations/VContainer/VContainerIntegrationCompilationTests.cs +40 -0
  938. package/Tests/Editor/Integrations/VContainer/VContainerIntegrationCompilationTests.cs.meta +11 -0
  939. package/Tests/Editor/Integrations/VContainer/VContainerRelationalEntryPointTests.cs +81 -0
  940. package/Tests/Editor/Integrations/VContainer/VContainerRelationalEntryPointTests.cs.meta +11 -0
  941. package/Tests/Editor/Integrations/VContainer/VContainerRelationalHelpersTests.cs +170 -0
  942. package/Tests/Editor/Integrations/VContainer/VContainerRelationalHelpersTests.cs.meta +11 -0
  943. package/Tests/Editor/Integrations/VContainer/WallstopStudios.UnityHelpers.Tests.Editor.VContainer.asmdef +37 -0
  944. package/Tests/Editor/Integrations/VContainer/WallstopStudios.UnityHelpers.Tests.Editor.VContainer.asmdef.meta +7 -0
  945. package/Tests/Editor/Integrations/VContainer.meta +8 -0
  946. package/Tests/Editor/Integrations/Zenject/WallstopStudios.UnityHelpers.Tests.Editor.Zenject.asmdef +37 -0
  947. package/Tests/Editor/Integrations/Zenject/WallstopStudios.UnityHelpers.Tests.Editor.Zenject.asmdef.meta +7 -0
  948. package/Tests/Editor/Integrations/Zenject/ZenjectIntegrationCompilationTests.cs +40 -0
  949. package/Tests/Editor/Integrations/Zenject/ZenjectIntegrationCompilationTests.cs.meta +11 -0
  950. package/Tests/Editor/Integrations/Zenject/ZenjectRelationalHelpersTests.cs +131 -0
  951. package/Tests/Editor/Integrations/Zenject/ZenjectRelationalHelpersTests.cs.meta +11 -0
  952. package/Tests/Editor/Integrations/Zenject/ZenjectRelationalInitializerTests.cs +80 -0
  953. package/Tests/Editor/Integrations/Zenject/ZenjectRelationalInitializerTests.cs.meta +11 -0
  954. package/Tests/Editor/Integrations/Zenject.meta +8 -0
  955. package/Tests/Editor/Integrations.meta +8 -0
  956. package/Tests/Editor/MultiFileSelectorElementTests.cs +265 -0
  957. package/Tests/Editor/MultiFileSelectorElementTests.cs.meta +11 -0
  958. package/Tests/Editor/MultiFileSelectorPersistenceManagerTests.cs +100 -0
  959. package/Tests/Editor/MultiFileSelectorPersistenceManagerTests.cs.meta +11 -0
  960. package/Tests/Editor/PersistentDirectorySettingsTests.cs +59 -0
  961. package/Tests/Editor/PersistentDirectorySettingsTests.cs.meta +11 -0
  962. package/Tests/Editor/PrefabCheckerReportTests.cs +32 -0
  963. package/Tests/Editor/PrefabCheckerReportTests.cs.meta +11 -0
  964. package/Tests/Editor/Sprites/AnimationCopierFilterTests.cs +64 -0
  965. package/Tests/Editor/Sprites/AnimationCopierFilterTests.cs.meta +11 -0
  966. package/Tests/Editor/Sprites/AnimationCopierWindowTests.cs +199 -0
  967. package/Tests/Editor/Sprites/AnimationCopierWindowTests.cs.meta +11 -0
  968. package/Tests/Editor/Sprites/AnimationViewerWindowTests.cs +38 -0
  969. package/Tests/Editor/Sprites/AnimationViewerWindowTests.cs.meta +11 -0
  970. package/Tests/Editor/Sprites/ScriptableSpriteAtlasEditorTests.cs +108 -0
  971. package/Tests/Editor/Sprites/ScriptableSpriteAtlasEditorTests.cs.meta +11 -0
  972. package/Tests/Editor/Sprites/SpriteCropperAdditionalTests.cs +323 -0
  973. package/Tests/Editor/Sprites/SpriteCropperAdditionalTests.cs.meta +11 -0
  974. package/Tests/Editor/Sprites/SpriteCropperTests.cs +162 -0
  975. package/Tests/Editor/Sprites/SpriteCropperTests.cs.meta +11 -0
  976. package/Tests/Editor/Sprites/SpritePivotAdjusterAdditionalTests.cs +227 -0
  977. package/Tests/Editor/Sprites/SpritePivotAdjusterAdditionalTests.cs.meta +11 -0
  978. package/Tests/Editor/Sprites/SpritePivotAdjusterTests.cs +113 -0
  979. package/Tests/Editor/Sprites/SpritePivotAdjusterTests.cs.meta +11 -0
  980. package/Tests/Editor/Sprites/TexturePlatformNameHelperTests.cs +46 -0
  981. package/Tests/Editor/Sprites/TexturePlatformNameHelperTests.cs.meta +11 -0
  982. package/Tests/Editor/Sprites/TextureResizerWizardTests.cs +248 -0
  983. package/Tests/Editor/Sprites/TextureResizerWizardTests.cs.meta +11 -0
  984. package/Tests/Editor/Sprites/TextureSettingsApplierAPITests.cs +180 -0
  985. package/Tests/Editor/Sprites/TextureSettingsApplierAPITests.cs.meta +11 -0
  986. package/Tests/Editor/Sprites/TextureSettingsApplierWizardAdditionalTests.cs +295 -0
  987. package/Tests/Editor/Sprites/TextureSettingsApplierWizardAdditionalTests.cs.meta +11 -0
  988. package/Tests/Editor/Sprites/TextureSettingsApplierWizardTests.cs +134 -0
  989. package/Tests/Editor/Sprites/TextureSettingsApplierWizardTests.cs.meta +11 -0
  990. package/Tests/Editor/Sprites.meta +8 -0
  991. package/Tests/Editor/TestComponents/PrewarmTesterComponent.cs +10 -0
  992. package/Tests/Editor/TestComponents/PrewarmTesterComponent.cs.meta +11 -0
  993. package/Tests/Editor/TestComponents.meta +8 -0
  994. package/Tests/Editor/Tools/ImageBlurToolTests.cs +47 -0
  995. package/Tests/Editor/Tools/ImageBlurToolTests.cs.meta +11 -0
  996. package/Tests/Editor/Tools.meta +8 -0
  997. package/Tests/Editor/Utils/CommonTestBase.cs +250 -0
  998. package/Tests/Editor/Utils/CommonTestBase.cs.meta +11 -0
  999. package/Tests/Editor/Utils/ScriptableObjectSingletonCreatorEditorTests.cs +306 -0
  1000. package/Tests/Editor/Utils/ScriptableObjectSingletonCreatorEditorTests.cs.meta +9 -0
  1001. package/Tests/Editor/Utils/ScriptableObjectSingletonCreatorTests.cs +183 -0
  1002. package/Tests/Editor/Utils/ScriptableObjectSingletonCreatorTests.cs.meta +11 -0
  1003. package/Tests/Editor/Utils/ScriptableObjectSingletonTests.cs +466 -0
  1004. package/Tests/Editor/Utils/ScriptableObjectSingletonTests.cs.meta +11 -0
  1005. package/Tests/Editor/Utils.meta +3 -0
  1006. package/Tests/Editor/WallstopStudios.UnityHelpers.Tests.Editor.asmdef +19 -0
  1007. package/Tests/Editor/WallstopStudios.UnityHelpers.Tests.Editor.asmdef.meta +7 -0
  1008. package/Tests/Editor/Windows/FitTextureSizeWindowTests.cs +773 -0
  1009. package/Tests/Editor/Windows/FitTextureSizeWindowTests.cs.meta +11 -0
  1010. package/Tests/Editor/Windows/PrefabCheckerFolderAdditionTests.cs +96 -0
  1011. package/Tests/Editor/Windows/PrefabCheckerFolderAdditionTests.cs.meta +11 -0
  1012. package/Tests/Editor/Windows/PrefabCheckerTests.cs +81 -0
  1013. package/Tests/Editor/Windows/PrefabCheckerTests.cs.meta +11 -0
  1014. package/Tests/Editor/Windows.meta +8 -0
  1015. package/Tests/Editor.meta +8 -0
  1016. package/Tests/Runtime/AssemblyInfo.cs +4 -0
  1017. package/Tests/Runtime/AssemblyInfo.cs.meta +3 -0
  1018. package/Tests/Runtime/Attributes/ChildComponentTests.cs +766 -81
  1019. package/Tests/Runtime/Attributes/ChildComponentTests.cs.meta +2 -2
  1020. package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs +28 -28
  1021. package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs.meta +2 -2
  1022. package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs +28 -28
  1023. package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs.meta +2 -2
  1024. package/Tests/Runtime/{Components → Attributes/Components}/RelationalComponentTesterComplex.cs +34 -34
  1025. package/Tests/Runtime/{Components → Attributes/Components}/RelationalComponentTesterComplex.cs.meta +2 -2
  1026. package/Tests/Runtime/Attributes/Components/RelationalComponentsTesterSimple.cs +37 -0
  1027. package/Tests/Runtime/{Components → Attributes/Components}/RelationalComponentsTesterSimple.cs.meta +2 -2
  1028. package/Tests/Runtime/Attributes/Components.meta +2 -2
  1029. package/Tests/Runtime/Attributes/MiscRuntimeAttributeTests.cs +75 -0
  1030. package/Tests/Runtime/Attributes/MiscRuntimeAttributeTests.cs.meta +11 -0
  1031. package/Tests/Runtime/Attributes/NotNullAttributeTests.cs +26 -0
  1032. package/Tests/Runtime/Attributes/NotNullAttributeTests.cs.meta +3 -0
  1033. package/Tests/Runtime/Attributes/ParentComponentTests.cs +565 -68
  1034. package/Tests/Runtime/Attributes/ParentComponentTests.cs.meta +2 -2
  1035. package/Tests/Runtime/Attributes/RelationalComponentAdvancedTests.cs +614 -0
  1036. package/Tests/Runtime/Attributes/RelationalComponentAdvancedTests.cs.meta +11 -0
  1037. package/Tests/Runtime/Attributes/RelationalComponentBackwardCompatibilityTests.cs +478 -0
  1038. package/Tests/Runtime/Attributes/RelationalComponentBackwardCompatibilityTests.cs.meta +11 -0
  1039. package/Tests/Runtime/Attributes/RelationalComponentExtensionsTests.cs +56 -0
  1040. package/Tests/Runtime/Attributes/RelationalComponentExtensionsTests.cs.meta +11 -0
  1041. package/Tests/Runtime/Attributes/RelationalComponentHashSetTests.cs +226 -0
  1042. package/Tests/Runtime/Attributes/RelationalComponentHashSetTests.cs.meta +11 -0
  1043. package/Tests/Runtime/Attributes/RelationalComponentInitializerTests.cs +98 -0
  1044. package/Tests/Runtime/Attributes/RelationalComponentInitializerTests.cs.meta +11 -0
  1045. package/Tests/Runtime/Attributes/RelationalComponentTagAndNameFilterEdgeTests.cs +234 -0
  1046. package/Tests/Runtime/Attributes/RelationalComponentTagAndNameFilterEdgeTests.cs.meta +11 -0
  1047. package/Tests/Runtime/Attributes/SiblingComponentTests.cs +721 -0
  1048. package/Tests/Runtime/Attributes/SiblingComponentTests.cs.meta +11 -0
  1049. package/Tests/Runtime/Attributes/ValidateAssignmentAttributeTests.cs +96 -0
  1050. package/Tests/Runtime/Attributes/ValidateAssignmentAttributeTests.cs.meta +11 -0
  1051. package/Tests/Runtime/Attributes.meta +2 -2
  1052. package/Tests/Runtime/Core/Random/RandomComparerTests.cs +166 -0
  1053. package/Tests/Runtime/Core/Random/RandomComparerTests.cs.meta +11 -0
  1054. package/Tests/Runtime/Core/Random.meta +8 -0
  1055. package/Tests/Runtime/Core/Threading/SingleThreadedThreadPoolTests.cs +56 -56
  1056. package/Tests/Runtime/Core/Threading/SingleThreadedThreadPoolTests.cs.meta +2 -2
  1057. package/Tests/Runtime/Core/Threading.meta +2 -2
  1058. package/Tests/Runtime/Core.meta +2 -2
  1059. package/Tests/Runtime/DataStructures/BalancedKDTree2DTests.cs +562 -0
  1060. package/Tests/Runtime/DataStructures/{BalancedKDTreeTests.cs.meta → BalancedKDTree2DTests.cs.meta} +11 -11
  1061. package/Tests/Runtime/DataStructures/BalancedKDTree3DTests.cs +10 -0
  1062. package/Tests/Runtime/DataStructures/BalancedKDTree3DTests.cs.meta +11 -0
  1063. package/Tests/Runtime/DataStructures/BitSetTests.cs +1400 -0
  1064. package/Tests/Runtime/DataStructures/BitSetTests.cs.meta +3 -0
  1065. package/Tests/Runtime/DataStructures/BoundingBox3DTests.cs +1215 -0
  1066. package/Tests/Runtime/DataStructures/BoundingBox3DTests.cs.meta +11 -0
  1067. package/Tests/Runtime/DataStructures/CircleTests.cs +965 -0
  1068. package/Tests/Runtime/DataStructures/CircleTests.cs.meta +11 -0
  1069. package/Tests/Runtime/DataStructures/CyclicBufferTests.cs +2083 -324
  1070. package/Tests/Runtime/DataStructures/CyclicBufferTests.cs.meta +2 -2
  1071. package/Tests/Runtime/DataStructures/DequeTests.cs +790 -0
  1072. package/Tests/Runtime/DataStructures/DequeTests.cs.meta +3 -0
  1073. package/Tests/Runtime/DataStructures/DisjointSetTests.cs +1114 -0
  1074. package/Tests/Runtime/DataStructures/DisjointSetTests.cs.meta +3 -0
  1075. package/Tests/Runtime/DataStructures/FastOneOfTests.cs +966 -0
  1076. package/Tests/Runtime/DataStructures/FastOneOfTests.cs.meta +11 -0
  1077. package/Tests/Runtime/DataStructures/FastVector2IntTests.cs +286 -0
  1078. package/Tests/Runtime/DataStructures/FastVector2IntTests.cs.meta +11 -0
  1079. package/Tests/Runtime/DataStructures/FastVector3IntTests.cs +414 -0
  1080. package/Tests/Runtime/DataStructures/FastVector3IntTests.cs.meta +11 -0
  1081. package/Tests/Runtime/DataStructures/HeapTests.cs +1953 -0
  1082. package/Tests/Runtime/DataStructures/HeapTests.cs.meta +11 -0
  1083. package/Tests/Runtime/DataStructures/ImmutableBitSetTests.cs +833 -0
  1084. package/Tests/Runtime/DataStructures/ImmutableBitSetTests.cs.meta +3 -0
  1085. package/Tests/Runtime/DataStructures/KDTree3DTestsBase.cs +297 -0
  1086. package/Tests/Runtime/DataStructures/KDTree3DTestsBase.cs.meta +11 -0
  1087. package/Tests/Runtime/DataStructures/OctTree3DTests.cs +351 -0
  1088. package/Tests/Runtime/DataStructures/OctTree3DTests.cs.meta +11 -0
  1089. package/Tests/Runtime/DataStructures/PriorityQueueTests.cs +71 -0
  1090. package/Tests/Runtime/DataStructures/PriorityQueueTests.cs.meta +3 -0
  1091. package/Tests/Runtime/DataStructures/ProtobufSerializationTests.cs +475 -0
  1092. package/Tests/Runtime/DataStructures/ProtobufSerializationTests.cs.meta +11 -0
  1093. package/Tests/Runtime/DataStructures/QuadTree2DTests.cs +660 -0
  1094. package/Tests/Runtime/DataStructures/QuadTree2DTests.cs.meta +11 -0
  1095. package/Tests/Runtime/DataStructures/RTree2DTests.cs +823 -0
  1096. package/Tests/Runtime/DataStructures/RTree2DTests.cs.meta +3 -0
  1097. package/Tests/Runtime/DataStructures/RTree3DTests.cs +270 -0
  1098. package/Tests/Runtime/DataStructures/RTree3DTests.cs.meta +11 -0
  1099. package/Tests/Runtime/DataStructures/SparseSetTests.cs +1146 -0
  1100. package/Tests/Runtime/DataStructures/SparseSetTests.cs.meta +3 -0
  1101. package/Tests/Runtime/DataStructures/SpatialHashTests.cs +992 -0
  1102. package/Tests/Runtime/DataStructures/SpatialHashTests.cs.meta +11 -0
  1103. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsConsistencyTests.cs +351 -0
  1104. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsConsistencyTests.cs.meta +11 -0
  1105. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsEdgeTests.cs +127 -0
  1106. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsEdgeTests.cs.meta +11 -0
  1107. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsFuzzTests.cs +218 -0
  1108. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsFuzzTests.cs.meta +11 -0
  1109. package/Tests/Runtime/DataStructures/SpatialTree2DTests.cs +396 -0
  1110. package/Tests/Runtime/DataStructures/SpatialTree2DTests.cs.meta +11 -0
  1111. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsConsistencyTests.cs +281 -0
  1112. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsConsistencyTests.cs.meta +11 -0
  1113. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsEdgeTests.cs +127 -0
  1114. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsEdgeTests.cs.meta +11 -0
  1115. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsFuzzTests.cs +170 -0
  1116. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsFuzzTests.cs.meta +11 -0
  1117. package/Tests/Runtime/DataStructures/SpatialTree3DTests.cs +474 -0
  1118. package/Tests/Runtime/DataStructures/SpatialTree3DTests.cs.meta +11 -0
  1119. package/Tests/Runtime/DataStructures/SphereTests.cs +806 -0
  1120. package/Tests/Runtime/DataStructures/SphereTests.cs.meta +3 -0
  1121. package/Tests/Runtime/DataStructures/StringWrapperTests.cs +333 -0
  1122. package/Tests/Runtime/DataStructures/StringWrapperTests.cs.meta +11 -0
  1123. package/Tests/Runtime/DataStructures/TimedCacheTests.cs +669 -0
  1124. package/Tests/Runtime/DataStructures/TimedCacheTests.cs.meta +11 -0
  1125. package/Tests/Runtime/DataStructures/TrieTests.cs +3385 -0
  1126. package/Tests/Runtime/DataStructures/TrieTests.cs.meta +11 -0
  1127. package/Tests/Runtime/DataStructures/UnbalancedKDTree2DTests.cs +565 -0
  1128. package/Tests/Runtime/DataStructures/{UnbalancedKDTreeTests.cs.meta → UnbalancedKDTree2DTests.cs.meta} +11 -11
  1129. package/Tests/Runtime/DataStructures/UnbalancedKDTree3DTests.cs +10 -0
  1130. package/Tests/Runtime/DataStructures/UnbalancedKDTree3DTests.cs.meta +11 -0
  1131. package/Tests/Runtime/DataStructures.meta +8 -8
  1132. package/Tests/Runtime/Extensions/AnimatorExtensionsTests.cs +28 -0
  1133. package/Tests/Runtime/Extensions/AnimatorExtensionsTests.cs.meta +11 -0
  1134. package/Tests/Runtime/Extensions/AsyncOperationExtensionsTests.cs +667 -0
  1135. package/Tests/Runtime/Extensions/AsyncOperationExtensionsTests.cs.meta +11 -0
  1136. package/Tests/Runtime/Extensions/CircleExtensionsTests.cs +230 -0
  1137. package/Tests/Runtime/Extensions/CircleExtensionsTests.cs.meta +11 -0
  1138. package/Tests/Runtime/Extensions/ColorExtensionsTests.cs +55 -0
  1139. package/Tests/Runtime/Extensions/ColorExtensionsTests.cs.meta +11 -0
  1140. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs +724 -438
  1141. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs.meta +2 -2
  1142. package/Tests/Runtime/Extensions/DirectionExtensionsComprehensiveTests.cs +403 -0
  1143. package/Tests/Runtime/Extensions/DirectionExtensionsComprehensiveTests.cs.meta +11 -0
  1144. package/Tests/Runtime/Extensions/DirectionExtensionsTests.cs +69 -0
  1145. package/Tests/Runtime/Extensions/DirectionExtensionsTests.cs.meta +11 -0
  1146. package/Tests/Runtime/Extensions/EnumExtensionTests.cs +809 -153
  1147. package/Tests/Runtime/Extensions/EnumExtensionTests.cs.meta +2 -2
  1148. package/Tests/Runtime/Extensions/IEnumerableExtensionsTests.cs +191 -0
  1149. package/Tests/Runtime/Extensions/IEnumerableExtensionsTests.cs.meta +11 -0
  1150. package/Tests/Runtime/Extensions/IListExtensionTests.cs +955 -169
  1151. package/Tests/Runtime/Extensions/IListExtensionTests.cs.meta +2 -2
  1152. package/Tests/Runtime/Extensions/IReadonlyListExtensionTests.cs +266 -58
  1153. package/Tests/Runtime/Extensions/IReadonlyListExtensionTests.cs.meta +2 -2
  1154. package/Tests/Runtime/Extensions/LoggingExtensionTests.cs +721 -718
  1155. package/Tests/Runtime/Extensions/LoggingExtensionTests.cs.meta +2 -2
  1156. package/Tests/Runtime/Extensions/ProtoEqualityExtensionsTests.cs +565 -0
  1157. package/Tests/Runtime/Extensions/ProtoEqualityExtensionsTests.cs.meta +3 -0
  1158. package/Tests/Runtime/Extensions/ProtoEqualityPolymorphismTests.cs +100 -0
  1159. package/Tests/Runtime/Extensions/ProtoEqualityPolymorphismTests.cs.meta +11 -0
  1160. package/Tests/Runtime/Extensions/RandomExtensionTests.cs +719 -27
  1161. package/Tests/Runtime/Extensions/RandomExtensionTests.cs.meta +2 -2
  1162. package/Tests/Runtime/Extensions/StringExtensionTests.cs +2592 -31
  1163. package/Tests/Runtime/Extensions/StringExtensionTests.cs.meta +2 -2
  1164. package/Tests/Runtime/Extensions/UnityExtensionsBasicTests.cs +166 -0
  1165. package/Tests/Runtime/Extensions/UnityExtensionsBasicTests.cs.meta +11 -0
  1166. package/Tests/Runtime/Extensions/UnityExtensionsComprehensiveTests.cs +1446 -0
  1167. package/Tests/Runtime/Extensions/UnityExtensionsComprehensiveTests.cs.meta +11 -0
  1168. package/Tests/Runtime/Extensions/UnityExtensionsMathTests.cs +1779 -0
  1169. package/Tests/Runtime/Extensions/UnityExtensionsMathTests.cs.meta +11 -0
  1170. package/Tests/Runtime/Extensions/UnityExtensionsVector2HullTests.cs +292 -0
  1171. package/Tests/Runtime/Extensions/UnityExtensionsVector2HullTests.cs.meta +11 -0
  1172. package/Tests/Runtime/Extensions/UnityLogTagFormatterEdgeTests.cs +260 -0
  1173. package/Tests/Runtime/Extensions/UnityLogTagFormatterEdgeTests.cs.meta +11 -0
  1174. package/Tests/Runtime/Extensions.meta +2 -2
  1175. package/Tests/Runtime/Helper/ArrayConverterTests.cs +19 -19
  1176. package/Tests/Runtime/Helper/ArrayConverterTests.cs.meta +2 -2
  1177. package/Tests/Runtime/Helper/AssignUtilitiesTests.cs +38 -0
  1178. package/Tests/Runtime/Helper/AssignUtilitiesTests.cs.meta +11 -0
  1179. package/Tests/Runtime/Helper/DirectoryHelperTests.cs +347 -0
  1180. package/Tests/Runtime/Helper/DirectoryHelperTests.cs.meta +11 -0
  1181. package/Tests/Runtime/Helper/EnumerablesTests.cs +45 -0
  1182. package/Tests/Runtime/Helper/EnumerablesTests.cs.meta +11 -0
  1183. package/Tests/Runtime/Helper/FileHelperTests.cs +481 -0
  1184. package/Tests/Runtime/Helper/FileHelperTests.cs.meta +11 -0
  1185. package/Tests/Runtime/Helper/FormattingHelpersTests.cs +353 -0
  1186. package/Tests/Runtime/Helper/FormattingHelpersTests.cs.meta +11 -0
  1187. package/Tests/Runtime/Helper/FuncBasedComparerTests.cs +27 -0
  1188. package/Tests/Runtime/Helper/FuncBasedComparerTests.cs.meta +11 -0
  1189. package/Tests/Runtime/Helper/GeometryTests.cs +517 -0
  1190. package/Tests/Runtime/Helper/GeometryTests.cs.meta +3 -0
  1191. package/Tests/Runtime/Helper/HelpersTests.cs +749 -0
  1192. package/Tests/Runtime/Helper/HelpersTests.cs.meta +11 -0
  1193. package/Tests/Runtime/Helper/IterationHelpersTests.cs +173 -0
  1194. package/Tests/Runtime/Helper/IterationHelpersTests.cs.meta +11 -0
  1195. package/Tests/Runtime/Helper/LineHelperTests.cs +662 -0
  1196. package/Tests/Runtime/Helper/LineHelperTests.cs.meta +11 -0
  1197. package/Tests/Runtime/Helper/ObjectHelperTests.cs +444 -432
  1198. package/Tests/Runtime/Helper/ObjectHelperTests.cs.meta +2 -2
  1199. package/Tests/Runtime/Helper/ObjectsTests.cs +363 -0
  1200. package/Tests/Runtime/Helper/ObjectsTests.cs.meta +3 -0
  1201. package/Tests/Runtime/Helper/PathHelperTests.cs +183 -0
  1202. package/Tests/Runtime/Helper/PathHelperTests.cs.meta +11 -0
  1203. package/Tests/Runtime/Helper/ReflectionHelperTests.cs +2199 -1493
  1204. package/Tests/Runtime/Helper/ReflectionHelperTests.cs.meta +2 -2
  1205. package/Tests/Runtime/Helper/ReflectionHelpersMemberLookupTests.cs +192 -0
  1206. package/Tests/Runtime/Helper/ReflectionHelpersMemberLookupTests.cs.meta +11 -0
  1207. package/Tests/Runtime/Helper/ReflectionHelpersTypeScanningTests.cs +58 -0
  1208. package/Tests/Runtime/Helper/ReflectionHelpersTypeScanningTests.cs.meta +11 -0
  1209. package/Tests/Runtime/Helper/SceneHelperTests.cs +77 -94
  1210. package/Tests/Runtime/Helper/SceneHelperTests.cs.meta +2 -2
  1211. package/Tests/Runtime/Helper/UnityMainThreadDispatcherTests.cs +45 -0
  1212. package/Tests/Runtime/Helper/UnityMainThreadDispatcherTests.cs.meta +11 -0
  1213. package/Tests/Runtime/Helper/WallMathTests.cs +1884 -233
  1214. package/Tests/Runtime/Helper/WallMathTests.cs.meta +2 -2
  1215. package/Tests/Runtime/Helper.meta +2 -2
  1216. package/Tests/Runtime/Integrations/VContainer/RelationalComponentsVContainerTests.cs +601 -0
  1217. package/Tests/Runtime/Integrations/VContainer/RelationalComponentsVContainerTests.cs.meta +11 -0
  1218. package/Tests/Runtime/Integrations/VContainer/RelationalObjectPoolsVContainerTests.cs +86 -0
  1219. package/Tests/Runtime/Integrations/VContainer/RelationalObjectPoolsVContainerTests.cs.meta +11 -0
  1220. package/Tests/Runtime/Integrations/VContainer/WallstopStudios.UnityHelpers.Tests.Runtime.VContainer.asmdef +38 -0
  1221. package/Tests/Runtime/Integrations/VContainer/WallstopStudios.UnityHelpers.Tests.Runtime.VContainer.asmdef.meta +7 -0
  1222. package/Tests/Runtime/Integrations/VContainer.meta +8 -0
  1223. package/Tests/Runtime/Integrations/Zenject/RelationalComponentsZenjectTests.cs +619 -0
  1224. package/Tests/Runtime/Integrations/Zenject/RelationalComponentsZenjectTests.cs.meta +11 -0
  1225. package/Tests/Runtime/Integrations/Zenject/WallstopStudios.UnityHelpers.Tests.Runtime.Zenject.asmdef +38 -0
  1226. package/Tests/Runtime/Integrations/Zenject/WallstopStudios.UnityHelpers.Tests.Runtime.Zenject.asmdef.meta +7 -0
  1227. package/Tests/Runtime/Integrations/Zenject.meta +8 -0
  1228. package/Tests/Runtime/Integrations.meta +8 -0
  1229. package/Tests/Runtime/Math/Line2DTests.cs +594 -0
  1230. package/Tests/Runtime/Math/Line2DTests.cs.meta +11 -0
  1231. package/Tests/Runtime/Math/Line3DTests.cs +655 -0
  1232. package/Tests/Runtime/Math/Line3DTests.cs.meta +11 -0
  1233. package/Tests/Runtime/Math/LineTests.cs +480 -0
  1234. package/Tests/Runtime/Math/LineTests.cs.meta +11 -0
  1235. package/Tests/Runtime/Math/ParabolaTests.cs +477 -0
  1236. package/Tests/Runtime/Math/ParabolaTests.cs.meta +11 -0
  1237. package/Tests/Runtime/Math/PointPolygonCheckTests.cs +939 -0
  1238. package/Tests/Runtime/Math/PointPolygonCheckTests.cs.meta +11 -0
  1239. package/Tests/Runtime/Math/RangeTests.cs +197 -0
  1240. package/Tests/Runtime/Math/RangeTests.cs.meta +11 -0
  1241. package/Tests/Runtime/Math.meta +8 -0
  1242. package/Tests/Runtime/Performance/BenchmarkReadmeUpdater.cs +81 -0
  1243. package/Tests/Runtime/Performance/BenchmarkReadmeUpdater.cs.meta +11 -0
  1244. package/Tests/Runtime/Performance/JsonSerializationPerformanceTests.cs +421 -0
  1245. package/Tests/Runtime/Performance/JsonSerializationPerformanceTests.cs.meta +3 -0
  1246. package/Tests/Runtime/Performance/ListExtensionPerformanceTests.cs +76 -76
  1247. package/Tests/Runtime/Performance/ListExtensionPerformanceTests.cs.meta +2 -2
  1248. package/Tests/Runtime/Performance/ProtoEqualsPerformanceTests.cs +161 -0
  1249. package/Tests/Runtime/Performance/ProtoEqualsPerformanceTests.cs.meta +11 -0
  1250. package/Tests/Runtime/Performance/ProtoSerializationPerformanceTests.cs +207 -0
  1251. package/Tests/Runtime/Performance/ProtoSerializationPerformanceTests.cs.meta +3 -0
  1252. package/Tests/Runtime/Performance/RandomPerformanceTests.cs +195 -181
  1253. package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -11
  1254. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +60 -61
  1255. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +2 -2
  1256. package/Tests/Runtime/Performance/SpatialTree2DPerformanceTests.cs +697 -0
  1257. package/Tests/Runtime/Performance/SpatialTree2DPerformanceTests.cs.meta +11 -0
  1258. package/Tests/Runtime/Performance/SpatialTree3DPerformanceTests.cs +653 -0
  1259. package/Tests/Runtime/Performance/SpatialTree3DPerformanceTests.cs.meta +11 -0
  1260. package/Tests/Runtime/Performance.meta +8 -8
  1261. package/Tests/Runtime/Random/DotNetRandomTests.cs +9 -9
  1262. package/Tests/Runtime/Random/DotNetRandomTests.cs.meta +2 -2
  1263. package/Tests/Runtime/Random/IllusionFlowTests.cs +12 -12
  1264. package/Tests/Runtime/Random/IllusionFlowTests.cs.meta +2 -2
  1265. package/Tests/Runtime/Random/LinearCongruentialGeneratorTests.cs +12 -12
  1266. package/Tests/Runtime/Random/LinearCongruentialGeneratorTests.cs.meta +2 -2
  1267. package/Tests/Runtime/Random/PcgRandomTests.cs +9 -9
  1268. package/Tests/Runtime/Random/PcgRandomTests.cs.meta +11 -11
  1269. package/Tests/Runtime/Random/RandomProtoSerializationTests.cs +494 -0
  1270. package/Tests/Runtime/Random/RandomProtoSerializationTests.cs.meta +3 -0
  1271. package/Tests/Runtime/Random/RandomStateSerializationTests.cs +304 -0
  1272. package/Tests/Runtime/Random/RandomStateSerializationTests.cs.meta +4 -0
  1273. package/Tests/Runtime/Random/RandomTestBase.cs +836 -787
  1274. package/Tests/Runtime/Random/RandomTestBase.cs.meta +11 -11
  1275. package/Tests/Runtime/Random/RomuDuoRandomTests.cs +9 -9
  1276. package/Tests/Runtime/Random/RomuDuoRandomTests.cs.meta +2 -2
  1277. package/Tests/Runtime/Random/SplitMix64RandomTests.cs +9 -9
  1278. package/Tests/Runtime/Random/SplitMix64RandomTests.cs.meta +2 -2
  1279. package/Tests/Runtime/Random/SquirrelRandomTests.cs +14 -14
  1280. package/Tests/Runtime/Random/SquirrelRandomTests.cs.meta +11 -11
  1281. package/Tests/Runtime/Random/SystemRandomTests.cs +10 -10
  1282. package/Tests/Runtime/Random/SystemRandomTests.cs.meta +11 -11
  1283. package/Tests/Runtime/Random/UnityRandomTests.cs +9 -9
  1284. package/Tests/Runtime/Random/UnityRandomTests.cs.meta +11 -11
  1285. package/Tests/Runtime/Random/WyRandomTests.cs +9 -9
  1286. package/Tests/Runtime/Random/WyRandomTests.cs.meta +2 -2
  1287. package/Tests/Runtime/Random/XorShiftRandomTests.cs +9 -9
  1288. package/Tests/Runtime/Random/XorShiftRandomTests.cs.meta +11 -11
  1289. package/Tests/Runtime/Random/XoroShiroRandomTests.cs +9 -9
  1290. package/Tests/Runtime/Random/XoroShiroRandomTests.cs.meta +2 -2
  1291. package/Tests/Runtime/Random.meta +8 -8
  1292. package/Tests/Runtime/RuntimeTestTimeouts.cs +3 -0
  1293. package/Tests/Runtime/RuntimeTestTimeouts.cs.meta +11 -0
  1294. package/Tests/Runtime/Scenes/Test1.unity +723 -723
  1295. package/Tests/Runtime/Scenes/Test1.unity.meta +7 -7
  1296. package/Tests/Runtime/Scenes/Test2.unity +723 -723
  1297. package/Tests/Runtime/Scenes/Test2.unity.meta +7 -7
  1298. package/Tests/Runtime/Scenes.meta +2 -2
  1299. package/Tests/Runtime/Serialization/AdaptersJsonTests.cs +67 -0
  1300. package/Tests/Runtime/Serialization/AdaptersJsonTests.cs.meta +11 -0
  1301. package/Tests/Runtime/Serialization/BitSetJsonTests.cs +50 -0
  1302. package/Tests/Runtime/Serialization/BitSetJsonTests.cs.meta +11 -0
  1303. package/Tests/Runtime/Serialization/CyclicBufferJsonTests.cs +67 -0
  1304. package/Tests/Runtime/Serialization/CyclicBufferJsonTests.cs.meta +11 -0
  1305. package/Tests/Runtime/Serialization/DequeJsonTests.cs +70 -0
  1306. package/Tests/Runtime/Serialization/DequeJsonTests.cs.meta +11 -0
  1307. package/Tests/Runtime/Serialization/ImmutableBitSetJsonTests.cs +25 -0
  1308. package/Tests/Runtime/Serialization/ImmutableBitSetJsonTests.cs.meta +11 -0
  1309. package/Tests/Runtime/Serialization/JsonConverterAdditionalTests.cs +30 -0
  1310. package/Tests/Runtime/Serialization/JsonConverterAdditionalTests.cs.meta +11 -0
  1311. package/Tests/Runtime/Serialization/JsonConverterTests.cs +1153 -0
  1312. package/Tests/Runtime/Serialization/JsonConverterTests.cs.meta +11 -0
  1313. package/Tests/Runtime/Serialization/JsonRoundtripComprehensiveTests.cs +239 -0
  1314. package/Tests/Runtime/Serialization/JsonRoundtripComprehensiveTests.cs.meta +11 -0
  1315. package/Tests/Runtime/Serialization/JsonSerializationCorrectnessTests.cs +458 -0
  1316. package/Tests/Runtime/Serialization/JsonSerializationCorrectnessTests.cs.meta +3 -0
  1317. package/Tests/Runtime/Serialization/JsonSerializationTest.cs +167 -156
  1318. package/Tests/Runtime/Serialization/JsonSerializationTest.cs.meta +2 -2
  1319. package/Tests/Runtime/Serialization/MathJsonTests.cs +79 -0
  1320. package/Tests/Runtime/Serialization/MathJsonTests.cs.meta +11 -0
  1321. package/Tests/Runtime/Serialization/ProtoInterfaceResolutionEdgeTests.cs +76 -0
  1322. package/Tests/Runtime/Serialization/ProtoInterfaceResolutionEdgeTests.cs.meta +11 -0
  1323. package/Tests/Runtime/Serialization/ProtoRootRegistrationTests.cs +80 -0
  1324. package/Tests/Runtime/Serialization/ProtoRootRegistrationTests.cs.meta +11 -0
  1325. package/Tests/Runtime/Serialization/ProtoRoundtripComprehensiveTests.cs +257 -0
  1326. package/Tests/Runtime/Serialization/ProtoRoundtripComprehensiveTests.cs.meta +11 -0
  1327. package/Tests/Runtime/Serialization/ProtoSerializationCorrectnessTests.cs +471 -0
  1328. package/Tests/Runtime/Serialization/ProtoSerializationCorrectnessTests.cs.meta +3 -0
  1329. package/Tests/Runtime/Serialization/ProtoSerializationTests.cs +169 -0
  1330. package/Tests/Runtime/Serialization/ProtoSerializationTests.cs.meta +11 -0
  1331. package/Tests/Runtime/Serialization/ProtoSerializeBehaviorTests.cs +62 -0
  1332. package/Tests/Runtime/Serialization/ProtoSerializeBehaviorTests.cs.meta +11 -0
  1333. package/Tests/Runtime/Serialization/SerializerAdditionalTests.cs +907 -0
  1334. package/Tests/Runtime/Serialization/SerializerAdditionalTests.cs.meta +3 -0
  1335. package/Tests/Runtime/Serialization/SerializerFileIoTests.cs +105 -0
  1336. package/Tests/Runtime/Serialization/SerializerFileIoTests.cs.meta +11 -0
  1337. package/Tests/Runtime/Serialization/TypeConverterTests.cs +34 -0
  1338. package/Tests/Runtime/Serialization/TypeConverterTests.cs.meta +11 -0
  1339. package/Tests/Runtime/Serialization/UnityEngineObjectJsonTests.cs +247 -0
  1340. package/Tests/Runtime/Serialization/UnityEngineObjectJsonTests.cs.meta +11 -0
  1341. package/Tests/Runtime/Serialization.meta +2 -2
  1342. package/Tests/Runtime/Tags/AttributeComponentTests.cs +174 -0
  1343. package/Tests/Runtime/Tags/AttributeComponentTests.cs.meta +3 -0
  1344. package/Tests/Runtime/Tags/AttributeDataTests.cs +312 -0
  1345. package/Tests/Runtime/Tags/AttributeDataTests.cs.meta +11 -0
  1346. package/Tests/Runtime/Tags/AttributeUtilitiesTests.cs +405 -0
  1347. package/Tests/Runtime/Tags/AttributeUtilitiesTests.cs.meta +3 -0
  1348. package/Tests/Runtime/Tags/CosmeticAndCollisionTests.cs +147 -0
  1349. package/Tests/Runtime/Tags/CosmeticAndCollisionTests.cs.meta +11 -0
  1350. package/Tests/Runtime/Tags/CosmeticEffectDataTests.cs +60 -0
  1351. package/Tests/Runtime/Tags/CosmeticEffectDataTests.cs.meta +3 -0
  1352. package/Tests/Runtime/Tags/EffectHandleTests.cs +61 -0
  1353. package/Tests/Runtime/Tags/EffectHandleTests.cs.meta +3 -0
  1354. package/Tests/Runtime/Tags/EffectHandlerTests.cs +270 -0
  1355. package/Tests/Runtime/Tags/EffectHandlerTests.cs.meta +3 -0
  1356. package/Tests/Runtime/Tags/Helpers/RecordingCosmeticComponent.cs +39 -0
  1357. package/Tests/Runtime/Tags/Helpers/RecordingCosmeticComponent.cs.meta +3 -0
  1358. package/Tests/Runtime/Tags/Helpers/TagTestBase.cs +49 -0
  1359. package/Tests/Runtime/Tags/Helpers/TagTestBase.cs.meta +3 -0
  1360. package/Tests/Runtime/Tags/Helpers/TestAttributesComponent.cs +28 -0
  1361. package/Tests/Runtime/Tags/Helpers/TestAttributesComponent.cs.meta +3 -0
  1362. package/Tests/Runtime/Tags/Helpers.meta +3 -0
  1363. package/Tests/Runtime/Tags/TagHandlerTests.cs +108 -0
  1364. package/Tests/Runtime/Tags/TagHandlerTests.cs.meta +3 -0
  1365. package/Tests/Runtime/Tags.meta +8 -0
  1366. package/Tests/Runtime/TestUtils/CommonTestBase.cs +301 -0
  1367. package/Tests/Runtime/TestUtils/CommonTestBase.cs.meta +11 -0
  1368. package/Tests/Runtime/TestUtils/GCAssert.cs +55 -0
  1369. package/Tests/Runtime/TestUtils/GCAssert.cs.meta +11 -0
  1370. package/Tests/Runtime/TestUtils/SpatialAssert.cs +33 -0
  1371. package/Tests/Runtime/TestUtils/SpatialAssert.cs.meta +11 -0
  1372. package/Tests/Runtime/TestUtils/SpatialDiagnostics.cs +195 -0
  1373. package/Tests/Runtime/TestUtils/SpatialDiagnostics.cs.meta +11 -0
  1374. package/Tests/Runtime/TestUtils.meta +8 -0
  1375. package/Tests/Runtime/Utils/AnimationEventEqualityComparerTests.cs +144 -0
  1376. package/Tests/Runtime/Utils/AnimationEventEqualityComparerTests.cs.meta +11 -0
  1377. package/Tests/Runtime/Utils/Ascii85Tests.cs +56 -0
  1378. package/Tests/Runtime/Utils/Ascii85Tests.cs.meta +11 -0
  1379. package/Tests/Runtime/Utils/BuffersTests.cs +1148 -741
  1380. package/Tests/Runtime/Utils/BuffersTests.cs.meta +2 -2
  1381. package/Tests/Runtime/Utils/BuffersWaitInstructionTests.cs +31 -0
  1382. package/Tests/Runtime/Utils/BuffersWaitInstructionTests.cs.meta +11 -0
  1383. package/Tests/Runtime/Utils/CenterPointOffsetTests.cs +67 -0
  1384. package/Tests/Runtime/Utils/CenterPointOffsetTests.cs.meta +11 -0
  1385. package/Tests/Runtime/Utils/ChildSpawnerTests.cs +490 -0
  1386. package/Tests/Runtime/Utils/ChildSpawnerTests.cs.meta +11 -0
  1387. package/Tests/Runtime/Utils/CircleLineRendererTests.cs +80 -0
  1388. package/Tests/Runtime/Utils/CircleLineRendererTests.cs.meta +11 -0
  1389. package/Tests/Runtime/Utils/CollisionProxyTests.cs +442 -0
  1390. package/Tests/Runtime/Utils/CollisionProxyTests.cs.meta +11 -0
  1391. package/Tests/Runtime/Utils/CoroutineHandlerTests.cs +353 -0
  1392. package/Tests/Runtime/Utils/CoroutineHandlerTests.cs.meta +11 -0
  1393. package/Tests/Runtime/Utils/DeferredDisposalResultTests.cs +44 -0
  1394. package/Tests/Runtime/Utils/DeferredDisposalResultTests.cs.meta +11 -0
  1395. package/Tests/Runtime/Utils/LZMAComprehensiveTests.cs +249 -0
  1396. package/Tests/Runtime/Utils/LZMAComprehensiveTests.cs.meta +11 -0
  1397. package/Tests/Runtime/Utils/LZMATests.cs +31 -0
  1398. package/Tests/Runtime/Utils/LZMATests.cs.meta +11 -0
  1399. package/Tests/Runtime/Utils/MatchColliderToSpriteAdditionalTests.cs +86 -0
  1400. package/Tests/Runtime/Utils/MatchColliderToSpriteAdditionalTests.cs.meta +11 -0
  1401. package/Tests/Runtime/Utils/MatchColliderToSpriteTests.cs +503 -0
  1402. package/Tests/Runtime/Utils/MatchColliderToSpriteTests.cs.meta +11 -0
  1403. package/Tests/Runtime/Utils/MatchTransformEdgeTests.cs +34 -0
  1404. package/Tests/Runtime/Utils/MatchTransformEdgeTests.cs.meta +11 -0
  1405. package/Tests/Runtime/Utils/MatchTransformTests.cs +495 -0
  1406. package/Tests/Runtime/Utils/MatchTransformTests.cs.meta +11 -0
  1407. package/Tests/Runtime/Utils/OscillatorTests.cs +540 -0
  1408. package/Tests/Runtime/Utils/OscillatorTests.cs.meta +11 -0
  1409. package/Tests/Runtime/Utils/PolygonCollider2DOptimizerTests.cs +52 -0
  1410. package/Tests/Runtime/Utils/PolygonCollider2DOptimizerTests.cs.meta +11 -0
  1411. package/Tests/Runtime/Utils/RuntimeSingletonTests.cs +766 -0
  1412. package/Tests/Runtime/Utils/RuntimeSingletonTests.cs.meta +11 -0
  1413. package/Tests/Runtime/Utils/SerializedStringComparerEdgeTests.cs +47 -0
  1414. package/Tests/Runtime/Utils/SerializedStringComparerEdgeTests.cs.meta +11 -0
  1415. package/Tests/Runtime/Utils/SerializedStringComparerTests.cs +361 -0
  1416. package/Tests/Runtime/Utils/SerializedStringComparerTests.cs.meta +11 -0
  1417. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs +383 -398
  1418. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs.meta +2 -2
  1419. package/Tests/Runtime/Utils/SpriteRendererSyncTests.cs +134 -0
  1420. package/Tests/Runtime/Utils/SpriteRendererSyncTests.cs.meta +11 -0
  1421. package/Tests/Runtime/Utils/StartTrackerTests.cs +24 -0
  1422. package/Tests/Runtime/Utils/StartTrackerTests.cs.meta +11 -0
  1423. package/Tests/Runtime/Utils/TextureScaleEdgeTests.cs +114 -0
  1424. package/Tests/Runtime/Utils/TextureScaleEdgeTests.cs.meta +11 -0
  1425. package/Tests/Runtime/Utils/TextureScaleTests.cs +298 -0
  1426. package/Tests/Runtime/Utils/TextureScaleTests.cs.meta +3 -0
  1427. package/Tests/Runtime/Utils/TypeNameSorterAdditionalTests.cs +36 -0
  1428. package/Tests/Runtime/Utils/TypeNameSorterAdditionalTests.cs.meta +11 -0
  1429. package/Tests/Runtime/Utils/TypeNameSorterTests.cs +34 -0
  1430. package/Tests/Runtime/Utils/TypeNameSorterTests.cs.meta +11 -0
  1431. package/Tests/Runtime/Utils/UnityObjectNameComparerEdgeTests.cs +63 -0
  1432. package/Tests/Runtime/Utils/UnityObjectNameComparerEdgeTests.cs.meta +11 -0
  1433. package/Tests/Runtime/Utils/UnityObjectNameComparerTests.cs +59 -0
  1434. package/Tests/Runtime/Utils/UnityObjectNameComparerTests.cs.meta +11 -0
  1435. package/Tests/Runtime/Utils.meta +2 -2
  1436. package/Tests/Runtime/Visuals/AnimatedSpriteLayerTests.cs +266 -0
  1437. package/Tests/Runtime/Visuals/AnimatedSpriteLayerTests.cs.meta +11 -0
  1438. package/Tests/Runtime/Visuals/EnhancedImageTests.cs +153 -0
  1439. package/Tests/Runtime/Visuals/EnhancedImageTests.cs.meta +11 -0
  1440. package/Tests/Runtime/Visuals/LayeredImageTests.cs +422 -0
  1441. package/Tests/Runtime/Visuals/LayeredImageTests.cs.meta +11 -0
  1442. package/Tests/Runtime/Visuals/VisualsTestHelpers.cs +125 -0
  1443. package/Tests/Runtime/Visuals/VisualsTestHelpers.cs.meta +11 -0
  1444. package/Tests/Runtime/Visuals.meta +3 -0
  1445. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef +24 -23
  1446. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef.meta +7 -7
  1447. package/Tests/Runtime.meta +8 -8
  1448. package/Tests.meta +8 -8
  1449. package/URP/VolumeProfiles/Post Processing Bloom Profile(URP).asset +63 -63
  1450. package/URP/VolumeProfiles/Post Processing Bloom Profile(URP).asset.meta +8 -8
  1451. package/URP/VolumeProfiles.meta +8 -8
  1452. package/URP.meta +8 -8
  1453. package/node_modules.meta +8 -0
  1454. package/package-lock.json.meta +7 -0
  1455. package/package.json +99 -38
  1456. package/package.json.meta +7 -7
  1457. package/scripts/check-eol.ps1 +51 -0
  1458. package/scripts/check-eol.ps1.meta +7 -0
  1459. package/scripts/clean-nul.ps1 +29 -0
  1460. package/scripts/clean-nul.ps1.meta +7 -0
  1461. package/scripts/lint-doc-links.ps1 +80 -0
  1462. package/scripts/lint-doc-links.ps1.meta +7 -0
  1463. package/scripts/lint-tests.ps1 +156 -0
  1464. package/scripts/lint-tests.ps1.meta +7 -0
  1465. package/scripts/normalize-eol.ps1 +68 -0
  1466. package/scripts/normalize-eol.ps1.meta +7 -0
  1467. package/scripts.meta +8 -0
  1468. package/Editor/Sprites/ProjectAnimationSettings.cs +0 -50
  1469. package/Editor/Sprites/ProjectAnimationSettings.cs.meta +0 -3
  1470. package/Editor/Sprites/TextureSettingsApplier.cs +0 -178
  1471. package/Editor/Sprites/TextureSettingsApplier.cs.meta +0 -3
  1472. package/Runtime/Core/Attributes/ParentComponent.cs +0 -189
  1473. package/Runtime/Core/DataStructure/KDTree.cs +0 -434
  1474. package/Runtime/Core/DataStructure/QuadTree.cs +0 -431
  1475. package/Runtime/Core/DataStructure/RTree.cs +0 -356
  1476. package/Runtime/Core/Extension/HashSetExtensions.cs +0 -12
  1477. package/Runtime/Core/Extension/HashSetExtensions.cs.meta +0 -11
  1478. package/Runtime/Core/Math/Line.cs +0 -55
  1479. package/Runtime/Core/Math/Line.cs.meta +0 -11
  1480. package/Runtime/Core/Math/XXHash.cs +0 -310
  1481. package/Runtime/Core/Math/XXHash.cs.meta +0 -11
  1482. package/Tests/Runtime/Components/RelationalComponentsTesterSimple.cs +0 -40
  1483. package/Tests/Runtime/Components.meta +0 -3
  1484. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs +0 -14
  1485. package/Tests/Runtime/DataStructures/QuadTreeTests.cs +0 -14
  1486. package/Tests/Runtime/DataStructures/QuadTreeTests.cs.meta +0 -11
  1487. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs +0 -130
  1488. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs.meta +0 -11
  1489. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs +0 -14
  1490. package/Tests/Runtime/Helper/FormattingHelperTests.cs +0 -129
  1491. package/Tests/Runtime/Helper/FormattingHelperTests.cs.meta +0 -3
  1492. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs +0 -14
  1493. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs.meta +0 -11
  1494. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs +0 -14
  1495. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs.meta +0 -11
  1496. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs +0 -158
  1497. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs.meta +0 -11
  1498. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs +0 -14
  1499. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs.meta +0 -11
  1500. package/Third Party Notices.md +0 -1
package/README.md CHANGED
@@ -1,188 +1,1183 @@
1
- # A Grab-Bag
2
- Various Unity Helpers. Includes many deterministic, seedable random number generators.
3
-
4
- # CI/CD Status
5
- ![Npm Publish](https://github.com/wallstop/unity-helpers/actions/workflows/npm-publish.yml/badge.svg)
6
-
7
- # Compatibility
8
- | Platform | Compatible |
9
- | --- | --- |
10
- | Unity 2021 | Likely, but untested |
11
- | Unity 2022 | ✓ |
12
- | Unity 2023 | ✓ |
13
- | Unity 6 | ✓ |
14
- | URP | ✓ |
15
- | HDRP | ✓ |
16
-
17
- # Installation
18
-
19
- ## To Install as Unity Package
20
- 1. Open Unity Package Manager
21
- 2. (Optional) Enable Pre-release packages to get the latest, cutting-edge builds
22
- 3. Open the Advanced Package Settings
23
- 4. Add an entry for a new "Scoped Registry"
24
- - Name: `NPM`
25
- - URL: `https://registry.npmjs.org`
26
- - Scope(s): `com.wallstop-studios.unity-helpers`
27
- 5. Resolve the latest `com.wallstop-studios.unity-helpers`
28
-
29
- ## From Source
30
- Grab a copy of this repo (either `git clone` or [download a zip of the source](https://github.com/wallstop/unity-helpers/archive/refs/heads/main.zip)) and copy the contents to your project's `Assets` folder.
31
-
32
- ## From Releases
33
- Check out the latest [Releases](https://github.com/wallstop/unity-helpers/releases) to grab the Unity Package and import to your project.
34
-
35
- # Package Contents
36
- - Random Number Generators
37
- - Spatial Trees
38
- - Protobuf, Binary, and JSON formatting
39
- - A resizable CyclicBuffer
40
- - Simple single-threaded thread pool
41
- - A LayeredImage for use with Unity's UI Toolkit
42
- - Geometry Helpers
43
- - Child/Parent/Sibling Attributes to automatically get components
44
- - ReadOnly attribute to disable editing of serialized properties in the inspector
45
- - An extensive collection of helpers
46
- - Simple math functions including a generic Range
47
- - Common buffers to reduce allocations
48
- - A RuntimeSingleton implementation for automatic creation/accessing of singletons
49
- - String helpers, like converting to PascalCase, like Unity does for variable names in the inspector
50
- - A randomizable PerlinNoise implementation
51
- - And more!
52
-
53
- # Auto Get(Parent/Sibling/Child)Component
54
- Are you tired of constantly writing GetComponent<T>() all over the place? Waste time no more!
55
-
56
- ```csharp
57
- public sealed class MyCoolScript : MonoBehaviour
58
- {
59
- [SiblingComponent] // If it doesn't exist, will log an error
60
- private SpriteRenderer _spriteRenderer;
61
-
62
- [SiblingComponent(optional = true)] // Ok if it doesn't exist, no errors logged
63
- private BoxCollider2D _boxCollider;
64
-
65
- [ParentComponent] // Similar to GetComponentInParent<AIController>(includeInactive: true)
66
- private AIController _parentAIController;
67
-
68
- // Only include components in parents, Unity by default includes sibling components in the GetComponentsInParent call
69
- [ParentComponent(onlyAncestors = true)]
70
- private Transform [] _allParentTransforms; // Works with arrays!
71
-
72
- [ParentComponent(includeInactive = false)] // Don't include inactive components
73
- private List<PolygonCollider2> _parentColliders; // Works with lists!
74
-
75
- [ChildComponent(onlyDescendents = true)] // Similar to GetComponentInChildren<EdgeCollider2D>(includeInactive: true)
76
- private EdgeCollider2D _childEdgeCollider;
77
-
78
- private void Awake()
79
- {
80
- /*
81
- Make sure this is called somewhere, usually in Awake, OnEnable, or Start - wherever this is called,
82
- values will be injected into the annotated fields and errors will be logged
83
- */
84
- this.AssignRelationalComponents();
85
- }
86
- }
87
-
88
- ```
89
-
90
- # Random Number Generators
91
- This package implements several high quality, seedable, and serializable random number generators. The best one (currently) is the PCG Random. This has been hidden behind the `PRNG.Instance` class, which is thread-safe. As the package evolves, the exact implementation of this may change.
92
-
93
- All of these implement a custom [IRandom](./Runtime/Core/Random/IRandom.cs) interface with a significantly richer suite of methods than the standard .Net and Unity randoms offer.
94
-
95
- To use:
96
-
97
- ```csharp
98
- IRandom random = PRNG.Instance;
99
-
100
- random.NextFloat(); // Something between 0.0f and 1.0f
101
- random.NextDouble(); // Something between 0.0d and 1.0d
102
- random.Next(); // Something between 0 and int.MaxValue
103
- random.NextUint(); // Something between 0 and uint.MaxValue
104
-
105
- int [] values = {1, 2, 3};
106
- random.NextOf(values); // 1, 2, or 3
107
- random.NextOf(Enumerable.Range(0, 3)); // 1, 2, or 3
108
- HashSet<int> setValues = new() {1, 2, 3};
109
- random.NextOf(setValues); // 1, 2, or 3
110
-
111
- random.NextGuid(); // A valid UUIDv4
112
- random.NextGaussian(); // A value sampled from a gaussian curve around mean=0, stdDev=1 (configurable via parameters)
113
- random.NextEnum<T>(); // A randomly selected enum of type T
114
-
115
- int width = 100;
116
- int height = 100;
117
- random.NextNoiseMap(width, height); // A configurable noise map generated using random octave offsets
118
- ```
119
-
120
- ## Implemented Random Number Generators
121
- - PCG
122
- - DotNet (uses the currently implemented .Net Random)
123
- - RomoDuo
124
- - SplitMix64
125
- - Squirrel
126
- - System (uses a port of the Windows .Net Random)
127
- - Unity (uses Unity's random under the hood)
128
- - Wy
129
- - XorShift
130
- - XorShiro
131
-
132
- ## Performance (Number of Operations / Second)
133
-
134
- | Random | NextBool | Next | NextUInt | NextFloat | NextDouble | NextUint - Range | NextInt - Range |
135
- | ------ | -------- | ---- | -------- | --------- | ---------- | ---------------- | --------------- |
136
- | DotNetRandom | 29,600,000 | 29,600,000 | 31,400,000 | 25,100,000 | 25,600,000 |19,200,000 |18,300,000 |
137
- | LinearCongruentialGenerator | 170,500,000 | 170,600,000 | 242,100,000 | 88,600,000 | 89,100,000 |42,400,000 |39,200,000 |
138
- | IllusionFlow | 143,600,000 | 143,400,000 | 190,600,000 | 80,600,000 | 81,100,000 |40,200,000 |37,100,000 |
139
- | PcgRandom | 160,200,000 | 161,900,000 | 224,000,000 | 85,900,000 | 86,600,000 |41,900,000 |38,100,000 |
140
- | RomuDuo | 128,400,000 | 128,400,000 | 166,100,000 | 76,000,000 | 76,300,000 |39,200,000 |35,600,000 |
141
- | SplitMix64 | 156,700,000 | 157,100,000 | 214,500,000 | 84,900,000 | 84,700,000 |41,600,000 |38,200,000 |
142
- | SquirrelRandom | 123,200,000 | 123,200,000 | 156,800,000 | 73,800,000 | 74,300,000 |38,700,000 |35,400,000 |
143
- | SystemRandom | 74,800,000 | 85,800,000 | 36,000,000 | 67,400,000 | 67,000,000 |37,300,000 |34,200,000 |
144
- | UnityRandom | 50,400,000 | 49,400,000 | 55,500,000 | 38,400,000 | 39,500,000 |26,400,000 |24,900,000 |
145
- | WyRandom | 74,200,000 | 74,900,000 | 84,800,000 | 52,100,000 | 53,100,000 |32,000,000 |29,400,000 |
146
- | XorShiftRandom | 171,800,000 | 172,200,000 | 245,700,000 | 90,000,000 | 89,900,000 |42,400,000 |38,900,000 |
147
- | XoroShiroRandom | 98,700,000 | 98,600,000 | 118,500,000 | 64,200,000 | 64,900,000 |35,100,000 |33,200,000 |
148
-
149
- # Spatial Trees
150
- There are three implemented 2D immutable spatial trees that can store generic objects, as long as there is some resolution function that can convert them into Vector2 spatial positions.
151
-
152
- - QuadTree (easiest to use)
153
- - KDTree
154
- - RTree
155
-
156
- Spatial trees, after construction, allow for O(log(n)) spatial query time instead of O(n). They are extremely useful if you need repeated spatial queries, or if you have relatively static spatial data.
157
-
158
- ## Usage
159
-
160
- ```csharp
161
- GameObject [] spatialStorage = { myCoolGameObject };
162
- QuadTree<GameObject> quadTree = new(spatialStorage, go => go.transform.position);
163
-
164
- // Might return your object, might not
165
- GameObject [] inBounds = quadTree.GetElementsInBounds(new Bounds(0, 0, 100, 100));
166
-
167
- // Uses a "good-enough" nearest-neighbor approximately for cheap neighbors
168
- List<GameObject> nearestNeighbors = new();
169
- quadTree.GetApproximateNearestNeighbors(myCoolGameObject.transform.position, 1, nearestNeighbors);
170
- Assert.AreEqual(1, nearestNeighbors.Count);
171
- Assert.AreEqual(myCoolGameObject, nearestNeighbors[0]);
172
- ```
173
-
174
- ## Note
175
- All spatial trees expect the positional data to be *immutable*. It is very important that the positions do not change. If they do, you will need to reconstruct the tree.
176
-
177
- ## Shaders
178
-
179
- | Name | Description |
180
- | ---- | ----------- |
181
- | BackgroundMask | Used to simulate a `blur` effect for arbitrary shapes. You will need a reference image, as well as a blurred copy using either a photo editing application or the provided `Image Blur` tool. |
182
- | DebugDisplayValue | Displays numerical values on top of a texture. Useful to visually track texture instances. |
183
-
184
- ## Contributing
185
-
186
- This project uses [CSharpier](https://csharpier.com/) with the default configuration to enable an enforced, consistent style. If you would like to contribute, recommendation is to ensure that changed files are ran through CSharpier prior to merge. This can be done automatically through editor plugins, or, minimally, by installing a [pre-commit hook](https://pre-commit.com/#3-install-the-git-hook-scripts).
187
-
188
- If you think there is something useful that you would like to see, please open an issue or contact me directly.
1
+ # Unity Helpers
2
+
3
+ [![Unity 2021.3+](https://img.shields.io/badge/Unity-2021.3%2B-000000?logo=unity&logoColor=white)](https://unity.com/releases/2021-lts)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
5
+ [![CSharpier](https://github.com/wallstop/unity-helpers/actions/workflows/csharpier-autofix.yml/badge.svg?branch=main)](https://github.com/wallstop/unity-helpers/actions/workflows/csharpier-autofix.yml)
6
+ [![Markdown & JSON Lint/Format](https://github.com/wallstop/unity-helpers/actions/workflows/markdown-json.yml/badge.svg?branch=main)](https://github.com/wallstop/unity-helpers/actions/workflows/markdown-json.yml)
7
+ [![Lint Docs Links](https://github.com/wallstop/unity-helpers/actions/workflows/lint-doc-links.yml/badge.svg?branch=main)](https://github.com/wallstop/unity-helpers/actions/workflows/lint-doc-links.yml)
8
+ [![Npm Publish](https://github.com/wallstop/unity-helpers/actions/workflows/npm-publish.yml/badge.svg?branch=main)](https://github.com/wallstop/unity-helpers/actions/workflows/npm-publish.yml)
9
+
10
+ **Stop writing boilerplate. Start shipping features.**
11
+
12
+ Unity Helpers eliminates entire categories of repetitive work with production-ready utilities that are 10-100x faster than writing it yourself. From auto-wiring components to blazing-fast spatial queries, this is the toolkit that pays for itself in the first hour.
13
+
14
+ **What makes this different:**
15
+
16
+ - ⚡ **10-15x faster** random generation than Unity.Random
17
+ - 🔌 **Zero boilerplate** component wiring with attributes
18
+ - 🎮 **Designer-friendly** effects system (buffs/debuffs as ScriptableObjects)
19
+ - 🌳 **O(log n)** spatial queries instead of O(n) loops
20
+ - 🛠️ **20+ editor tools** that automate sprite/animation workflows
21
+ - **4,000+ tests** ensuring production quality
22
+
23
+ ---
24
+
25
+ **📚 New to Unity Helpers?** Start here: [Getting Started Guide](GETTING_STARTED.md)
26
+
27
+ **🔍 Looking for something specific?** Check the [Feature Index](INDEX.md)
28
+
29
+ **❓ Need a definition?** See the [Glossary](GLOSSARY.md)
30
+
31
+ ---
32
+
33
+ ## 👋 First Time Here?
34
+
35
+ **Pick your starting point based on your biggest pain point:**
36
+
37
+ | Your Problem | Your Solution | Time to Value |
38
+ | ------------------------------------ | ---------------------------------------------------------------------------------------- | ------------- |
39
+ | 🐌 Writing `GetComponent` everywhere | [**Relational Components**](#relational-components) - Auto-wire with attributes | 2 minutes |
40
+ | 🎮 Need buffs/debuffs system | [**Effects System**](#effects-attributes-and-tags) - Designer-friendly ScriptableObjects | 5 minutes |
41
+ | 🔍 Slow spatial searches | [**Spatial Trees**](#spatial-trees) - O(log n) queries | 5 minutes |
42
+ | 🎲 Random is too slow/limited | [**PRNG.Instance**](#random-number-generators) - 10-15x faster, extensive API | 1 minute |
43
+ | 💾 Need save/load system | [**Serialization**](#serialization) - Unity types just work | 10 minutes |
44
+ | 🛠️ Manual sprite workflows | [**Editor Tools**](#editor-tools) - 20+ automation tools | 3 minutes |
45
+
46
+ **Not sure where to start?** [Getting Started Guide](GETTING_STARTED.md) walks through the top 3 features in 5 minutes.
47
+
48
+ ---
49
+
50
+ ## Top 5 Time-Savers
51
+
52
+ These features eliminate entire categories of repetitive work. Pick one that solves your immediate pain:
53
+
54
+ ### 1. 🔌 Auto-Wire Components
55
+
56
+ #### ⏱️ 10-20 min/script × 100 scripts = 20+ hours saved
57
+
58
+ Stop writing GetComponent boilerplate forever. Replace 20+ lines with 3 attributes:
59
+
60
+ ```csharp
61
+ // ❌ OLD WAY: 20+ lines per script
62
+ void Awake() {
63
+ sprite = GetComponent<SpriteRenderer>();
64
+ if (sprite == null) Debug.LogError("Missing SpriteRenderer!");
65
+
66
+ rigidbody = GetComponentInParent<Rigidbody2D>();
67
+ if (rigidbody == null) Debug.LogError("Missing Rigidbody2D!");
68
+
69
+ colliders = GetComponentsInChildren<Collider2D>();
70
+ // 15 more lines...
71
+ }
72
+
73
+ // NEW WAY: 4 lines total
74
+ [SiblingComponent] private SpriteRenderer sprite;
75
+ [ParentComponent] private Rigidbody2D rigidbody;
76
+ [ChildComponent] private Collider2D[] colliders;
77
+ void Awake() => this.AssignRelationalComponents();
78
+ ```
79
+
80
+ **Bonus:** Works with VContainer/Zenject for automatic DI + relational wiring!
81
+
82
+ [📖 Learn More](RELATIONAL_COMPONENTS.md) | [🎯 DI Integration](Samples~/DI%20-%20VContainer/README.md)
83
+
84
+ ---
85
+
86
+ ### 2. 🎮 Data-Driven Effects
87
+
88
+ #### ⏱️ 2-4 hours/effect × 50 effects = 150+ hours saved
89
+
90
+ Designers create buffs/debuffs as ScriptableObjects. Zero programmer time after 20-minute setup:
91
+
92
+ ```csharp
93
+ // Create once (ScriptableObject in editor):
94
+ // - HasteEffect: Speed × 1.5, duration 5s, tag "Haste", particle effect
95
+
96
+ // Use everywhere (zero boilerplate):
97
+ player.ApplyEffect(hasteEffect); // Apply buff
98
+ if (player.HasTag("Stunned")) return; // Query state
99
+ player.RemoveAllEffectsWithTag("Haste"); // Batch removal
100
+ ```
101
+
102
+ **What you get:**
103
+
104
+ - Automatic stacking & duration management
105
+ - Reference-counted tags for gameplay queries
106
+ - Cosmetic VFX/SFX that spawn/despawn automatically
107
+ - Designer-friendly iteration without code changes
108
+
109
+ [📖 Full Guide](EFFECTS_SYSTEM.md) | [🚀 5-Minute Tutorial](EFFECTS_SYSTEM_TUTORIAL.md)
110
+
111
+ ---
112
+
113
+ ### 3. 💾 Unity-Aware Serialization
114
+
115
+ #### ⏱️ 40+ hours on initial implementation + prevents player data loss
116
+
117
+ JSON/Protobuf that understands `Vector3`, `GameObject`, `Color` - no custom converters needed:
118
+
119
+ ```csharp
120
+ // Vector3, Color, GameObject references just work:
121
+ var saveData = new SaveData {
122
+ playerPosition = new Vector3(1, 2, 3),
123
+ playerColor = Color.cyan,
124
+ inventory = new List<GameObject>()
125
+ };
126
+
127
+ // One line to save:
128
+ byte[] data = Serializer.JsonSerialize(saveData);
129
+
130
+ // Schema evolution = never break old saves:
131
+ [ProtoMember(1)] public int gold;
132
+ [ProtoMember(2)] public Vector3 position;
133
+ // Adding new field? Old saves still load!
134
+ [ProtoMember(3)] public int level; // Safe to add
135
+ ```
136
+
137
+ **Real-world impact:** Ship updates without worrying about corrupting player saves.
138
+
139
+ [📖 Serialization Guide](SERIALIZATION.md)
140
+
141
+ ---
142
+
143
+ ### 4. 🎱 Professional Pooling
144
+
145
+ #### ⏱️ Eliminates GC spikes = 5-10 FPS in complex scenes
146
+
147
+ Zero-allocation queries with automatic cleanup. Thread-safe pooling in one line:
148
+
149
+ ```csharp
150
+ // Get pooled buffer - automatically returned on scope exit
151
+ void ProcessEnemies(QuadTree2D<Enemy> enemyTree) {
152
+ using var lease = Buffers<Enemy>.List.Get(out List<Enemy> buffer);
153
+
154
+ // Use it for spatial query - zero allocations!
155
+ enemyTree.GetElementsInRange(playerPos, 10f, buffer);
156
+
157
+ foreach (Enemy enemy in buffer) {
158
+ enemy.TakeDamage(5f);
159
+ }
160
+
161
+ // Buffer automatically returned to pool here - no cleanup needed
162
+ }
163
+ ```
164
+
165
+ **Why this matters:**
166
+
167
+ - Stable 60 FPS under load (no GC spikes)
168
+ - AI systems querying hundreds of neighbors per frame
169
+ - Particle systems with thousands of particles
170
+ - Works for List, HashSet, Stack, Queue, and Arrays
171
+
172
+ [📖 Buffering Pattern](#buffering-pattern)
173
+
174
+ ---
175
+
176
+ ### 5. 🛠️ Editor Tools Suite
177
+
178
+ #### ⏱️ 1-2 hours/operation × weekly use = 100+ hours/year
179
+
180
+ 20+ tools that automate sprite cropping, animation creation, atlas generation, prefab validation:
181
+
182
+ **Common workflows:**
183
+
184
+ - **Sprite Cropper**: Add or remove transparent pixels from 500 sprites → 1 click (was: 30 minutes in Photoshop)
185
+ - **Animation Creator**: Bulk-create clips from naming patterns (`walk_0001.png`) → 1 minute (was: 20 minutes)
186
+ - **Prefab Checker**: Validate 200 prefabs for missing references 1 click (was: manual QA)
187
+ - **Atlas Generator**: Create sprite atlases from regex/labels → automated (was: manual setup)
188
+
189
+ [📖 Editor Tools Guide](EDITOR_TOOLS_GUIDE.md)
190
+
191
+ ---
192
+
193
+ ## 🎁 Batteries-Included Extensions
194
+
195
+ **Stop Googling "Unity how to..." for the 100th time.**
196
+
197
+ Unity Helpers includes 200+ extension methods that handle the tedious stuff you're tired of writing:
198
+
199
+ ### Hierarchy Traversal (Optimized)
200
+
201
+ ```csharp
202
+ // Get all ancestors without allocating
203
+ transform.GetAncestors(buffer); // 10x faster than recursive GetComponentInParent loops
204
+
205
+ // Find specific ancestor
206
+ Canvas canvas = transform.GetAncestor<Canvas>(); // Stops at first match
207
+
208
+ // Breadth-first child search with depth control
209
+ transform.GetDescendants(buffer, maxDepth: 2); // Avoid traversing entire tree
210
+ ```
211
+
212
+ **Why this matters:** The naive way allocates arrays on every call. These methods use buffering and early-exit for hot paths.
213
+
214
+ ### Unity Type Extensions
215
+
216
+ ```csharp
217
+ // Color averaging (4 methods: LAB, HSV, Weighted, Dominant)
218
+ Color teamColor = sprite.GetAverageColor(ColorAveragingMethod.LAB); // Perceptually accurate
219
+
220
+ // Collider auto-fitting
221
+ polygonCollider.UpdateShapeToSprite(); // Instant sprite → collider sync
222
+
223
+ // Smooth rotation in one line
224
+ transform.rotation = transform.GetAngleWithSpeed(target, rotationSpeed, Time.deltaTime);
225
+
226
+ // Safe destruction (works in editor AND runtime)
227
+ gameObject.SmartDestroy(); // No more #if UNITY_EDITOR everywhere
228
+
229
+ // Camera world bounds
230
+ Bounds visibleArea = Camera.main.OrthographicBounds(); // Perfect for culling/spawning
231
+
232
+ // Predictive targeting (intercept moving targets)
233
+ if (Ballistics.TryGetInterceptVelocity(shooter, target, projectileSpeed, out Vector3 velocity)) {
234
+ Instantiate(projectile, shooter, Quaternion.LookRotation(velocity));
235
+ }
236
+ ```
237
+
238
+ ### Math That Should Be Built-In
239
+
240
+ ```csharp
241
+ // Positive modulo (no more negative results!)
242
+ int index = (-1).PositiveMod(array.Length); // 4, not -1
243
+
244
+ // Wrapped add for ring buffers
245
+ index = index.WrappedAdd(2, capacity); // Handles overflow correctly
246
+
247
+ // Approximate equality with tolerance
248
+ if (transform.position.x.Approximately(target.x, 0.01f)) { /* close enough */ }
249
+
250
+ // Polyline simplification (Douglas–Peucker)
251
+ List<Vector2> simplified = LineHelper.Simplify(path, epsilon: 0.5f); // Reduce pathfinding waypoints
252
+ ```
253
+
254
+ ### Collection Utilities
255
+
256
+ ```csharp
257
+ // Infinite iterator (no extra allocation)
258
+ foreach (var item in itemList.Infinite()) { /* cycles forever */ }
259
+
260
+ // Aggregate bounds from multiple renderers
261
+ Bounds? combined = renderers.Select(r => r.bounds).GetBounds();
262
+
263
+ // String similarity for fuzzy search
264
+ int distance = playerName.LevenshteinDistance("jon"); // "john" = 1, close match!
265
+
266
+ // Case conversions (6 styles: Pascal, Camel, Snake, Kebab, Title, Constant)
267
+ string apiKey = "user_name".ToPascalCase(); // "UserName"
268
+ ```
269
+
270
+ **Full list:** [Math & Extensions Guide](MATH_AND_EXTENSIONS.md) | [Reflection Helpers](REFLECTION_HELPERS.md)
271
+
272
+ ---
273
+
274
+ ## 💎 Hidden Gems Worth Discovering
275
+
276
+ These powerful utilities solve specific problems that waste hours if you implement them yourself:
277
+
278
+ | Feature | What It Does | Time Saved |
279
+ | -------------------------------------------------------------------- | ----------------------------------------------------- | ---------------------------------- |
280
+ | **[Predictive Targeting](MATH_AND_EXTENSIONS.md#predictive-target)** | Perfect ballistics for turrets/missiles in one call | 2-3 hours per shooting system |
281
+ | **[Coroutine Jitter](MATH_AND_EXTENSIONS.md#unity-extensions)** | Prevents 100 enemies polling on same frame | Eliminates frame spikes |
282
+ | **[IL-Emitted Reflection](REFLECTION_HELPERS.md)** | 100x faster than System.Reflection, IL2CPP safe | Critical for serialization/modding |
283
+ | **[SmartDestroy()](MATH_AND_EXTENSIONS.md#lifecycle-helpers)** | Editor/runtime safe destruction (no scene corruption) | Prevents countless debugging hours |
284
+ | **[Convex/Concave Hulls](HULLS.md)** | Generate territory borders from point clouds | 4-6 hours per hull algorithm |
285
+
286
+ ---
287
+
288
+ ## Why Teams Choose Unity Helpers
289
+
290
+ **The Reality:** You're spending 30-40% of your time writing the same GetComponent boilerplate, spatial query loops, and save/load plumbing over and over. Unity Helpers gives you that time back.
291
+
292
+ **Built for Real Projects:**
293
+
294
+ - ✅ **Production-tested** in shipped commercial games
295
+ - ✅ **4,000+ automated tests** catch edge cases before you hit them
296
+ - ✅ **Zero dependencies** - drop it in any project
297
+ - ✅ **IL2CPP/WebGL ready** with optimized SINGLE_THREADED paths
298
+ - ✅ **MIT Licensed** - use freely in commercial projects
299
+
300
+ **Who This Is For:**
301
+
302
+ - **Indie devs** who need professional tools without enterprise overhead
303
+ - **Teams** who value performance and want their junior devs to use battle-tested code
304
+ - **Senior engineers** who are tired of re-implementing the same utilities every project
305
+
306
+ ---
307
+
308
+ ## Installation
309
+
310
+ ### As Unity Package (Recommended)
311
+
312
+ 1. Open Unity Package Manager
313
+ 2. _(Optional)_ Enable **Pre-release packages** for cutting-edge builds
314
+ 3. Click the **+** dropdown → **Add package from git URL...**
315
+ 4. Enter: `https://github.com/wallstop/unity-helpers.git`
316
+
317
+ **OR** add to your `manifest.json`:
318
+
319
+ ```json
320
+ {
321
+ "dependencies": {
322
+ "com.wallstop-studios.unity-helpers": "https://github.com/wallstop/unity-helpers.git"
323
+ }
324
+ }
325
+ ```
326
+
327
+ ### From NPM Registry
328
+
329
+ 1. Open Unity Package Manager
330
+ 2. _(Optional)_ Enable **Pre-release packages**
331
+ 3. Open **Advanced Package Settings** (gear icon)
332
+ 4. Add a new **Scoped Registry**:
333
+ - **Name**: `NPM`
334
+ - **URL**: `https://registry.npmjs.org`
335
+ - **Scope(s)**: `com.wallstop-studios.unity-helpers`
336
+ 5. Search for and install `com.wallstop-studios.unity-helpers`
337
+
338
+ ### From Source
339
+
340
+ 1. [Download the latest release](https://github.com/wallstop/unity-helpers/releases) or clone this repository
341
+ 2. Copy the contents to your project's `Assets` folder
342
+ 3. Unity will automatically import the package
343
+
344
+ ---
345
+
346
+ ## Compatibility
347
+
348
+ | Unity Version | Built-In | URP | HDRP |
349
+ | ------------- | -------------------- | -------------------- | -------------------- |
350
+ | 2021 | Likely, but untested | Likely, but untested | Likely, but untested |
351
+ | 2022 | ✅ Compatible | ✅ Compatible | ✅ Compatible |
352
+ | 2023 | ✅ Compatible | ✅ Compatible | ✅ Compatible |
353
+ | Unity 6 | ✅ Compatible | ✅ Compatible | ✅ Compatible |
354
+
355
+ ### Platform Support
356
+
357
+ Unity Helpers is **fully multiplatform compatible** including:
358
+
359
+ - ✅ **WebGL** - Full support with optimized SINGLE_THREADED hot paths
360
+ - ✅ **IL2CPP** - Tested and compatible with ahead-of-time compilation
361
+ - ✅ **Mobile** (iOS, Android) - Production-ready with IL2CPP
362
+ - ✅ **Desktop** (Windows, macOS, Linux) - Full threading support
363
+ - ✅ **Consoles** - IL2CPP compatible
364
+
365
+ **Requirements:**
366
+
367
+ - **.NET Standard 2.1** - Required for core library features
368
+
369
+ ### WebGL and Single-Threaded Optimization
370
+
371
+ Unity Helpers includes a `SINGLE_THREADED` scripting define symbol for WebGL and other single-threaded environments. When enabled, the library automatically uses optimized code paths that eliminate threading overhead:
372
+
373
+ **Optimized systems with SINGLE_THREADED:**
374
+
375
+ - **Buffers & Pooling** - Uses `Stack<T>` and `Dictionary<T>` instead of `ConcurrentBag<T>` and `ConcurrentDictionary<T>`
376
+ - **Random Number Generation** - Static instances instead of `ThreadLocal<T>`
377
+ - **Reflection Caches** - Non-concurrent dictionaries for faster lookups
378
+ - **Thread Pools** - SingleThreadedThreadPool disabled (not needed on WebGL)
379
+
380
+ **How to enable:**
381
+
382
+ Unity automatically defines `UNITY_WEBGL` for WebGL builds. To enable SINGLE_THREADED optimization:
383
+
384
+ 1. Go to **Project Settings > Player > Other Settings > Scripting Define Symbols**
385
+ 2. Add `SINGLE_THREADED` for WebGL platform
386
+ 3. Or use in your `csc.rsp` file: `-define:SINGLE_THREADED`
387
+
388
+ **Performance impact:** 10-20% faster hot path operations on single-threaded platforms by avoiding unnecessary synchronization overhead.
389
+
390
+ ### IL2CPP and Code Stripping Considerations
391
+
392
+ ⚠️ **Important for IL2CPP builds (WebGL, Mobile, Consoles):**
393
+
394
+ Some features in Unity Helpers use reflection internally (particularly **Protobuf serialization** and **ReflectionHelpers**). IL2CPP's managed code stripping may remove types/members that are only accessed via reflection, causing runtime errors.
395
+
396
+ **Symptoms of stripping issues:**
397
+
398
+ - `NullReferenceException` or `TypeLoadException` during deserialization
399
+ - Missing fields after Protobuf deserialization
400
+ - Reflection helpers failing to find types at runtime
401
+
402
+ #### Solution: Use link.xml to preserve required types
403
+
404
+ Create a `link.xml` file in your `Assets` folder to prevent stripping:
405
+
406
+ ```xml
407
+ <linker>
408
+ <!-- Preserve your serialized types -->
409
+ <assembly fullname="Assembly-CSharp">
410
+ <type fullname="MyNamespace.PlayerSave" preserve="all"/>
411
+ <type fullname="MyNamespace.InventoryData" preserve="all"/>
412
+ <!-- Add all Protobuf-serialized types here -->
413
+ </assembly>
414
+
415
+ <!-- Preserve Unity Helpers if needed -->
416
+ <assembly fullname="WallstopStudios.UnityHelpers.Runtime" preserve="all"/>
417
+ </linker>
418
+ ```
419
+
420
+ **Best practices:**
421
+
422
+ - ✅ **Always test IL2CPP builds** - Development builds don't use stripping, so bugs only appear in release builds
423
+ - ✅ **Test on target platform** - WebGL stripping behaves differently than iOS/Android
424
+ - ✅ **Use link.xml for all Protobuf types** - Any type with `[ProtoContract]` should be preserved
425
+ - ✅ **Verify after every schema change** - Adding new serialized types requires updating link.xml
426
+ - ✅ **Check logs for stripping warnings** - Unity logs which types are stripped during build
427
+
428
+ **When you don't need link.xml:**
429
+
430
+ - JSON serialization (uses source-generated converters, not reflection)
431
+ - Spatial trees and data structures (no reflection used)
432
+ - Most helper methods (compiled ahead-of-time)
433
+
434
+ **Related documentation:**
435
+
436
+ - [Unity Manual: Managed Code Stripping](https://docs.unity3d.com/Manual/ManagedCodeStripping.html)
437
+ - [Protobuf-net and IL2CPP](https://github.com/protobuf-net/protobuf-net#il2cpp)
438
+ - [Serialization Guide: IL2CPP Warning](SERIALIZATION.md#️-il2cpp-and-code-stripping-warning)
439
+ - [Reflection Helpers: IL2CPP Warning](REFLECTION_HELPERS.md#️-il2cpp-code-stripping-considerations)
440
+
441
+ ---
442
+
443
+ ## Quick Start Guide
444
+
445
+ > 💡 **First time?** Skip to section #1 ([Relational Components](#1--auto-wire-components)) - it has the biggest immediate impact.
446
+
447
+ Already read the [Top 5 Time-Savers](#-top-5-time-savers)? Jump directly to the [Core Features](#core-features) reference below, or check out the comprehensive [Getting Started Guide](GETTING_STARTED.md).
448
+
449
+ ---
450
+
451
+ ## Core Features
452
+
453
+ ### Random Number Generators
454
+
455
+ Unity Helpers includes **12 high-quality random number generators**, all implementing a rich `IRandom` interface:
456
+
457
+ #### Available Generators
458
+
459
+ | Generator | Speed | Quality | Use Case |
460
+ | ------------------------------- | --------- | --------- | ---------------------------------------- |
461
+ | **IllusionFlow** ⭐ | Fast | Good | Default choice (via PRNG.Instance) |
462
+ | **PcgRandom** | Very Fast | Excellent | Deterministic gameplay; explicit seeding |
463
+ | **RomuDuo** | Fastest | Good | Maximum performance needed |
464
+ | **LinearCongruentialGenerator** | Fastest | Fair | Simple, fast generation |
465
+ | **XorShiftRandom** | Very Fast | Good | General purpose |
466
+ | **XoroShiroRandom** | Very Fast | Good | General purpose |
467
+ | **SplitMix64** | Very Fast | Good | Initialization, hashing |
468
+ | **SquirrelRandom** | Moderate | Good | Hash-based generation |
469
+ | **WyRandom** | Moderate | Good | Hashing applications |
470
+ | **DotNetRandom** | Moderate | Good | .NET compatibility |
471
+ | **SystemRandom** | Slow | Good | Backward compatibility |
472
+ | **UnityRandom** | Very Slow | Good | Unity compatibility |
473
+
474
+ ⭐ **Recommended**: Use `PRNG.Instance` (currently IllusionFlow)
475
+
476
+ #### Rich API
477
+
478
+ All generators implement `IRandom` with extensive functionality:
479
+
480
+ ```csharp
481
+ IRandom random = PRNG.Instance;
482
+
483
+ // Basic types
484
+ int i = random.Next(); // int in [0, int.MaxValue]
485
+ int range = random.Next(10, 20); // int in [10, 20)
486
+ uint ui = random.NextUint(); // uint in [0, uint.MaxValue]
487
+ float f = random.NextFloat(); // float in [0.0f, 1.0f]
488
+ double d = random.NextDouble(); // double in [0.0d, 1.0d]
489
+ bool b = random.NextBool(); // true or false
490
+
491
+ // Unity types
492
+ Vector2 v2 = random.NextVector2(); // Random 2D vector
493
+ Vector3 v3 = random.NextVector3(); // Random 3D vector
494
+ Color color = random.NextColor(); // Random color
495
+ Quaternion rot = random.NextRotation(); // Random rotation
496
+
497
+ // Distributions
498
+ float gaussian = random.NextGaussian(mean: 0f, stdDev: 1f);
499
+
500
+ // Collections
501
+ T item = random.NextOf(collection); // Random element
502
+ T[] shuffled = random.Shuffle(array); // Fisher-Yates shuffle
503
+ int weightedIndex = random.NextWeightedIndex(weights);
504
+
505
+ // Special
506
+ Guid uuid = random.NextGuid(); // UUIDv4
507
+ T enumValue = random.NextEnum<T>(); // Random enum value
508
+ float[,] noise = random.NextNoiseMap(width, height); // Perlin noise
509
+ ```
510
+
511
+ #### Deterministic Gameplay
512
+
513
+ All generators are **seedable** for replay systems:
514
+
515
+ ```csharp
516
+ // Create seeded generator for deterministic behavior
517
+ IRandom seededRandom = new IllusionFlow(seed: 12345);
518
+
519
+ // Same seed = same sequence
520
+ IRandom replay = new IllusionFlow(seed: 12345);
521
+ // Both will generate identical values
522
+ ```
523
+
524
+ **Threading:**
525
+
526
+ - Do not share a single RNG instance across threads.
527
+ - Use `PRNG.Instance` for a thread-local default, or use each generator's `TypeName.Instance` (e.g., `IllusionFlow.Instance`, `PcgRandom.Instance`).
528
+ - Alternatively, create one separate instance per thread.
529
+
530
+ [📊 Performance Comparison](RANDOM_PERFORMANCE.md)
531
+
532
+ ---
533
+
534
+ ### Spatial Trees
535
+
536
+ Efficient spatial data structures for 2D and 3D games.
537
+
538
+ #### 2D Spatial Trees
539
+
540
+ - **QuadTree2D** - Best general-purpose choice
541
+ - **KDTree2D** - Fast nearest-neighbor queries
542
+ - **RTree2D** - Optimized for bounding boxes
543
+
544
+ ```csharp
545
+ using WallstopStudios.UnityHelpers.Core.DataStructure;
546
+
547
+ // Create from collection
548
+ GameObject[] objects = FindObjectsOfType<GameObject>();
549
+ QuadTree2D<GameObject> tree = new(objects, go => go.transform.position);
550
+
551
+ // Query by radius
552
+ List<GameObject> nearby = new();
553
+ tree.GetElementsInRange(playerPos, radius: 10f, nearby);
554
+
555
+ // Query by bounds
556
+ Bounds searchArea = new(center, size);
557
+ tree.GetElementsInBounds(searchArea, nearby);
558
+
559
+ // Find nearest neighbors (approximate, but fast)
560
+ tree.GetApproximateNearestNeighbors(playerPos, count: 5, nearby);
561
+ ```
562
+
563
+ #### 3D Spatial Trees
564
+
565
+ Note: KdTree3D, OctTree3D, and RTree3D are under active development. SpatialHash3D is stable and production‑ready.
566
+
567
+ - **OctTree3D** - Best general-purpose choice for 3D
568
+ - **KDTree3D** - Fast 3D nearest-neighbor queries
569
+ - **RTree3D** - Optimized for 3D bounding volumes
570
+ - **SpatialHash3D** - Efficient for uniformly distributed moving objects (stable)
571
+
572
+ ```csharp
573
+ // Same API as 2D, but with Vector3
574
+ Vector3[] positions = GetAllPositions();
575
+ OctTree3D<Vector3> tree = new(positions, p => p);
576
+
577
+ List<Vector3> results = new();
578
+ tree.GetElementsInRange(center, radius: 50f, results);
579
+ ```
580
+
581
+ #### When to Use Spatial Trees
582
+
583
+ ✅ **Good for:**
584
+
585
+ - Many objects (100+)
586
+ - Frequent spatial queries
587
+ - Static or slowly changing data
588
+ - AI awareness systems
589
+ - Visibility culling
590
+ - Collision detection optimization
591
+
592
+ ❌ **Not ideal for:**
593
+
594
+ - Few objects (<50)
595
+ - Constantly moving objects
596
+ - Single queries
597
+ - Already using Unity's physics system
598
+
599
+ [📊 2D Benchmarks](SPATIAL_TREE_2D_PERFORMANCE.md) | [📊 3D Benchmarks](SPATIAL_TREE_3D_PERFORMANCE.md)
600
+
601
+ For behavior details and edge cases, see: [Spatial Tree Semantics](SPATIAL_TREE_SEMANTICS.md)
602
+
603
+ ---
604
+
605
+ ### Relational Components
606
+
607
+ Stop writing GetComponent boilerplate. Auto-wire components using attributes.
608
+
609
+ **Key attributes:**
610
+
611
+ - `[SiblingComponent]` - Find components on same GameObject
612
+ - `[ParentComponent]` - Find components in parent hierarchy
613
+ - `[ChildComponent]` - Find components in children
614
+ - `[ValidateAssignment]` - Validate at edit time, show errors in inspector
615
+ - `[NotNull]` - Must be assigned in inspector
616
+ - `[DxReadOnly]` - Read-only display in inspector
617
+ - `[WShowIf]` - Conditional display based on field values
618
+
619
+ **Quick example:**
620
+
621
+ ```csharp
622
+ using WallstopStudios.UnityHelpers.Core.Attributes;
623
+
624
+ public class Enemy : MonoBehaviour
625
+ {
626
+ // Find on same GameObject
627
+ [SiblingComponent]
628
+ private Animator animator;
629
+
630
+ // Find in parent
631
+ [ParentComponent]
632
+ private EnemySpawner spawner;
633
+
634
+ // Find in children
635
+ [ChildComponent]
636
+ private List<Weapon> weapons;
637
+
638
+ // Optional component (no error if missing)
639
+ [SiblingComponent(Optional = true)]
640
+ private AudioSource audioSource;
641
+
642
+ // Only search direct children/parents
643
+ [ParentComponent(OnlyAncestors = true)]
644
+ private Transform[] parentHierarchy;
645
+
646
+ // Include inactive components
647
+ [ChildComponent(IncludeInactive = true)]
648
+ private ParticleSystem[] effects;
649
+
650
+ private void Awake()
651
+ {
652
+ this.AssignRelationalComponents();
653
+ }
654
+ }
655
+ ```
656
+
657
+ See the in-depth guide: [Relational Components](RELATIONAL_COMPONENTS.md).
658
+
659
+ ---
660
+
661
+ ### Effects, Attributes, and Tags
662
+
663
+ Create data-driven gameplay effects that modify stats, apply tags, and drive cosmetics.
664
+
665
+ **Key pieces:**
666
+
667
+ - `AttributeEffect` — ScriptableObject that bundles stat changes, tags, cosmetics, and duration.
668
+ - `EffectHandle` — Unique ID for one application instance; remove/refresh specific stacks.
669
+ - `AttributesComponent` — Base class for components that expose modifiable `Attribute` fields.
670
+ - `TagHandler` — Counts and queries string tags for gating gameplay (e.g., "Stunned").
671
+ - `CosmeticEffectData` — Prefab-like container of behaviors shown while an effect is active.
672
+
673
+ **Quick example:**
674
+
675
+ ```csharp
676
+ using WallstopStudios.UnityHelpers.Tags;
677
+
678
+ // 1) Define stats on a component
679
+ public class CharacterStats : AttributesComponent
680
+ {
681
+ public Attribute Health = 100f;
682
+ public Attribute Speed = 5f;
683
+ }
684
+
685
+ // 2) Author an AttributeEffect (ScriptableObject) in the editor
686
+ // - modifications: [ { attribute: "Speed", action: Multiplication, value: 1.5f } ]
687
+ // - durationType: Duration, duration: 5
688
+ // - effectTags: [ "Haste" ]
689
+ // - cosmeticEffects: [ a prefab with CosmeticEffectData + Particle/Audio components ]
690
+
691
+ // 3) Apply and later remove
692
+ GameObject player = ...;
693
+ AttributeEffect haste = ...; // ScriptableObject reference
694
+ EffectHandle? handle = player.ApplyEffect(haste);
695
+ if (handle.HasValue)
696
+ {
697
+ // Remove early if needed
698
+ player.RemoveEffect(handle.Value);
699
+ }
700
+
701
+ // Query tags anywhere
702
+ if (player.HasTag("Stunned")) { /* disable input */ }
703
+ ```
704
+
705
+ **Details at a glance:**
706
+
707
+ - `ModifierDurationType.Instant` — applies permanently; returns null handle.
708
+ - `ModifierDurationType.Duration` — temporary; expires automatically; reapply can reset if enabled.
709
+ - `ModifierDurationType.Infinite` — persists until `RemoveEffect(handle)` is called.
710
+ - `AttributeModification` order: Addition → Multiplication → Override.
711
+ - `CosmeticEffectData.RequiresInstancing` — instance per application or reuse shared presenters.
712
+
713
+ Further reading: see the full guide [Effects System](EFFECTS_SYSTEM.md).
714
+
715
+ ---
716
+
717
+ ### Serialization
718
+
719
+ Fast, compact serialization for save systems, config, and networking.
720
+
721
+ This package provides three serialization technologies:
722
+
723
+ - `Json` — Uses System.Text.Json with built‑in converters for Unity types.
724
+ - `Protobuf` — Uses protobuf-net for compact, fast, schema‑evolvable binary.
725
+ - `SystemBinary` — Uses .NET BinaryFormatter for legacy/ephemeral data only.
726
+
727
+ All are exposed via `WallstopStudios.UnityHelpers.Core.Serialization.Serializer`.
728
+
729
+ #### JSON Profiles
730
+
731
+ - **Normal** — robust defaults (case-insensitive, includes fields, comments/trailing commas allowed)
732
+ - **Pretty** — human-friendly, indented
733
+ - **Fast** — strict, minimal with Unity converters (case-sensitive, strict numbers, no comments/trailing commas, IncludeFields=false)
734
+ - **FastPOCO** — strict, minimal, no Unity converters; best for pure POCO graphs
735
+
736
+ #### When To Use What
737
+
738
+ - Use **Json** for:
739
+ - Player or tool settings, human‑readable saves, serverless workflows.
740
+ - Interop with tooling, debugging, or versioning in Git.
741
+ - Use **Protobuf** for:
742
+ - Network payloads, large save files, bandwidth/storage‑sensitive data.
743
+ - Situations where you expect schema evolution across versions.
744
+ - Use **SystemBinary** only for:
745
+ - Transient caches in trusted environments where data and code version match.
746
+ - Never for untrusted data or long‑term persistence.
747
+
748
+ #### JSON Example
749
+
750
+ ```csharp
751
+ using System.Collections.Generic;
752
+ using UnityEngine;
753
+ using WallstopStudios.UnityHelpers.Core.Serialization;
754
+
755
+ public class SaveData
756
+ {
757
+ public Vector3 position;
758
+ public Color playerColor;
759
+ public List<GameObject> inventory;
760
+ }
761
+
762
+ var data = new SaveData
763
+ {
764
+ position = new Vector3(1, 2, 3),
765
+ playerColor = Color.cyan,
766
+ inventory = new List<GameObject>()
767
+ };
768
+
769
+ // Serialize to UTF‑8 JSON bytes (Unity types supported via built‑in converters)
770
+ byte[] jsonBytes = Serializer.JsonSerialize(data);
771
+
772
+ // Deserialize from string
773
+ string jsonText = Serializer.JsonStringify(data, pretty: true);
774
+ SaveData fromText = Serializer.JsonDeserialize<SaveData>(jsonText);
775
+
776
+ // File helpers
777
+ Serializer.WriteToJsonFile(data, path: "save.json", pretty: true);
778
+ SaveData fromFile = Serializer.ReadFromJsonFile<SaveData>("save.json");
779
+
780
+ // Generic entry points (choose format at runtime)
781
+ byte[] bytes = Serializer.Serialize(data, SerializationType.Json);
782
+ SaveData loaded = Serializer.Deserialize<SaveData>(bytes, SerializationType.Json);
783
+ ```
784
+
785
+ #### Protobuf Example
786
+
787
+ ```csharp
788
+ using ProtoBuf; // protobuf-net
789
+ using UnityEngine;
790
+ using WallstopStudios.UnityHelpers.Core.Serialization;
791
+
792
+ [ProtoContract]
793
+ public class NetworkMessage
794
+ {
795
+ [ProtoMember(1)] public int playerId;
796
+ [ProtoMember(2)] public Vector3 position; // Vector3 works in Protobuf via built-in surrogates
797
+ }
798
+
799
+ var message = new NetworkMessage { playerId = 7, position = new Vector3(5, 0, -2) };
800
+
801
+ // Protobuf bytes (small + fast)
802
+ byte[] bytes = Serializer.ProtoSerialize(message);
803
+ NetworkMessage decoded = Serializer.ProtoDeserialize<NetworkMessage>(bytes);
804
+
805
+ // Generic entry points
806
+ byte[] bytes2 = Serializer.Serialize(message, SerializationType.Protobuf);
807
+ NetworkMessage decoded2 = Serializer.Deserialize<NetworkMessage>(bytes2, SerializationType.Protobuf);
808
+
809
+ // Buffer reuse (reduce GC for hot paths)
810
+ byte[] buffer = null;
811
+ int len = Serializer.Serialize(message, SerializationType.Protobuf, ref buffer);
812
+ NetworkMessage again = Serializer.Deserialize<NetworkMessage>(buffer.AsSpan(0, len).ToArray(), SerializationType.Protobuf);
813
+ ```
814
+
815
+ **Notes:**
816
+
817
+ - Protobuf‑net requires stable field numbers. Annotate with `[ProtoMember(n)]` and never reuse or renumber.
818
+ - Unity types supported via surrogates: Vector2/3, Vector2Int/3Int, Quaternion, Color/Color32, Rect/RectInt, Bounds/BoundsInt, Resolution.
819
+
820
+ **Features:**
821
+
822
+ - Custom converters for Unity types (Vector2/3/4, Color, GameObject, Matrix4x4, Type)
823
+ - Protobuf (protobuf‑net) support for compact binary
824
+ - LZMA compression utilities (see `Runtime/Utils/LZMA.cs`)
825
+ - Type‑safe serialization and pooled buffers/writers to reduce GC
826
+
827
+ [Full guide: Serialization](SERIALIZATION.md)
828
+
829
+ ---
830
+
831
+ ### Data Structures
832
+
833
+ Additional high-performance data structures:
834
+
835
+ | Structure | Use Case |
836
+ | -------------------- | ------------------------------ |
837
+ | **CyclicBuffer<T>** | Ring buffer, sliding windows |
838
+ | **BitSet** | Compact boolean storage |
839
+ | **ImmutableBitSet** | Read-only bit flags |
840
+ | **Heap<T>** | Priority queue operations |
841
+ | **PriorityQueue<T>** | Event scheduling |
842
+ | **Deque<T>** | Double-ended queue |
843
+ | **DisjointSet** | Union-find operations |
844
+ | **Trie** | String prefix trees |
845
+ | **SparseSet** | Fast add/remove with iteration |
846
+ | **TimedCache<T>** | Auto-expiring cache |
847
+
848
+ ```csharp
849
+ // Cyclic buffer for damage history
850
+ CyclicBuffer<float> damageHistory = new(capacity: 10);
851
+ damageHistory.Add(25f);
852
+ damageHistory.Add(30f);
853
+ float avgDamage = damageHistory.Average();
854
+
855
+ // Priority queue for event scheduling
856
+ PriorityQueue<GameEvent> eventQueue = new();
857
+ eventQueue.Enqueue(spawnEvent, priority: 1);
858
+ eventQueue.Enqueue(bossEvent, priority: 10);
859
+ GameEvent next = eventQueue.Dequeue(); // Highest priority
860
+
861
+ // Trie for autocomplete
862
+ Trie commandTrie = new();
863
+ commandTrie.Insert("teleport");
864
+ commandTrie.Insert("tell");
865
+ commandTrie.Insert("terrain");
866
+ List<string> matches = commandTrie.GetWordsWithPrefix("tel");
867
+ // Returns: ["teleport", "tell"]
868
+ ```
869
+
870
+ [Full guide: Data Structures](DATA_STRUCTURES.md)
871
+
872
+ ---
873
+
874
+ ### Core Math & Extensions
875
+
876
+ Numeric helpers, geometry primitives, Unity extensions, colors, collections, strings, directions.
877
+
878
+ See the guide: [Core Math & Extensions](MATH_AND_EXTENSIONS.md).
879
+
880
+ #### At a Glance
881
+
882
+ - `PositiveMod`, `WrappedAdd` — Safe cyclic arithmetic for indices/angles.
883
+ - `LineHelper.Simplify` — Reduce polyline vertices with Douglas–Peucker.
884
+ - `Line2D.Intersects` — Robust 2D segment intersection and closest-point helpers.
885
+ - `RectTransform.GetWorldRect` — Axis-aligned world bounds for rotated UI.
886
+ - `Camera.OrthographicBounds` — Compute visible world bounds for ortho cameras.
887
+ - `Color.GetAverageColor` — LAB/HSV/Weighted/Dominant color averaging.
888
+ - `IEnumerable.Infinite` — Cycle sequences without extra allocations.
889
+ - `StringExtensions.LevenshteinDistance` — Edit distance for fuzzy matching.
890
+
891
+ ---
892
+
893
+ <a id="singleton-utilities-odin-compatible"></a>
894
+
895
+ ### Singleton Utilities (ODIN‑compatible)
896
+
897
+ - `RuntimeSingleton<T>` — Global component singleton with optional cross‑scene persistence.
898
+ - `ScriptableObjectSingleton<T>` — Global settings/data singleton loaded from `Resources/`, auto‑created by the editor tool.
899
+
900
+ See the guide: [Singleton Utilities](SINGLETONS.md) and the tool: [ScriptableObject Singleton Creator](EDITOR_TOOLS_GUIDE.md#scriptableobject-singleton-creator).
901
+
902
+ ---
903
+
904
+ ### Editor Tools
905
+
906
+ Unity Helpers includes 20+ editor tools to streamline your workflow:
907
+
908
+ - **Sprite Tools**: Cropper, Atlas Generator, Animation Editor, Pivot Adjuster
909
+ - **Texture Tools**: Blur, Resize, Settings Applier, Fit Texture Size
910
+ - **Animation Tools**: Event Editor, Creator, Copier, Sheet Animation Creator
911
+ - **Validation**: Prefab Checker with comprehensive validation rules
912
+ - **Automation**: ScriptableObject Singleton Creator, Attribute Cache Generator
913
+
914
+ [📖 Complete Editor Tools Documentation](EDITOR_TOOLS_GUIDE.md)
915
+
916
+ **Quick Access:**
917
+
918
+ - Menu: `Tools > Wallstop Studios > Unity Helpers`
919
+ - Create Assets: `Assets > Create > Wallstop Studios > Unity Helpers`
920
+
921
+ ---
922
+
923
+ ## Buffering Pattern
924
+
925
+ ### Professional-Grade Object Pooling
926
+
927
+ Zero-allocation queries with automatic cleanup and thread-safe pooling.
928
+
929
+ ```csharp
930
+ using WallstopStudios.UnityHelpers.Utils;
931
+ using WallstopStudios.UnityHelpers.Core.DataStructure;
932
+
933
+ // Example: Use pooled buffer for spatial query
934
+ void FindNearbyEnemies(QuadTree2D<Enemy> tree, Vector2 position)
935
+ {
936
+ // Get pooled list - automatically returned when scope exits
937
+ using var lease = Buffers<Enemy>.List.Get(out List<Enemy> buffer);
938
+
939
+ // Use it with spatial query - combines zero-alloc query + pooled buffer!
940
+ tree.GetElementsInRange(position, 10f, buffer);
941
+
942
+ foreach (Enemy enemy in buffer)
943
+ {
944
+ enemy.TakeDamage(5f);
945
+ }
946
+ // buffer automatically returned to pool here
947
+ }
948
+
949
+ // Array pooling example
950
+ void ProcessLargeDataset(int size)
951
+ {
952
+ using var lease = WallstopArrayPool<float>.Get(size, out float[] buffer);
953
+
954
+ // Use buffer for temporary processing
955
+ for (int i = 0; i < size; i++)
956
+ {
957
+ buffer[i] = ComputeValue(i);
958
+ }
959
+
960
+ // buffer automatically returned to pool here
961
+ }
962
+ ```
963
+
964
+ **Do / Don'ts:**
965
+
966
+ - Do reuse buffers per system or component.
967
+ - Do treat buffers as temporary scratch space (APIs clear them first).
968
+ - Don't keep references to pooled lists beyond their lease lifetime.
969
+ - Don't share the same buffer across overlapping async/coroutine work.
970
+
971
+ <a id="pooling-utilities"></a>
972
+
973
+ **Pooling utilities:**
974
+
975
+ - `Buffers<T>` — pooled collections (List/Stack/Queue/HashSet) with `PooledResource` leases.
976
+ - Lists: `using var lease = Buffers<Foo>.List.Get(out List<Foo> list);`
977
+ - Stacks: `using var lease = Buffers<Foo>.Stack.Get(out Stack<Foo> stack);`
978
+ - HashSets: `using var lease = Buffers<Foo>.HashSet.Get(out HashSet<Foo> set);`
979
+ - Pattern: acquire → use → Dispose (returns to pool, clears collection).
980
+
981
+ - `WallstopArrayPool<T>` — rent arrays by length with automatic return on dispose.
982
+ - Example: `using var lease = WallstopArrayPool<int>.Get(1024, out int[] buffer);`
983
+ - Use for temporary processing buffers, sorting, or interop with APIs that require arrays.
984
+
985
+ - `WallstopFastArrayPool<T>` — fast array pool specialized for frequent short‑lived arrays.
986
+ - Example: `using var lease = WallstopFastArrayPool<string>.Get(count, out string[] buffer);`
987
+ - Used throughout Helpers for high‑frequency editor/runtime operations (e.g., asset searches).
988
+
989
+ **How pooling + buffering help APIs:**
990
+
991
+ - Spatial queries: pass a reusable `List<T>` to `GetElementsInRange/GetElementsInBounds` and iterate results without allocations.
992
+ - Component queries: `GetComponents(buffer)` clears and fills your buffer instead of allocating arrays.
993
+ - Editor utilities: temporary arrays/lists from pools keep import/scan tools snappy, especially inside loops.
994
+
995
+ ---
996
+
997
+ ## Dependency Injection Integrations
998
+
999
+ **Auto-detected packages:**
1000
+
1001
+ - Zenject/Extenject: `com.extenject.zenject`, `com.modesttree.zenject`, `com.svermeulen.extenject`
1002
+ - VContainer: `jp.cysharp.vcontainer`, `jp.hadashikick.vcontainer`
1003
+
1004
+ **Manual or source imports (no UPM):**
1005
+
1006
+ - Add scripting defines in `Project Settings > Player > Other Settings > Scripting Define Symbols`:
1007
+ - `ZENJECT_PRESENT` when Zenject/Extenject is present
1008
+ - `VCONTAINER_PRESENT` when VContainer is present
1009
+ - Add the define per target platform (e.g., Standalone, Android, iOS).
1010
+
1011
+ **Notes:**
1012
+
1013
+ - When the define is present, optional assemblies under `Runtime/Integrations/*` compile automatically and expose helpers like `RelationalComponentsInstaller` (Zenject) and `RegisterRelationalComponents()` (VContainer).
1014
+ - If you use UPM, no manual defines are required — the package IDs above trigger symbols via `versionDefines` in the asmdefs.
1015
+ - For test scenarios without LifetimeScope (VContainer) or SceneContext (Zenject), see [DI Integrations: Testing and Edge Cases](RELATIONAL_COMPONENTS.md#di-integrations-testing-and-edge-cases) for step‑by‑step patterns.
1016
+
1017
+ **Quick start:**
1018
+
1019
+ - **VContainer**: in your `LifetimeScope.Configure`, call `builder.RegisterRelationalComponents()`.
1020
+ - **Zenject**: add `RelationalComponentsInstaller` to your `SceneContext` (toggle scene scan if desired).
1021
+
1022
+ ```csharp
1023
+ // VContainer — LifetimeScope
1024
+ using VContainer;
1025
+ using VContainer.Unity;
1026
+ using WallstopStudios.UnityHelpers.Integrations.VContainer;
1027
+
1028
+ protected override void Configure(IContainerBuilder builder)
1029
+ {
1030
+ // Register assigner + one-time scene scan + additive listener (default)
1031
+ builder.RegisterRelationalComponents(
1032
+ RelationalSceneAssignmentOptions.Default,
1033
+ enableAdditiveSceneListener: true
1034
+ );
1035
+ }
1036
+
1037
+ // Zenject — prefab instantiation with DI + relations
1038
+ using Zenject;
1039
+ using WallstopStudios.UnityHelpers.Integrations.Zenject;
1040
+
1041
+ var enemy = Container.InstantiateComponentWithRelations(enemyPrefab, parent);
1042
+ ```
1043
+
1044
+ See the full guide with scenarios, troubleshooting, and testing patterns: [Relational Components Guide](RELATIONAL_COMPONENTS.md)
1045
+
1046
+ ### Additional Helpers
1047
+
1048
+ - VContainer:
1049
+ - `resolver.InjectWithRelations(component)` — inject + assign a single instance
1050
+ - `resolver.InstantiateComponentWithRelations(prefab, parent)` — instantiate + inject + assign
1051
+ - `resolver.InjectGameObjectWithRelations(root, includeInactiveChildren)` — inject hierarchy + assign
1052
+ - `resolver.InstantiateGameObjectWithRelations(prefab, parent)` — instantiate GO + inject + assign
1053
+
1054
+ - Zenject:
1055
+ - `container.InjectWithRelations(component)` — inject + assign a single instance
1056
+ - `container.InstantiateComponentWithRelations(prefab, parent)` — instantiate + assign
1057
+ - `container.InjectGameObjectWithRelations(root, includeInactiveChildren)` — inject hierarchy + assign
1058
+ - `container.InstantiateGameObjectWithRelations(prefab, parent)` — instantiate GO + inject + assign
1059
+
1060
+ ### Additive Scene Loads
1061
+
1062
+ - VContainer: `RegisterRelationalComponents(..., enableAdditiveSceneListener: true)` registers a listener that hydrates components in newly loaded scenes.
1063
+ - Zenject: `RelationalComponentsInstaller` exposes a toggle “Listen For Additive Scenes” to register the same behavior.
1064
+ - Only the newly loaded scene is processed; other loaded scenes are not re‑scanned.
1065
+
1066
+ ### Performance Options
1067
+
1068
+ - One-time scene scan runs after container build; additive scenes are handled incrementally.
1069
+ - Single-pass scan (default) reduces `FindObjectsOfType` calls by scanning once and checking type ancestry.
1070
+ - VContainer: `new RelationalSceneAssignmentOptions(includeInactive: true, useSinglePassScan: true)`
1071
+ - Zenject: `new RelationalSceneAssignmentOptions(includeInactive: true, useSinglePassScan: true)`
1072
+ - Per-object paths (instantiate/inject helpers, pools) avoid global scans entirely for objects created via DI.
1073
+
1074
+ ---
1075
+
1076
+ ## Performance
1077
+
1078
+ Unity Helpers is built with performance as a top priority:
1079
+
1080
+ **Random Number Generation:**
1081
+
1082
+ - 10-15x faster than Unity.Random (655-885M ops/sec vs 65-85M ops/sec)
1083
+ - Zero GC pressure with thread-local instances
1084
+ - [📊 Full Random Performance Benchmarks](RANDOM_PERFORMANCE.md)
1085
+
1086
+ **Spatial Queries:**
1087
+
1088
+ - O(log n) tree queries vs O(n) linear search
1089
+ - 100-1000x faster for large datasets
1090
+ - QuadTree2D: 10,000 objects = ~13 checks vs 10,000 checks
1091
+ - [📊 2D Performance Benchmarks](SPATIAL_TREE_2D_PERFORMANCE.md)
1092
+ - [📊 3D Performance Benchmarks](SPATIAL_TREE_3D_PERFORMANCE.md)
1093
+
1094
+ **Memory Management:**
1095
+
1096
+ - Zero-allocation buffering pattern eliminates GC spikes
1097
+ - Professional-grade pooling for List, HashSet, Stack, Queue, Arrays
1098
+ - 5-10 FPS improvement in complex scenes from stable GC
1099
+
1100
+ **Reflection:**
1101
+
1102
+ - IL-emitted delegates 10-100x faster than System.Reflection
1103
+ - Safe for IL2CPP and AOT platforms
1104
+ - [📊 Reflection Performance](REFLECTION_HELPERS.md)
1105
+
1106
+ ---
1107
+
1108
+ ## Documentation Index
1109
+
1110
+ **Start Here:**
1111
+
1112
+ - 🚀 Getting Started — [Getting Started Guide](GETTING_STARTED.md)
1113
+ - 🔍 Feature Index — [Complete A-Z Index](INDEX.md)
1114
+ - 📖 Glossary — [Term Definitions](GLOSSARY.md)
1115
+
1116
+ **Core Guides:**
1117
+
1118
+ - Serialization Guide — [Serialization](SERIALIZATION.md)
1119
+ - Editor Tools Guide — [Editor Tools](EDITOR_TOOLS_GUIDE.md)
1120
+ - Math & Extensions — [Core Math & Extensions](MATH_AND_EXTENSIONS.md)
1121
+ - Singletons — [Singleton Utilities](SINGLETONS.md)
1122
+ - Relational Components — [Relational Components](RELATIONAL_COMPONENTS.md)
1123
+ - Effects System — [Effects System](EFFECTS_SYSTEM.md)
1124
+ - Data Structures — [Data Structures](DATA_STRUCTURES.md)
1125
+
1126
+ **Spatial Trees:**
1127
+
1128
+ - 2D Spatial Trees Guide — [2D Spatial Trees Guide](SPATIAL_TREES_2D_GUIDE.md)
1129
+ - 3D Spatial Trees Guide — [3D Spatial Trees Guide](SPATIAL_TREES_3D_GUIDE.md)
1130
+ - Spatial Tree Semantics — [Spatial Tree Semantics](SPATIAL_TREE_SEMANTICS.md)
1131
+ - Spatial Tree 2D Performance — [Spatial Tree 2D Performance](SPATIAL_TREE_2D_PERFORMANCE.md)
1132
+ - Spatial Tree 3D Performance — [Spatial Tree 3D Performance](SPATIAL_TREE_3D_PERFORMANCE.md)
1133
+ - Hulls (Convex vs Concave) — [Hulls](HULLS.md)
1134
+
1135
+ **Performance & Reference:**
1136
+
1137
+ - Random Performance — [Random Performance](RANDOM_PERFORMANCE.md)
1138
+ - Reflection Helpers — [Reflection Helpers](REFLECTION_HELPERS.md)
1139
+
1140
+ **Project Info:**
1141
+
1142
+ - Changelog — [Changelog](CHANGELOG.md)
1143
+ - License — [License](LICENSE.md)
1144
+ - Third‑Party Notices — [Third‑Party Notices](THIRD_PARTY_NOTICES.md)
1145
+ - Contributing — [Contributing](CONTRIBUTING.md)
1146
+
1147
+ ---
1148
+
1149
+ ## Contributing
1150
+
1151
+ Contributions are welcome! Please feel free to submit a Pull Request.
1152
+
1153
+ ### Formatting Assistance
1154
+
1155
+ - Dependabot PRs: Formatting fixes (CSharpier + Prettier + markdownlint) are applied automatically by CI.
1156
+ - Contributor PRs: Opt-in formatting is available.
1157
+ - Comment on the PR with `/format` (aliases: `/autofix`, `/lint-fix`).
1158
+ - If the PR branch is in this repo, the bot pushes a commit with fixes.
1159
+ - If the PR is from a fork, the bot opens a formatting PR targeting the base branch.
1160
+ - The commenter must be the PR author or a maintainer/collaborator.
1161
+ - Or run the Actions workflow manually: Actions → "Opt-in Formatting" → Run workflow → enter the PR number.
1162
+ - Not everything is auto-fixable: link checks and YAML linting may still require manual changes.
1163
+
1164
+ See more details in [CONTRIBUTING](CONTRIBUTING.md).
1165
+
1166
+ ---
1167
+
1168
+ ## License
1169
+
1170
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE.md) file for details.
1171
+
1172
+ ## 2.0 Release Notes (Highlights)
1173
+
1174
+ - BinaryFormatter deprecated, still functional for trusted/legacy data:
1175
+ - `SerializationType.SystemBinary` is `[Obsolete]`. Use `SerializationType.Json` (System.Text.Json + Unity converters) or `SerializationType.Protobuf` (protobuf-net) for new work. Keep BinaryFormatter for trusted, non‑portable data only.
1176
+
1177
+ - GameObject JSON converter outputs structured JSON:
1178
+ - `GameObjectConverter` now writes a JSON object with `name`, `type` (assembly-qualified), and `instanceId` rather than a stringified placeholder.
1179
+
1180
+ - Minor robustness improvements:
1181
+ - Guarded stray `UnityEditor` imports in runtime files to ensure clean player builds.
1182
+
1183
+ See [Serialization guide](SERIALIZATION.md) for AOT/IL2CPP guidance and Unity JSON options, and [Editor tools guide](EDITOR_TOOLS_GUIDE.md) for Editor tool usage details.