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
@@ -1,550 +1,1151 @@
1
- using System.Runtime.CompilerServices;
2
-
3
- [assembly: InternalsVisibleTo("WallstopStudios.UnityHelpers.Tests.Runtime")]
4
-
5
- namespace WallstopStudios.UnityHelpers.Utils
6
- {
7
- using System;
8
- using System.Collections.Generic;
9
- using System.Text;
10
- using UnityEngine;
11
- #if !SINGLE_THREADED
12
- using System.Threading;
13
- using System.Collections.Concurrent;
14
- #else
15
- using WallstopStudios.UnityHelpers.Core.Extension;
16
- #endif
17
- public static class Buffers
18
- {
19
- #if SINGLE_THREADED
20
- private static readonly Dictionary<float, WaitForSeconds> WaitForSeconds = new();
21
- private static readonly Dictionary<float, WaitForSecondsRealtime> WaitForSecondsRealtime =
22
- new();
23
- #else
24
- private static readonly ConcurrentDictionary<float, WaitForSeconds> WaitForSeconds = new();
25
- private static readonly ConcurrentDictionary<
26
- float,
27
- WaitForSecondsRealtime
28
- > WaitForSecondsRealtime = new();
29
- #endif
30
-
31
- public static readonly WaitForFixedUpdate WaitForFixedUpdate = new();
32
- public static readonly WaitForEndOfFrame WaitForEndOfFrame = new();
33
-
34
- public static readonly WallstopGenericPool<StringBuilder> StringBuilder = new(
35
- () => new StringBuilder(),
36
- onRelease: builder => builder.Clear()
37
- );
38
-
39
- /*
40
- Note: Only use with CONSTANT time values, otherwise this is a memory leak.
41
- DO NOT USE with random values.
42
- */
43
- public static WaitForSeconds GetWaitForSeconds(float seconds)
44
- {
45
- return WaitForSeconds.GetOrAdd(seconds, value => new WaitForSeconds(value));
46
- }
47
-
48
- /*
49
- Note: Only use with CONSTANT time values, otherwise this is a memory leak.
50
- DO NOT USE with random values.
51
- */
52
- public static WaitForSecondsRealtime GetWaitForSecondsRealTime(float seconds)
53
- {
54
- return WaitForSecondsRealtime.GetOrAdd(
55
- seconds,
56
- value => new WaitForSecondsRealtime(value)
57
- );
58
- }
59
- }
60
-
61
- public static class Buffers<T>
62
- {
63
- public static readonly WallstopGenericPool<List<T>> List = new(
64
- () => new List<T>(),
65
- onRelease: list => list.Clear()
66
- );
67
-
68
- public static readonly WallstopGenericPool<HashSet<T>> HashSet = new(
69
- () => new HashSet<T>(),
70
- onRelease: set => set.Clear()
71
- );
72
-
73
- public static readonly WallstopGenericPool<Queue<T>> Queue = new(
74
- () => new Queue<T>(),
75
- onRelease: queue => queue.Clear()
76
- );
77
-
78
- public static readonly WallstopGenericPool<Stack<T>> Stack = new(
79
- () => new Stack<T>(),
80
- onRelease: stack => stack.Clear()
81
- );
82
-
83
- public static readonly WallstopGenericPool<SortedSet<T>> SortedSet = new(
84
- () => new SortedSet<T>(),
85
- onRelease: set => set.Clear()
86
- );
87
- }
88
-
89
- #if SINGLE_THREADED
90
- public sealed class WallstopGenericPool<T> : IDisposable
91
- {
92
- private readonly Func<T> _producer;
93
- private readonly Action<T> _onGet;
94
- private readonly Action<T> _onRelease;
95
- private readonly Action<T> _onDispose;
96
-
97
- private readonly Stack<T> _pool = new();
98
-
99
- public WallstopGenericPool(
100
- Func<T> producer,
101
- int preWarmCount = 0,
102
- Action<T> onGet = null,
103
- Action<T> onRelease = null,
104
- Action<T> onDisposal = null
105
- )
106
- {
107
- _producer = producer ?? throw new ArgumentNullException(nameof(producer));
108
- _onGet = onGet;
109
- _onRelease = onRelease ?? (_ => { });
110
- _onRelease += _pool.Push;
111
- _onDispose = onDisposal;
112
- for (int i = 0; i < preWarmCount; ++i)
113
- {
114
- T value = _producer();
115
- _onGet?.Invoke(value);
116
- _onRelease(value);
117
- }
118
- }
119
-
120
- public PooledResource<T> Get()
121
- {
122
- return Get(out _);
123
- }
124
-
125
- public PooledResource<T> Get(out T value)
126
- {
127
- if (!_pool.TryPop(out value))
128
- {
129
- value = _producer();
130
- }
131
-
132
- _onGet?.Invoke(value);
133
- return new PooledResource<T>(value, _onRelease);
134
- }
135
-
136
- public void Dispose()
137
- {
138
- if (_onDispose == null)
139
- {
140
- _pool.Clear();
141
- return;
142
- }
143
-
144
- while (_pool.TryPop(out T value))
145
- {
146
- _onDispose(value);
147
- }
148
- }
149
- }
150
- #else
151
- public sealed class WallstopGenericPool<T> : IDisposable
152
- {
153
- internal int Count => _pool.Count;
154
-
155
- private readonly Func<T> _producer;
156
- private readonly Action<T> _onGet;
157
- private readonly Action<T> _onRelease;
158
- private readonly Action<T> _onDispose;
159
-
160
- private readonly ConcurrentStack<T> _pool = new();
161
-
162
- public WallstopGenericPool(
163
- Func<T> producer,
164
- int preWarmCount = 0,
165
- Action<T> onGet = null,
166
- Action<T> onRelease = null,
167
- Action<T> onDisposal = null
168
- )
169
- {
170
- _producer = producer ?? throw new ArgumentNullException(nameof(producer));
171
- _onGet = onGet;
172
- _onRelease = onRelease ?? (_ => { });
173
- _onRelease += _pool.Push;
174
- _onDispose = onDisposal;
175
- for (int i = 0; i < preWarmCount; ++i)
176
- {
177
- T value = _producer();
178
- _onGet?.Invoke(value);
179
- _onRelease(value);
180
- }
181
- }
182
-
183
- public PooledResource<T> Get()
184
- {
185
- return Get(out _);
186
- }
187
-
188
- public PooledResource<T> Get(out T value)
189
- {
190
- if (!_pool.TryPop(out value))
191
- {
192
- value = _producer();
193
- }
194
-
195
- _onGet?.Invoke(value);
196
- return new PooledResource<T>(value, _onRelease);
197
- }
198
-
199
- public void Dispose()
200
- {
201
- if (_onDispose == null)
202
- {
203
- _pool.Clear();
204
- return;
205
- }
206
-
207
- while (_pool.TryPop(out T value))
208
- {
209
- _onDispose(value);
210
- }
211
- }
212
- }
213
- #endif
214
-
215
- #if SINGLE_THREADED
216
- public static class WallstopArrayPool<T>
217
- {
218
- private static readonly Dictionary<int, List<T[]>> _pool = new();
219
- private static readonly Action<T[]> _onDispose = Release;
220
-
221
- public static PooledResource<T[]> Get(int size)
222
- {
223
- return Get(size, out _);
224
- }
225
-
226
- public static PooledResource<T[]> Get(int size, out T[] value)
227
- {
228
- switch (size)
229
- {
230
- case < 0:
231
- {
232
- throw new ArgumentOutOfRangeException(
233
- nameof(size),
234
- size,
235
- "Must be non-negative."
236
- );
237
- }
238
- case 0:
239
- {
240
- value = Array.Empty<T>();
241
- return new PooledResource<T[]>(value, _ => { });
242
- }
243
- }
244
-
245
- if (!_pool.TryGetValue(size, out List<T[]> pool))
246
- {
247
- pool = new List<T[]>();
248
- _pool[size] = pool;
249
- }
250
-
251
- if (pool.Count == 0)
252
- {
253
- value = new T[size];
254
- return new PooledResource<T[]>(value, _onDispose);
255
- }
256
-
257
- int lastIndex = pool.Count - 1;
258
- value = pool[lastIndex];
259
- pool.RemoveAt(lastIndex);
260
- return new PooledResource<T[]>(value, _onDispose);
261
- }
262
-
263
- private static void Release(T[] resource)
264
- {
265
- int length = resource.Length;
266
- Array.Clear(resource, 0, length);
267
- if (!_pool.TryGetValue(length, out List<T[]> pool))
268
- {
269
- pool = new List<T[]>();
270
- _pool[resource.Length] = pool;
271
- }
272
- pool.Add(resource);
273
- }
274
- }
275
- #else
276
- public static class WallstopArrayPool<T>
277
- {
278
- private static readonly ConcurrentDictionary<int, ConcurrentStack<T[]>> _pool = new();
279
- private static readonly Action<T[]> _onRelease = Release;
280
-
281
- public static PooledResource<T[]> Get(int size)
282
- {
283
- return Get(size, out _);
284
- }
285
-
286
- public static PooledResource<T[]> Get(int size, out T[] value)
287
- {
288
- switch (size)
289
- {
290
- case < 0:
291
- {
292
- throw new ArgumentOutOfRangeException(
293
- nameof(size),
294
- size,
295
- "Must be non-negative."
296
- );
297
- }
298
- case 0:
299
- {
300
- value = Array.Empty<T>();
301
- return new PooledResource<T[]>(value, _ => { });
302
- }
303
- }
304
-
305
- ConcurrentStack<T[]> result = _pool.GetOrAdd(size, _ => new ConcurrentStack<T[]>());
306
- if (!result.TryPop(out value))
307
- {
308
- value = new T[size];
309
- }
310
-
311
- return new PooledResource<T[]>(value, _onRelease);
312
- }
313
-
314
- private static void Release(T[] resource)
315
- {
316
- int length = resource.Length;
317
- Array.Clear(resource, 0, length);
318
- ConcurrentStack<T[]> result = _pool.GetOrAdd(length, _ => new ConcurrentStack<T[]>());
319
- result.Push(resource);
320
- }
321
- }
322
- #endif
323
-
324
- #if SINGLE_THREADED
325
- public static class WallstopFastArrayPool<T>
326
- {
327
- private static readonly List<Stack<T[]>> _pool = new();
328
- private static readonly Action<T[]> _onRelease = Release;
329
-
330
- public static PooledResource<T[]> Get(int size)
331
- {
332
- return Get(size, out _);
333
- }
334
-
335
- public static PooledResource<T[]> Get(int size, out T[] value)
336
- {
337
- switch (size)
338
- {
339
- case < 0:
340
- {
341
- throw new ArgumentOutOfRangeException(
342
- nameof(size),
343
- size,
344
- "Must be non-negative."
345
- );
346
- }
347
- case 0:
348
- {
349
- value = Array.Empty<T>();
350
- return new PooledResource<T[]>(value, _ => { });
351
- }
352
- }
353
-
354
- while (_pool.Count <= size)
355
- {
356
- _pool.Add(null);
357
- }
358
-
359
- Stack<T[]> pool = _pool[size];
360
- if (pool == null)
361
- {
362
- pool = new Stack<T[]>();
363
- _pool[size] = pool;
364
- }
365
-
366
- if (!pool.TryPop(out value))
367
- {
368
- value = new T[size];
369
- }
370
-
371
- return new PooledResource<T[]>(value, _onRelease);
372
- }
373
-
374
- private static void Release(T[] resource)
375
- {
376
- _pool[resource.Length].Push(resource);
377
- }
378
- }
379
- #else
380
- public static class WallstopFastArrayPool<T>
381
- {
382
- private static readonly ReaderWriterLockSlim _lock = new();
383
- private static readonly List<ConcurrentStack<T[]>> _pool = new();
384
- private static readonly Action<T[]> _onRelease = Release;
385
-
386
- public static PooledResource<T[]> Get(int size)
387
- {
388
- return Get(size, out _);
389
- }
390
-
391
- public static PooledResource<T[]> Get(int size, out T[] value)
392
- {
393
- switch (size)
394
- {
395
- case < 0:
396
- {
397
- throw new ArgumentOutOfRangeException(
398
- nameof(size),
399
- size,
400
- "Must be non-negative."
401
- );
402
- }
403
- case 0:
404
- {
405
- value = Array.Empty<T>();
406
- return new PooledResource<T[]>(value, _ => { });
407
- }
408
- }
409
-
410
- bool withinRange;
411
- ConcurrentStack<T[]> pool = null;
412
- _lock.EnterReadLock();
413
- try
414
- {
415
- withinRange = size < _pool.Count;
416
- if (withinRange)
417
- {
418
- pool = _pool[size];
419
- }
420
- }
421
- finally
422
- {
423
- _lock.ExitReadLock();
424
- }
425
-
426
- if (withinRange)
427
- {
428
- if (pool == null)
429
- {
430
- _lock.EnterUpgradeableReadLock();
431
- try
432
- {
433
- pool = _pool[size];
434
- if (pool == null)
435
- {
436
- _lock.EnterWriteLock();
437
- try
438
- {
439
- pool = _pool[size];
440
- if (pool == null)
441
- {
442
- pool = new ConcurrentStack<T[]>();
443
- _pool[size] = pool;
444
- }
445
- }
446
- finally
447
- {
448
- _lock.ExitWriteLock();
449
- }
450
- }
451
- }
452
- finally
453
- {
454
- _lock.ExitUpgradeableReadLock();
455
- }
456
- }
457
- }
458
- else
459
- {
460
- _lock.EnterUpgradeableReadLock();
461
- try
462
- {
463
- if (size < _pool.Count)
464
- {
465
- pool = _pool[size];
466
- if (pool == null)
467
- {
468
- _lock.EnterWriteLock();
469
- try
470
- {
471
- pool = _pool[size];
472
- if (pool == null)
473
- {
474
- pool = new ConcurrentStack<T[]>();
475
- _pool[size] = pool;
476
- }
477
- }
478
- finally
479
- {
480
- _lock.ExitWriteLock();
481
- }
482
- }
483
- }
484
- else
485
- {
486
- _lock.EnterWriteLock();
487
- try
488
- {
489
- while (_pool.Count <= size)
490
- {
491
- _pool.Add(null);
492
- }
493
- pool = _pool[size];
494
- if (pool == null)
495
- {
496
- pool = new ConcurrentStack<T[]>();
497
- _pool[size] = pool;
498
- }
499
- }
500
- finally
501
- {
502
- _lock.ExitWriteLock();
503
- }
504
- }
505
- }
506
- finally
507
- {
508
- _lock.ExitUpgradeableReadLock();
509
- }
510
- }
511
-
512
- if (!pool.TryPop(out value))
513
- {
514
- value = new T[size];
515
- }
516
-
517
- return new PooledResource<T[]>(value, _onRelease);
518
- }
519
-
520
- private static void Release(T[] resource)
521
- {
522
- _pool[resource.Length].Push(resource);
523
- }
524
- }
525
- #endif
526
-
527
- public readonly struct PooledResource<T> : IDisposable
528
- {
529
- public readonly T resource;
530
- private readonly Action<T> _onDispose;
531
- private readonly bool _initialized;
532
-
533
- internal PooledResource(T resource, Action<T> onDispose)
534
- {
535
- _initialized = true;
536
- this.resource = resource;
537
- _onDispose = onDispose;
538
- }
539
-
540
- public void Dispose()
541
- {
542
- if (!_initialized)
543
- {
544
- return;
545
- }
546
-
547
- _onDispose(resource);
548
- }
549
- }
550
- }
1
+ namespace WallstopStudios.UnityHelpers.Utils
2
+ {
3
+ using System;
4
+ using System.Collections.Generic;
5
+ using System.Diagnostics;
6
+ using System.Text;
7
+ using UnityEngine;
8
+ #if !SINGLE_THREADED
9
+ using System.Threading;
10
+ using System.Collections.Concurrent;
11
+ #else
12
+ using WallstopStudios.UnityHelpers.Core.Extension;
13
+ #endif
14
+ /// <summary>
15
+ /// Provides thread-safe pooled access to commonly used Unity coroutine yield instructions and StringBuilder instances.
16
+ /// This class helps reduce allocations by reusing frequently created objects.
17
+ /// </summary>
18
+ public static class Buffers
19
+ {
20
+ #if SINGLE_THREADED
21
+ private static readonly Dictionary<float, WaitForSeconds> WaitForSeconds = new();
22
+ private static readonly Dictionary<float, WaitForSecondsRealtime> WaitForSecondsRealtime =
23
+ new();
24
+ #else
25
+ private static readonly ConcurrentDictionary<float, WaitForSeconds> WaitForSeconds = new();
26
+ private static readonly ConcurrentDictionary<
27
+ float,
28
+ WaitForSecondsRealtime
29
+ > WaitForSecondsRealtime = new();
30
+ #endif
31
+
32
+ /// <summary>
33
+ /// Reusable WaitForFixedUpdate instance to avoid repeated allocations in coroutines.
34
+ /// Use this when waiting for the next fixed update frame.
35
+ /// </summary>
36
+ public static readonly WaitForFixedUpdate WaitForFixedUpdate = new();
37
+
38
+ /// <summary>
39
+ /// Reusable WaitForEndOfFrame instance to avoid repeated allocations in coroutines.
40
+ /// Use this when waiting for the end of the current frame.
41
+ /// </summary>
42
+ public static readonly WaitForEndOfFrame WaitForEndOfFrame = new();
43
+
44
+ /// <summary>
45
+ /// Generic pool for StringBuilder instances. Automatically clears the StringBuilder when returned to the pool.
46
+ /// Use this to reduce allocations when building strings.
47
+ /// </summary>
48
+ public static readonly WallstopGenericPool<StringBuilder> StringBuilder = new(
49
+ () => new StringBuilder(),
50
+ onRelease: builder => builder.Clear()
51
+ );
52
+
53
+ /// <summary>
54
+ /// Gets a pooled StringBuilder with at least the requested capacity.
55
+ /// </summary>
56
+ public static PooledResource<StringBuilder> GetStringBuilder(
57
+ int capacity,
58
+ out StringBuilder builder
59
+ )
60
+ {
61
+ PooledResource<StringBuilder> pooled = StringBuilder.Get(out builder);
62
+ if (builder.Capacity < capacity)
63
+ {
64
+ builder.Capacity = capacity;
65
+ }
66
+ return pooled;
67
+ }
68
+
69
+ /// <summary>
70
+ /// Gets a cached WaitForSeconds instance for the specified duration.
71
+ /// This method caches instances to avoid repeated allocations in coroutines.
72
+ /// </summary>
73
+ /// <param name="seconds">The duration to wait in seconds.</param>
74
+ /// <returns>A WaitForSeconds instance that waits for the specified duration.</returns>
75
+ /// <remarks>
76
+ /// IMPORTANT: Only use with CONSTANT time values, otherwise this is a memory leak.
77
+ /// DO NOT USE with random or variable values as each unique value creates a cached entry that persists forever.
78
+ /// </remarks>
79
+ public static WaitForSeconds GetWaitForSeconds(float seconds)
80
+ {
81
+ return WaitForSeconds.GetOrAdd(seconds, value => new WaitForSeconds(value));
82
+ }
83
+
84
+ /// <summary>
85
+ /// Gets a cached WaitForSecondsRealtime instance for the specified duration.
86
+ /// This method caches instances to avoid repeated allocations in coroutines.
87
+ /// Unlike WaitForSeconds, this uses unscaled (real) time.
88
+ /// </summary>
89
+ /// <param name="seconds">The duration to wait in real seconds (unaffected by Time.timeScale).</param>
90
+ /// <returns>A WaitForSecondsRealtime instance that waits for the specified duration.</returns>
91
+ /// <remarks>
92
+ /// IMPORTANT: Only use with CONSTANT time values, otherwise this is a memory leak.
93
+ /// DO NOT USE with random or variable values as each unique value creates a cached entry that persists forever.
94
+ /// </remarks>
95
+ public static WaitForSecondsRealtime GetWaitForSecondsRealTime(float seconds)
96
+ {
97
+ return WaitForSecondsRealtime.GetOrAdd(
98
+ seconds,
99
+ value => new WaitForSecondsRealtime(value)
100
+ );
101
+ }
102
+ }
103
+
104
+ /// <summary>
105
+ /// Provides thread-safe generic pools for commonly used collection types.
106
+ /// All collections are automatically cleared when returned to their respective pools.
107
+ /// </summary>
108
+ /// <typeparam name="T">The element type for the collections.</typeparam>
109
+ public static class Buffers<T>
110
+ {
111
+ /// <summary>
112
+ /// Generic pool for List&lt;T&gt; instances. Lists are automatically cleared when returned to the pool.
113
+ /// </summary>
114
+ public static readonly WallstopGenericPool<List<T>> List = new(
115
+ () => new List<T>(),
116
+ onRelease: list => list.Clear()
117
+ );
118
+
119
+ /// <summary>
120
+ /// Gets a pooled List with at least the requested capacity.
121
+ /// </summary>
122
+ public static PooledResource<List<T>> GetList(int capacity, out List<T> list)
123
+ {
124
+ PooledResource<List<T>> pooled = List.Get(out list);
125
+ if (list.Capacity < capacity)
126
+ {
127
+ list.Capacity = capacity;
128
+ }
129
+ return pooled;
130
+ }
131
+
132
+ /// <summary>
133
+ /// Generic pool for HashSet&lt;T&gt; instances. Sets are automatically cleared when returned to the pool.
134
+ /// </summary>
135
+ public static readonly WallstopGenericPool<HashSet<T>> HashSet = new(
136
+ () => new HashSet<T>(),
137
+ onRelease: set => set.Clear()
138
+ );
139
+
140
+ /// <summary>
141
+ /// Generic pool for Queue&lt;T&gt; instances. Queues are automatically cleared when returned to the pool.
142
+ /// </summary>
143
+ public static readonly WallstopGenericPool<Queue<T>> Queue = new(
144
+ () => new Queue<T>(),
145
+ onRelease: queue => queue.Clear()
146
+ );
147
+
148
+ /// <summary>
149
+ /// Generic pool for Stack&lt;T&gt; instances. Stacks are automatically cleared when returned to the pool.
150
+ /// </summary>
151
+ public static readonly WallstopGenericPool<Stack<T>> Stack = new(
152
+ () => new Stack<T>(),
153
+ onRelease: stack => stack.Clear()
154
+ );
155
+ }
156
+
157
+ public static class StopwatchBuffers
158
+ {
159
+ public static readonly WallstopGenericPool<Stopwatch> Stopwatch = new(
160
+ () => System.Diagnostics.Stopwatch.StartNew(),
161
+ onGet: stopwatch => stopwatch.Restart(),
162
+ onRelease: stopwatch => stopwatch.Stop()
163
+ );
164
+ }
165
+
166
+ /// <summary>
167
+ /// Provides thread-safe generic pools for set collections with custom comparers.
168
+ /// Includes factory methods to create pools with custom equality and comparison logic.
169
+ /// </summary>
170
+ /// <typeparam name="T">The element type for the sets.</typeparam>
171
+ public static class SetBuffers<T>
172
+ {
173
+ /// <summary>
174
+ /// Generic pool for SortedSet&lt;T&gt; instances using the default comparer.
175
+ /// Sets are automatically cleared when returned to the pool.
176
+ /// </summary>
177
+ public static readonly WallstopGenericPool<SortedSet<T>> SortedSet = new(
178
+ () => new SortedSet<T>(),
179
+ onRelease: set => set.Clear()
180
+ );
181
+
182
+ #if SINGLE_THREADED
183
+ private static readonly Dictionary<
184
+ IComparer<T>,
185
+ WallstopGenericPool<SortedSet<T>>
186
+ > SortedSetCache = new();
187
+ private static readonly Dictionary<
188
+ IEqualityComparer<T>,
189
+ WallstopGenericPool<HashSet<T>>
190
+ > HashSetCache = new();
191
+ #else
192
+ private static readonly ConcurrentDictionary<
193
+ IComparer<T>,
194
+ WallstopGenericPool<SortedSet<T>>
195
+ > SortedSetCache = new();
196
+ private static readonly ConcurrentDictionary<
197
+ IEqualityComparer<T>,
198
+ WallstopGenericPool<HashSet<T>>
199
+ > HashSetCache = new();
200
+ #endif
201
+
202
+ /// <summary>
203
+ /// Gets or creates a pool for SortedSet&lt;T&gt; instances that use the specified comparer.
204
+ /// The pool is cached and reused for subsequent calls with the same comparer instance.
205
+ /// </summary>
206
+ /// <param name="comparer">The comparer to use for sorting elements in the set.</param>
207
+ /// <returns>A pool that creates SortedSet instances with the specified comparer.</returns>
208
+ /// <exception cref="ArgumentNullException">Thrown when comparer is null.</exception>
209
+ public static WallstopGenericPool<SortedSet<T>> GetSortedSetPool(IComparer<T> comparer)
210
+ {
211
+ return comparer == null
212
+ ? throw new ArgumentNullException(nameof(comparer))
213
+ : SortedSetCache.GetOrAdd(
214
+ comparer,
215
+ inComparer => new WallstopGenericPool<SortedSet<T>>(
216
+ () => new SortedSet<T>(inComparer),
217
+ onRelease: set => set.Clear()
218
+ )
219
+ );
220
+ }
221
+
222
+ /// <summary>
223
+ /// Gets or creates a pool for HashSet&lt;T&gt; instances that use the specified equality comparer.
224
+ /// The pool is cached and reused for subsequent calls with the same comparer instance.
225
+ /// </summary>
226
+ /// <param name="comparer">The equality comparer to use for determining element equality.</param>
227
+ /// <returns>A pool that creates HashSet instances with the specified equality comparer.</returns>
228
+ /// <exception cref="ArgumentNullException">Thrown when comparer is null.</exception>
229
+ public static WallstopGenericPool<HashSet<T>> GetHashSetPool(IEqualityComparer<T> comparer)
230
+ {
231
+ return comparer == null
232
+ ? throw new ArgumentNullException(nameof(comparer))
233
+ : HashSetCache.GetOrAdd(
234
+ comparer,
235
+ inComparer => new WallstopGenericPool<HashSet<T>>(
236
+ () => new HashSet<T>(inComparer),
237
+ onRelease: set => set.Clear()
238
+ )
239
+ );
240
+ }
241
+
242
+ /// <summary>
243
+ /// Checks if a HashSet pool has been created for the specified equality comparer.
244
+ /// </summary>
245
+ /// <param name="comparer">The equality comparer to check for.</param>
246
+ /// <returns>True if a pool exists for this comparer; otherwise, false.</returns>
247
+ /// <exception cref="ArgumentNullException">Thrown when comparer is null.</exception>
248
+ public static bool HasHashSetPool(IEqualityComparer<T> comparer)
249
+ {
250
+ if (comparer == null)
251
+ {
252
+ throw new ArgumentNullException(nameof(comparer));
253
+ }
254
+
255
+ return HashSetCache.ContainsKey(comparer);
256
+ }
257
+
258
+ /// <summary>
259
+ /// Checks if a SortedSet pool has been created for the specified comparer.
260
+ /// </summary>
261
+ /// <param name="comparer">The comparer to check for.</param>
262
+ /// <returns>True if a pool exists for this comparer; otherwise, false.</returns>
263
+ /// <exception cref="ArgumentNullException">Thrown when comparer is null.</exception>
264
+ public static bool HasSortedSetPool(IComparer<T> comparer)
265
+ {
266
+ if (comparer == null)
267
+ {
268
+ throw new ArgumentNullException(nameof(comparer));
269
+ }
270
+
271
+ return SortedSetCache.ContainsKey(comparer);
272
+ }
273
+
274
+ /// <summary>
275
+ /// Destroys the HashSet pool associated with the specified equality comparer and disposes of all pooled instances.
276
+ /// </summary>
277
+ /// <param name="comparer">The equality comparer whose pool should be destroyed.</param>
278
+ /// <returns>True if the pool was found and destroyed; false if no pool existed for this comparer.</returns>
279
+ /// <exception cref="ArgumentNullException">Thrown when comparer is null.</exception>
280
+ public static bool DestroyHashSetPool(IEqualityComparer<T> comparer)
281
+ {
282
+ if (comparer == null)
283
+ {
284
+ throw new ArgumentNullException(nameof(comparer));
285
+ }
286
+
287
+ if (!HashSetCache.TryRemove(comparer, out WallstopGenericPool<HashSet<T>> pool))
288
+ {
289
+ return false;
290
+ }
291
+ pool.Dispose();
292
+ return true;
293
+ }
294
+
295
+ /// <summary>
296
+ /// Destroys the SortedSet pool associated with the specified comparer and disposes of all pooled instances.
297
+ /// </summary>
298
+ /// <param name="comparer">The comparer whose pool should be destroyed.</param>
299
+ /// <returns>True if the pool was found and destroyed; false if no pool existed for this comparer.</returns>
300
+ /// <exception cref="ArgumentNullException">Thrown when comparer is null.</exception>
301
+ public static bool DestroySortedSetPool(IComparer<T> comparer)
302
+ {
303
+ if (comparer == null)
304
+ {
305
+ throw new ArgumentNullException(nameof(comparer));
306
+ }
307
+
308
+ if (!SortedSetCache.TryRemove(comparer, out WallstopGenericPool<SortedSet<T>> pool))
309
+ {
310
+ return false;
311
+ }
312
+ pool.Dispose();
313
+ return true;
314
+ }
315
+ }
316
+
317
+ /// <summary>
318
+ /// Provides a thread-safe generic pool for LinkedList instances.
319
+ /// </summary>
320
+ /// <typeparam name="T">The element type for the linked list.</typeparam>
321
+ public static class LinkedListBuffer<T>
322
+ {
323
+ /// <summary>
324
+ /// Generic pool for LinkedList&lt;T&gt; instances. Lists are automatically cleared when returned to the pool.
325
+ /// </summary>
326
+ public static readonly WallstopGenericPool<LinkedList<T>> LinkedList = new(
327
+ () => new LinkedList<T>(),
328
+ onRelease: linkedList => linkedList.Clear()
329
+ );
330
+ }
331
+
332
+ /// <summary>
333
+ /// Provides thread-safe generic pools for dictionary types with custom comparers.
334
+ /// Includes factory methods to create pools with custom equality and comparison logic.
335
+ /// </summary>
336
+ /// <typeparam name="TKey">The key type for the dictionaries.</typeparam>
337
+ /// <typeparam name="TValue">The value type for the dictionaries.</typeparam>
338
+ public static class DictionaryBuffer<TKey, TValue>
339
+ {
340
+ /// <summary>
341
+ /// Generic pool for Dictionary&lt;TKey, TValue&gt; instances using the default equality comparer.
342
+ /// Dictionaries are automatically cleared when returned to the pool.
343
+ /// </summary>
344
+ public static readonly WallstopGenericPool<Dictionary<TKey, TValue>> Dictionary = new(
345
+ () => new Dictionary<TKey, TValue>(),
346
+ onRelease: dictionary => dictionary.Clear()
347
+ );
348
+
349
+ /// <summary>
350
+ /// Generic pool for SortedDictionary&lt;TKey, TValue&gt; instances using the default comparer.
351
+ /// Dictionaries are automatically cleared when returned to the pool.
352
+ /// </summary>
353
+ public static readonly WallstopGenericPool<
354
+ SortedDictionary<TKey, TValue>
355
+ > SortedDictionary = new(
356
+ () => new SortedDictionary<TKey, TValue>(),
357
+ onRelease: sortedDictionary => sortedDictionary.Clear()
358
+ );
359
+
360
+ #if SINGLE_THREADED
361
+ private static readonly Dictionary<
362
+ IEqualityComparer<TKey>,
363
+ WallstopGenericPool<Dictionary<TKey, TValue>>
364
+ > DictionaryCache = new();
365
+ private static readonly Dictionary<
366
+ IComparer<TKey>,
367
+ WallstopGenericPool<SortedDictionary<TKey, TValue>>
368
+ > SortedDictionaryCache = new();
369
+ #else
370
+ private static readonly ConcurrentDictionary<
371
+ IEqualityComparer<TKey>,
372
+ WallstopGenericPool<Dictionary<TKey, TValue>>
373
+ > DictionaryCache = new();
374
+ private static readonly ConcurrentDictionary<
375
+ IComparer<TKey>,
376
+ WallstopGenericPool<SortedDictionary<TKey, TValue>>
377
+ > SortedDictionaryCache = new();
378
+ #endif
379
+
380
+ /// <summary>
381
+ /// Gets or creates a pool for Dictionary&lt;TKey, TValue&gt; instances that use the specified equality comparer.
382
+ /// The pool is cached and reused for subsequent calls with the same comparer instance.
383
+ /// </summary>
384
+ /// <param name="comparer">The equality comparer to use for key equality.</param>
385
+ /// <returns>A pool that creates Dictionary instances with the specified equality comparer.</returns>
386
+ /// <exception cref="ArgumentNullException">Thrown when comparer is null.</exception>
387
+ public static WallstopGenericPool<Dictionary<TKey, TValue>> GetDictionaryPool(
388
+ IEqualityComparer<TKey> comparer
389
+ )
390
+ {
391
+ return comparer == null
392
+ ? throw new ArgumentNullException(nameof(comparer))
393
+ : DictionaryCache.GetOrAdd(
394
+ comparer,
395
+ inComparer => new WallstopGenericPool<Dictionary<TKey, TValue>>(
396
+ () => new Dictionary<TKey, TValue>(inComparer),
397
+ onRelease: dictionary => dictionary.Clear()
398
+ )
399
+ );
400
+ }
401
+
402
+ /// <summary>
403
+ /// Gets or creates a pool for SortedDictionary&lt;TKey, TValue&gt; instances that use the specified comparer.
404
+ /// The pool is cached and reused for subsequent calls with the same comparer instance.
405
+ /// </summary>
406
+ /// <param name="comparer">The comparer to use for sorting keys.</param>
407
+ /// <returns>A pool that creates SortedDictionary instances with the specified comparer.</returns>
408
+ /// <exception cref="ArgumentNullException">Thrown when comparer is null.</exception>
409
+ public static WallstopGenericPool<SortedDictionary<TKey, TValue>> GetSortedDictionaryPool(
410
+ IComparer<TKey> comparer
411
+ )
412
+ {
413
+ return comparer == null
414
+ ? throw new ArgumentNullException(nameof(comparer))
415
+ : SortedDictionaryCache.GetOrAdd(
416
+ comparer,
417
+ inComparer => new WallstopGenericPool<SortedDictionary<TKey, TValue>>(
418
+ () => new SortedDictionary<TKey, TValue>(inComparer),
419
+ onRelease: dictionary => dictionary.Clear()
420
+ )
421
+ );
422
+ }
423
+
424
+ /// <summary>
425
+ /// Checks if a Dictionary pool has been created for the specified equality comparer.
426
+ /// </summary>
427
+ /// <param name="comparer">The equality comparer to check for.</param>
428
+ /// <returns>True if a pool exists for this comparer; otherwise, false.</returns>
429
+ /// <exception cref="ArgumentNullException">Thrown when comparer is null.</exception>
430
+ public static bool HasDictionaryPool(IEqualityComparer<TKey> comparer)
431
+ {
432
+ if (comparer == null)
433
+ {
434
+ throw new ArgumentNullException(nameof(comparer));
435
+ }
436
+
437
+ return DictionaryCache.ContainsKey(comparer);
438
+ }
439
+
440
+ /// <summary>
441
+ /// Checks if a SortedDictionary pool has been created for the specified comparer.
442
+ /// </summary>
443
+ /// <param name="comparer">The comparer to check for.</param>
444
+ /// <returns>True if a pool exists for this comparer; otherwise, false.</returns>
445
+ /// <exception cref="ArgumentNullException">Thrown when comparer is null.</exception>
446
+ public static bool HasSortedDictionaryPool(IComparer<TKey> comparer)
447
+ {
448
+ if (comparer == null)
449
+ {
450
+ throw new ArgumentNullException(nameof(comparer));
451
+ }
452
+
453
+ return SortedDictionaryCache.ContainsKey(comparer);
454
+ }
455
+
456
+ /// <summary>
457
+ /// Destroys the Dictionary pool associated with the specified equality comparer and disposes of all pooled instances.
458
+ /// </summary>
459
+ /// <param name="comparer">The equality comparer whose pool should be destroyed.</param>
460
+ /// <returns>True if the pool was found and destroyed; false if no pool existed for this comparer.</returns>
461
+ /// <exception cref="ArgumentNullException">Thrown when comparer is null.</exception>
462
+ public static bool DestroyDictionaryPool(IEqualityComparer<TKey> comparer)
463
+ {
464
+ if (comparer == null)
465
+ {
466
+ throw new ArgumentNullException(nameof(comparer));
467
+ }
468
+ if (
469
+ !DictionaryCache.TryRemove(
470
+ comparer,
471
+ out WallstopGenericPool<Dictionary<TKey, TValue>> pool
472
+ )
473
+ )
474
+ {
475
+ return false;
476
+ }
477
+ pool.Dispose();
478
+ return true;
479
+ }
480
+
481
+ /// <summary>
482
+ /// Destroys the SortedDictionary pool associated with the specified comparer and disposes of all pooled instances.
483
+ /// </summary>
484
+ /// <param name="comparer">The comparer whose pool should be destroyed.</param>
485
+ /// <returns>True if the pool was found and destroyed; false if no pool existed for this comparer.</returns>
486
+ /// <exception cref="ArgumentNullException">Thrown when comparer is null.</exception>
487
+ public static bool DestroySortedDictionaryPool(IComparer<TKey> comparer)
488
+ {
489
+ if (comparer == null)
490
+ {
491
+ throw new ArgumentNullException(nameof(comparer));
492
+ }
493
+
494
+ if (
495
+ !SortedDictionaryCache.TryRemove(
496
+ comparer,
497
+ out WallstopGenericPool<SortedDictionary<TKey, TValue>> pool
498
+ )
499
+ )
500
+ {
501
+ return false;
502
+ }
503
+
504
+ pool.Dispose();
505
+ return true;
506
+ }
507
+ }
508
+
509
+ #if SINGLE_THREADED
510
+ /// <summary>
511
+ /// A generic object pool that manages reusable instances of type T.
512
+ /// This single-threaded implementation uses a Stack for storage.
513
+ /// </summary>
514
+ /// <typeparam name="T">The type of objects to pool.</typeparam>
515
+ public sealed class WallstopGenericPool<T> : IDisposable
516
+ {
517
+ /// <summary>
518
+ /// Gets the current number of instances in the pool.
519
+ /// </summary>
520
+ internal int Count => _pool.Count;
521
+
522
+ private readonly Func<T> _producer;
523
+ private readonly Action<T> _onGet;
524
+ private readonly Action<T> _onRelease;
525
+ private readonly Action<T> _onDispose;
526
+
527
+ private readonly Stack<T> _pool = new();
528
+
529
+ /// <summary>
530
+ /// Creates a new generic pool with the specified producer function and optional callbacks.
531
+ /// </summary>
532
+ /// <param name="producer">Function that creates new instances when the pool is empty.</param>
533
+ /// <param name="preWarmCount">Number of instances to create and add to the pool during initialization. Default is 0.</param>
534
+ /// <param name="onGet">Optional callback invoked when an instance is retrieved from the pool.</param>
535
+ /// <param name="onRelease">Optional callback invoked when an instance is returned to the pool.</param>
536
+ /// <param name="onDisposal">Optional callback invoked when the pool is disposed for each pooled instance.</param>
537
+ /// <exception cref="ArgumentNullException">Thrown when producer is null.</exception>
538
+ public WallstopGenericPool(
539
+ Func<T> producer,
540
+ int preWarmCount = 0,
541
+ Action<T> onGet = null,
542
+ Action<T> onRelease = null,
543
+ Action<T> onDisposal = null
544
+ )
545
+ {
546
+ _producer = producer ?? throw new ArgumentNullException(nameof(producer));
547
+ _onGet = onGet;
548
+ _onRelease = onRelease ?? (_ => { });
549
+ _onRelease += _pool.Push;
550
+ _onDispose = onDisposal;
551
+ for (int i = 0; i < preWarmCount; ++i)
552
+ {
553
+ T value = _producer();
554
+ _onGet?.Invoke(value);
555
+ _onRelease(value);
556
+ }
557
+ }
558
+
559
+ /// <summary>
560
+ /// Gets a pooled resource. When disposed, the resource is automatically returned to the pool.
561
+ /// If the pool is empty, a new instance is created using the producer function.
562
+ /// </summary>
563
+ /// <returns>A PooledResource wrapping the retrieved instance.</returns>
564
+ public PooledResource<T> Get()
565
+ {
566
+ return Get(out _);
567
+ }
568
+
569
+ /// <summary>
570
+ /// Gets a pooled resource and outputs the value. When disposed, the resource is automatically returned to the pool.
571
+ /// If the pool is empty, a new instance is created using the producer function.
572
+ /// </summary>
573
+ /// <param name="value">The retrieved instance.</param>
574
+ /// <returns>A PooledResource wrapping the retrieved instance.</returns>
575
+ public PooledResource<T> Get(out T value)
576
+ {
577
+ if (!_pool.TryPop(out value))
578
+ {
579
+ value = _producer();
580
+ }
581
+
582
+ _onGet?.Invoke(value);
583
+ return new PooledResource<T>(value, _onRelease);
584
+ }
585
+
586
+ /// <summary>
587
+ /// Disposes the pool. If an onDisposal callback was provided, it is invoked for each pooled instance.
588
+ /// Otherwise, the pool is simply cleared.
589
+ /// </summary>
590
+ public void Dispose()
591
+ {
592
+ if (_onDispose == null)
593
+ {
594
+ _pool.Clear();
595
+ return;
596
+ }
597
+
598
+ while (_pool.TryPop(out T value))
599
+ {
600
+ _onDispose(value);
601
+ }
602
+ }
603
+ }
604
+ #else
605
+ /// <summary>
606
+ /// A thread-safe generic object pool that manages reusable instances of type T.
607
+ /// This multi-threaded implementation uses a ConcurrentStack for thread-safe storage.
608
+ /// </summary>
609
+ /// <typeparam name="T">The type of objects to pool.</typeparam>
610
+ public sealed class WallstopGenericPool<T> : IDisposable
611
+ {
612
+ /// <summary>
613
+ /// Gets the current number of instances in the pool.
614
+ /// </summary>
615
+ internal int Count => _pool.Count;
616
+
617
+ private readonly Func<T> _producer;
618
+ private readonly Action<T> _onGet;
619
+ private readonly Action<T> _onRelease;
620
+ private readonly Action<T> _onDispose;
621
+
622
+ private readonly ConcurrentStack<T> _pool = new();
623
+
624
+ /// <summary>
625
+ /// Creates a new thread-safe generic pool with the specified producer function and optional callbacks.
626
+ /// </summary>
627
+ /// <param name="producer">Function that creates new instances when the pool is empty.</param>
628
+ /// <param name="preWarmCount">Number of instances to create and add to the pool during initialization. Default is 0.</param>
629
+ /// <param name="onGet">Optional callback invoked when an instance is retrieved from the pool.</param>
630
+ /// <param name="onRelease">Optional callback invoked when an instance is returned to the pool.</param>
631
+ /// <param name="onDisposal">Optional callback invoked when the pool is disposed for each pooled instance.</param>
632
+ /// <exception cref="ArgumentNullException">Thrown when producer is null.</exception>
633
+ public WallstopGenericPool(
634
+ Func<T> producer,
635
+ int preWarmCount = 0,
636
+ Action<T> onGet = null,
637
+ Action<T> onRelease = null,
638
+ Action<T> onDisposal = null
639
+ )
640
+ {
641
+ _producer = producer ?? throw new ArgumentNullException(nameof(producer));
642
+ _onGet = onGet;
643
+ _onRelease = onRelease ?? (_ => { });
644
+ _onRelease += _pool.Push;
645
+ _onDispose = onDisposal;
646
+ for (int i = 0; i < preWarmCount; ++i)
647
+ {
648
+ T value = _producer();
649
+ _onGet?.Invoke(value);
650
+ _onRelease(value);
651
+ }
652
+ }
653
+
654
+ /// <summary>
655
+ /// Gets a pooled resource. When disposed, the resource is automatically returned to the pool.
656
+ /// If the pool is empty, a new instance is created using the producer function.
657
+ /// This method is thread-safe.
658
+ /// </summary>
659
+ /// <returns>A PooledResource wrapping the retrieved instance.</returns>
660
+ public PooledResource<T> Get()
661
+ {
662
+ return Get(out _);
663
+ }
664
+
665
+ /// <summary>
666
+ /// Gets a pooled resource and outputs the value. When disposed, the resource is automatically returned to the pool.
667
+ /// If the pool is empty, a new instance is created using the producer function.
668
+ /// This method is thread-safe.
669
+ /// </summary>
670
+ /// <param name="value">The retrieved instance.</param>
671
+ /// <returns>A PooledResource wrapping the retrieved instance.</returns>
672
+ public PooledResource<T> Get(out T value)
673
+ {
674
+ if (!_pool.TryPop(out value))
675
+ {
676
+ value = _producer();
677
+ }
678
+
679
+ _onGet?.Invoke(value);
680
+ return new PooledResource<T>(value, _onRelease);
681
+ }
682
+
683
+ /// <summary>
684
+ /// Disposes the pool. If an onDisposal callback was provided, it is invoked for each pooled instance.
685
+ /// Otherwise, the pool is simply cleared.
686
+ /// </summary>
687
+ public void Dispose()
688
+ {
689
+ if (_onDispose == null)
690
+ {
691
+ _pool.Clear();
692
+ return;
693
+ }
694
+
695
+ while (_pool.TryPop(out T value))
696
+ {
697
+ _onDispose(value);
698
+ }
699
+ }
700
+ }
701
+ #endif
702
+
703
+ #if SINGLE_THREADED
704
+ /// <summary>
705
+ /// A static array pool that provides pooled arrays of specific sizes.
706
+ /// Arrays are cleared (set to default values) when returned to the pool.
707
+ /// This single-threaded implementation uses Dictionary and List for storage.
708
+ /// </summary>
709
+ /// <typeparam name="T">The element type for the arrays.</typeparam>
710
+ public static class WallstopArrayPool<T>
711
+ {
712
+ private static readonly Dictionary<int, List<T[]>> _pool = new();
713
+ private static readonly Action<T[]> _onDispose = Release;
714
+
715
+ /// <summary>
716
+ /// Gets a pooled array of the specified size. When disposed, the array is cleared and returned to the pool.
717
+ /// </summary>
718
+ /// <param name="size">The size of the array to retrieve. Must be non-negative.</param>
719
+ /// <returns>A PooledResource wrapping an array of the specified size.</returns>
720
+ /// <exception cref="ArgumentOutOfRangeException">Thrown when size is negative.</exception>
721
+ public static PooledResource<T[]> Get(int size)
722
+ {
723
+ return Get(size, out _);
724
+ }
725
+
726
+ /// <summary>
727
+ /// Gets a pooled array of the specified size and outputs the value. When disposed, the array is cleared and returned to the pool.
728
+ /// </summary>
729
+ /// <param name="size">The size of the array to retrieve. Must be non-negative.</param>
730
+ /// <param name="value">The retrieved array.</param>
731
+ /// <returns>A PooledResource wrapping an array of the specified size.</returns>
732
+ /// <exception cref="ArgumentOutOfRangeException">Thrown when size is negative.</exception>
733
+ public static PooledResource<T[]> Get(int size, out T[] value)
734
+ {
735
+ switch (size)
736
+ {
737
+ case < 0:
738
+ {
739
+ throw new ArgumentOutOfRangeException(
740
+ nameof(size),
741
+ size,
742
+ "Must be non-negative."
743
+ );
744
+ }
745
+ case 0:
746
+ {
747
+ value = Array.Empty<T>();
748
+ return new PooledResource<T[]>(value, _ => { });
749
+ }
750
+ }
751
+
752
+ if (!_pool.TryGetValue(size, out List<T[]> pool))
753
+ {
754
+ pool = new List<T[]>();
755
+ _pool[size] = pool;
756
+ }
757
+
758
+ if (pool.Count == 0)
759
+ {
760
+ value = new T[size];
761
+ return new PooledResource<T[]>(value, _onDispose);
762
+ }
763
+
764
+ int lastIndex = pool.Count - 1;
765
+ value = pool[lastIndex];
766
+ pool.RemoveAt(lastIndex);
767
+ return new PooledResource<T[]>(value, _onDispose);
768
+ }
769
+
770
+ private static void Release(T[] resource)
771
+ {
772
+ int length = resource.Length;
773
+ Array.Clear(resource, 0, length);
774
+ if (!_pool.TryGetValue(length, out List<T[]> pool))
775
+ {
776
+ pool = new List<T[]>();
777
+ _pool[resource.Length] = pool;
778
+ }
779
+ pool.Add(resource);
780
+ }
781
+ }
782
+ #else
783
+ /// <summary>
784
+ /// A thread-safe static array pool that provides pooled arrays of specific sizes.
785
+ /// Arrays are cleared (set to default values) when returned to the pool.
786
+ /// This multi-threaded implementation uses ConcurrentDictionary and ConcurrentStack for thread-safe storage.
787
+ /// </summary>
788
+ /// <typeparam name="T">The element type for the arrays.</typeparam>
789
+ public static class WallstopArrayPool<T>
790
+ {
791
+ private static readonly ConcurrentDictionary<int, ConcurrentStack<T[]>> _pool = new();
792
+ private static readonly Action<T[]> _onRelease = Release;
793
+
794
+ /// <summary>
795
+ /// Gets a pooled array of the specified size. When disposed, the array is cleared and returned to the pool.
796
+ /// This method is thread-safe.
797
+ /// </summary>
798
+ /// <param name="size">The size of the array to retrieve. Must be non-negative.</param>
799
+ /// <returns>A PooledResource wrapping an array of the specified size.</returns>
800
+ /// <exception cref="ArgumentOutOfRangeException">Thrown when size is negative.</exception>
801
+ public static PooledResource<T[]> Get(int size)
802
+ {
803
+ return Get(size, out _);
804
+ }
805
+
806
+ /// <summary>
807
+ /// Gets a pooled array of the specified size and outputs the value. When disposed, the array is cleared and returned to the pool.
808
+ /// This method is thread-safe.
809
+ /// </summary>
810
+ /// <param name="size">The size of the array to retrieve. Must be non-negative.</param>
811
+ /// <param name="value">The retrieved array.</param>
812
+ /// <returns>A PooledResource wrapping an array of the specified size.</returns>
813
+ /// <exception cref="ArgumentOutOfRangeException">Thrown when size is negative.</exception>
814
+ public static PooledResource<T[]> Get(int size, out T[] value)
815
+ {
816
+ switch (size)
817
+ {
818
+ case < 0:
819
+ {
820
+ throw new ArgumentOutOfRangeException(
821
+ nameof(size),
822
+ size,
823
+ "Must be non-negative."
824
+ );
825
+ }
826
+ case 0:
827
+ {
828
+ value = Array.Empty<T>();
829
+ return new PooledResource<T[]>(value, _ => { });
830
+ }
831
+ }
832
+
833
+ ConcurrentStack<T[]> result = _pool.GetOrAdd(size, _ => new ConcurrentStack<T[]>());
834
+ if (!result.TryPop(out value))
835
+ {
836
+ value = new T[size];
837
+ }
838
+
839
+ return new PooledResource<T[]>(value, _onRelease);
840
+ }
841
+
842
+ private static void Release(T[] resource)
843
+ {
844
+ int length = resource.Length;
845
+ Array.Clear(resource, 0, length);
846
+ ConcurrentStack<T[]> result = _pool.GetOrAdd(length, _ => new ConcurrentStack<T[]>());
847
+ result.Push(resource);
848
+ }
849
+ }
850
+ #endif
851
+
852
+ #if SINGLE_THREADED
853
+ /// <summary>
854
+ /// A fast static array pool optimized for index-based lookup with minimal overhead.
855
+ /// Unlike WallstopArrayPool, arrays are NOT cleared when returned to the pool, providing better performance.
856
+ /// This single-threaded implementation uses a List of Stacks indexed by array size for O(1) lookups.
857
+ /// </summary>
858
+ /// <typeparam name="T">The element type for the arrays.</typeparam>
859
+ /// <remarks>
860
+ /// IMPORTANT: This pool does NOT clear arrays on release. Callers must manually clear arrays if needed.
861
+ /// This design trades safety for performance in scenarios where array contents don't need to be reset.
862
+ /// </remarks>
863
+ public static class WallstopFastArrayPool<T>
864
+ {
865
+ private static readonly List<Stack<T[]>> _pool = new();
866
+ private static readonly Action<T[]> _onRelease = Release;
867
+
868
+ /// <summary>
869
+ /// Gets a pooled array of the specified size. When disposed, the array is returned to the pool WITHOUT being cleared.
870
+ /// </summary>
871
+ /// <param name="size">The size of the array to retrieve. Must be non-negative.</param>
872
+ /// <returns>A PooledResource wrapping an array of the specified size.</returns>
873
+ /// <exception cref="ArgumentOutOfRangeException">Thrown when size is negative.</exception>
874
+ /// <remarks>Arrays are NOT cleared on return. The caller is responsible for clearing if needed.</remarks>
875
+ public static PooledResource<T[]> Get(int size)
876
+ {
877
+ return Get(size, out _);
878
+ }
879
+
880
+ /// <summary>
881
+ /// Gets a pooled array of the specified size and outputs the value. When disposed, the array is returned to the pool WITHOUT being cleared.
882
+ /// </summary>
883
+ /// <param name="size">The size of the array to retrieve. Must be non-negative.</param>
884
+ /// <param name="value">The retrieved array.</param>
885
+ /// <returns>A PooledResource wrapping an array of the specified size.</returns>
886
+ /// <exception cref="ArgumentOutOfRangeException">Thrown when size is negative.</exception>
887
+ /// <remarks>Arrays are NOT cleared on return. The caller is responsible for clearing if needed.</remarks>
888
+ public static PooledResource<T[]> Get(int size, out T[] value)
889
+ {
890
+ switch (size)
891
+ {
892
+ case < 0:
893
+ {
894
+ throw new ArgumentOutOfRangeException(
895
+ nameof(size),
896
+ size,
897
+ "Must be non-negative."
898
+ );
899
+ }
900
+ case 0:
901
+ {
902
+ value = Array.Empty<T>();
903
+ return new PooledResource<T[]>(value, _ => { });
904
+ }
905
+ }
906
+
907
+ while (_pool.Count <= size)
908
+ {
909
+ _pool.Add(null);
910
+ }
911
+
912
+ Stack<T[]> pool = _pool[size];
913
+ if (pool == null)
914
+ {
915
+ pool = new Stack<T[]>();
916
+ _pool[size] = pool;
917
+ }
918
+
919
+ if (!pool.TryPop(out value))
920
+ {
921
+ value = new T[size];
922
+ }
923
+
924
+ return new PooledResource<T[]>(value, _onRelease);
925
+ }
926
+
927
+ private static void Release(T[] resource)
928
+ {
929
+ _pool[resource.Length].Push(resource);
930
+ }
931
+ }
932
+ #else
933
+ /// <summary>
934
+ /// A thread-safe fast static array pool optimized for index-based lookup with minimal overhead.
935
+ /// Unlike WallstopArrayPool, arrays are NOT cleared when returned to the pool, providing better performance.
936
+ /// This multi-threaded implementation uses a List of ConcurrentStacks with ReaderWriterLockSlim for thread-safe index access.
937
+ /// </summary>
938
+ /// <typeparam name="T">The element type for the arrays.</typeparam>
939
+ /// <remarks>
940
+ /// IMPORTANT: This pool does NOT clear arrays on release. Callers must manually clear arrays if needed.
941
+ /// This design trades safety for performance in scenarios where array contents don't need to be reset.
942
+ /// </remarks>
943
+ public static class WallstopFastArrayPool<T>
944
+ {
945
+ private static readonly ReaderWriterLockSlim _lock = new();
946
+ private static readonly List<ConcurrentStack<T[]>> _pool = new();
947
+ private static readonly Action<T[]> _onRelease = Release;
948
+
949
+ /// <summary>
950
+ /// Gets a pooled array of the specified size. When disposed, the array is returned to the pool WITHOUT being cleared.
951
+ /// This method is thread-safe.
952
+ /// </summary>
953
+ /// <param name="size">The size of the array to retrieve. Must be non-negative.</param>
954
+ /// <returns>A PooledResource wrapping an array of the specified size.</returns>
955
+ /// <exception cref="ArgumentOutOfRangeException">Thrown when size is negative.</exception>
956
+ /// <remarks>Arrays are NOT cleared on return. The caller is responsible for clearing if needed.</remarks>
957
+ public static PooledResource<T[]> Get(int size)
958
+ {
959
+ return Get(size, out _);
960
+ }
961
+
962
+ /// <summary>
963
+ /// Gets a pooled array of the specified size and outputs the value. When disposed, the array is returned to the pool WITHOUT being cleared.
964
+ /// This method is thread-safe.
965
+ /// </summary>
966
+ /// <param name="size">The size of the array to retrieve. Must be non-negative.</param>
967
+ /// <param name="value">The retrieved array.</param>
968
+ /// <returns>A PooledResource wrapping an array of the specified size.</returns>
969
+ /// <exception cref="ArgumentOutOfRangeException">Thrown when size is negative.</exception>
970
+ /// <remarks>Arrays are NOT cleared on return. The caller is responsible for clearing if needed.</remarks>
971
+ public static PooledResource<T[]> Get(int size, out T[] value)
972
+ {
973
+ switch (size)
974
+ {
975
+ case < 0:
976
+ {
977
+ throw new ArgumentOutOfRangeException(
978
+ nameof(size),
979
+ size,
980
+ "Must be non-negative."
981
+ );
982
+ }
983
+ case 0:
984
+ {
985
+ value = Array.Empty<T>();
986
+ return new PooledResource<T[]>(value, _ => { });
987
+ }
988
+ }
989
+
990
+ bool withinRange;
991
+ ConcurrentStack<T[]> pool = null;
992
+ _lock.EnterReadLock();
993
+ try
994
+ {
995
+ withinRange = size < _pool.Count;
996
+ if (withinRange)
997
+ {
998
+ pool = _pool[size];
999
+ }
1000
+ }
1001
+ finally
1002
+ {
1003
+ _lock.ExitReadLock();
1004
+ }
1005
+
1006
+ if (withinRange)
1007
+ {
1008
+ if (pool == null)
1009
+ {
1010
+ _lock.EnterUpgradeableReadLock();
1011
+ try
1012
+ {
1013
+ pool = _pool[size];
1014
+ if (pool == null)
1015
+ {
1016
+ _lock.EnterWriteLock();
1017
+ try
1018
+ {
1019
+ pool = _pool[size];
1020
+ if (pool == null)
1021
+ {
1022
+ pool = new ConcurrentStack<T[]>();
1023
+ _pool[size] = pool;
1024
+ }
1025
+ }
1026
+ finally
1027
+ {
1028
+ _lock.ExitWriteLock();
1029
+ }
1030
+ }
1031
+ }
1032
+ finally
1033
+ {
1034
+ _lock.ExitUpgradeableReadLock();
1035
+ }
1036
+ }
1037
+ }
1038
+ else
1039
+ {
1040
+ _lock.EnterUpgradeableReadLock();
1041
+ try
1042
+ {
1043
+ if (size < _pool.Count)
1044
+ {
1045
+ pool = _pool[size];
1046
+ if (pool == null)
1047
+ {
1048
+ _lock.EnterWriteLock();
1049
+ try
1050
+ {
1051
+ pool = _pool[size];
1052
+ if (pool == null)
1053
+ {
1054
+ pool = new ConcurrentStack<T[]>();
1055
+ _pool[size] = pool;
1056
+ }
1057
+ }
1058
+ finally
1059
+ {
1060
+ _lock.ExitWriteLock();
1061
+ }
1062
+ }
1063
+ }
1064
+ else
1065
+ {
1066
+ _lock.EnterWriteLock();
1067
+ try
1068
+ {
1069
+ while (_pool.Count <= size)
1070
+ {
1071
+ _pool.Add(null);
1072
+ }
1073
+ pool = _pool[size];
1074
+ if (pool == null)
1075
+ {
1076
+ pool = new ConcurrentStack<T[]>();
1077
+ _pool[size] = pool;
1078
+ }
1079
+ }
1080
+ finally
1081
+ {
1082
+ _lock.ExitWriteLock();
1083
+ }
1084
+ }
1085
+ }
1086
+ finally
1087
+ {
1088
+ _lock.ExitUpgradeableReadLock();
1089
+ }
1090
+ }
1091
+
1092
+ if (!pool.TryPop(out value))
1093
+ {
1094
+ value = new T[size];
1095
+ }
1096
+
1097
+ return new PooledResource<T[]>(value, _onRelease);
1098
+ }
1099
+
1100
+ private static void Release(T[] resource)
1101
+ {
1102
+ _pool[resource.Length].Push(resource);
1103
+ }
1104
+ }
1105
+ #endif
1106
+
1107
+ /// <summary>
1108
+ /// A readonly struct that wraps a pooled resource and automatically returns it to the pool when disposed.
1109
+ /// This type is designed to be used with 'using' statements to ensure resources are properly returned.
1110
+ /// </summary>
1111
+ /// <typeparam name="T">The type of the pooled resource.</typeparam>
1112
+ /// <remarks>
1113
+ /// This struct implements IDisposable to enable automatic resource return via 'using' statements.
1114
+ /// The resource is returned to its pool when Dispose is called, typically at the end of a 'using' block.
1115
+ /// </remarks>
1116
+ public struct PooledResource<T> : IDisposable
1117
+ {
1118
+ /// <summary>
1119
+ /// The pooled resource instance. Access this to use the resource.
1120
+ /// </summary>
1121
+ public readonly T resource;
1122
+ private readonly Action<T> _onDispose;
1123
+ private bool _initialized;
1124
+
1125
+ /// <summary>
1126
+ /// Creates a new PooledResource wrapping the specified resource with a disposal action.
1127
+ /// </summary>
1128
+ /// <param name="resource">The resource to wrap.</param>
1129
+ /// <param name="onDispose">The action to invoke when disposing, typically returning the resource to a pool.</param>
1130
+ public PooledResource(T resource, Action<T> onDispose)
1131
+ {
1132
+ _initialized = true;
1133
+ this.resource = resource;
1134
+ _onDispose = onDispose;
1135
+ }
1136
+
1137
+ /// <summary>
1138
+ /// Disposes the resource by invoking the disposal action, typically returning it to the pool.
1139
+ /// This method is automatically called at the end of a 'using' block.
1140
+ /// </summary>
1141
+ public void Dispose()
1142
+ {
1143
+ if (!_initialized)
1144
+ {
1145
+ return;
1146
+ }
1147
+ _initialized = false;
1148
+ _onDispose(resource);
1149
+ }
1150
+ }
1151
+ }