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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1449) hide show
  1. package/.config/dotnet-tools.json +10 -10
  2. package/.csharpierignore +1 -0
  3. package/.csharpierrc.json +3 -0
  4. package/.editorconfig +184 -184
  5. package/.gitattributes +87 -63
  6. package/.githooks/pre-commit +49 -0
  7. package/.github/dependabot.yml +9 -9
  8. package/.github/workflows/csharpier.yml +135 -0
  9. package/.github/workflows/lint-doc-links.yml +27 -0
  10. package/.github/workflows/markdown-json.yml +41 -0
  11. package/.github/workflows/npm-publish.yml +75 -75
  12. package/.lychee.toml +26 -0
  13. package/.markdownlint.json +21 -0
  14. package/.markdownlintignore +8 -0
  15. package/.pre-commit-config.yaml +39 -22
  16. package/.prettierignore +22 -0
  17. package/.prettierrc.json +20 -0
  18. package/AGENTS.md +52 -0
  19. package/{Third Party Notices.md.meta → AGENTS.md.meta} +7 -7
  20. package/CHANGELOG.md.meta +7 -7
  21. package/DATA_STRUCTURES.md +324 -0
  22. package/DATA_STRUCTURES.md.meta +7 -0
  23. package/Docs/Images/attribute_resolution.svg +40 -0
  24. package/Docs/Images/attribute_resolution.svg.meta +7 -0
  25. package/Docs/Images/bitset.svg +47 -0
  26. package/Docs/Images/bitset.svg.meta +7 -0
  27. package/Docs/Images/concave_hull.svg +30 -0
  28. package/Docs/Images/concave_hull.svg.meta +7 -0
  29. package/Docs/Images/convex_hull.svg +29 -0
  30. package/Docs/Images/convex_hull.svg.meta +7 -0
  31. package/Docs/Images/cyclic_buffer.svg +37 -0
  32. package/Docs/Images/cyclic_buffer.svg.meta +7 -0
  33. package/Docs/Images/data_distribution_decision.svg +88 -0
  34. package/Docs/Images/data_distribution_decision.svg.meta +7 -0
  35. package/Docs/Images/deque.svg +64 -0
  36. package/Docs/Images/deque.svg.meta +7 -0
  37. package/Docs/Images/deque_queue.svg +107 -0
  38. package/Docs/Images/deque_queue.svg.meta +7 -0
  39. package/Docs/Images/disjoint_set.svg +47 -0
  40. package/Docs/Images/disjoint_set.svg.meta +7 -0
  41. package/Docs/Images/effects_pipeline.svg +59 -0
  42. package/Docs/Images/effects_pipeline.svg.meta +7 -0
  43. package/Docs/Images/geometry_edge_cases.svg +61 -0
  44. package/Docs/Images/geometry_edge_cases.svg.meta +7 -0
  45. package/Docs/Images/heap.svg +56 -0
  46. package/Docs/Images/heap.svg.meta +7 -0
  47. package/Docs/Images/kdtree_2d.svg +38 -0
  48. package/Docs/Images/kdtree_2d.svg.meta +7 -0
  49. package/Docs/Images/kdtree_3d.svg +83 -0
  50. package/Docs/Images/kdtree_3d.svg.meta +7 -0
  51. package/Docs/Images/octree_3d.svg +79 -0
  52. package/Docs/Images/octree_3d.svg.meta +7 -0
  53. package/Docs/Images/polyline_simplify.svg +18 -0
  54. package/Docs/Images/polyline_simplify.svg.meta +7 -0
  55. package/Docs/Images/quadtree_2d.svg +37 -0
  56. package/Docs/Images/quadtree_2d.svg.meta +7 -0
  57. package/Docs/Images/query_boundaries.svg +38 -0
  58. package/Docs/Images/query_boundaries.svg.meta +7 -0
  59. package/Docs/Images/random_generators.svg +105 -0
  60. package/Docs/Images/random_generators.svg.meta +7 -0
  61. package/Docs/Images/reflection_scan.svg +33 -0
  62. package/Docs/Images/reflection_scan.svg.meta +7 -0
  63. package/Docs/Images/relational_wiring.svg +75 -0
  64. package/Docs/Images/relational_wiring.svg.meta +7 -0
  65. package/Docs/Images/rtree_2d.svg +27 -0
  66. package/Docs/Images/rtree_2d.svg.meta +7 -0
  67. package/Docs/Images/rtree_3d.svg +79 -0
  68. package/Docs/Images/rtree_3d.svg.meta +7 -0
  69. package/Docs/Images/serialization_flow.svg +50 -0
  70. package/Docs/Images/serialization_flow.svg.meta +7 -0
  71. package/Docs/Images/singletons_lifecycle.svg +54 -0
  72. package/Docs/Images/singletons_lifecycle.svg.meta +7 -0
  73. package/Docs/Images/sparse_set.svg +54 -0
  74. package/Docs/Images/sparse_set.svg.meta +7 -0
  75. package/Docs/Images/trie.svg +55 -0
  76. package/Docs/Images/trie.svg.meta +7 -0
  77. package/Docs/Images.meta +8 -0
  78. package/Docs.meta +8 -0
  79. package/EDITOR_TOOLS_GUIDE.md +1976 -0
  80. package/EDITOR_TOOLS_GUIDE.md.meta +7 -0
  81. package/EFFECTS_SYSTEM.md +242 -0
  82. package/EFFECTS_SYSTEM.md.meta +7 -0
  83. package/EFFECTS_SYSTEM_TUTORIAL.md +467 -0
  84. package/EFFECTS_SYSTEM_TUTORIAL.md.meta +7 -0
  85. package/Editor/AnimationEventEditor.cs +1393 -874
  86. package/Editor/AnimationEventEditor.cs.meta +11 -11
  87. package/Editor/AssemblyInfo.cs +4 -0
  88. package/Editor/AssemblyInfo.cs.meta +3 -0
  89. package/Editor/AssetProcessors/SpriteLabelProcessor.cs +138 -111
  90. package/Editor/AssetProcessors/SpriteLabelProcessor.cs.meta +2 -2
  91. package/Editor/AssetProcessors.meta +2 -2
  92. package/Editor/Core/Helper/AnimationEventHelpers.cs +204 -0
  93. package/{Runtime/Core/DataStructure/ISpatialTree.cs.meta → Editor/Core/Helper/AnimationEventHelpers.cs.meta} +11 -11
  94. package/Editor/Core/Helper.meta +8 -0
  95. package/Editor/Core.meta +8 -0
  96. package/Editor/CustomDrawers/IntDropdownDrawer.cs +46 -46
  97. package/Editor/CustomDrawers/IntDropdownDrawer.cs.meta +2 -2
  98. package/Editor/CustomDrawers/StringInListeDrawer.cs +135 -135
  99. package/Editor/CustomDrawers/StringInListeDrawer.cs.meta +2 -2
  100. package/Editor/CustomDrawers/WShowIfPropertyDrawer.cs +105 -105
  101. package/Editor/CustomDrawers/WShowIfPropertyDrawer.cs.meta +2 -2
  102. package/Editor/CustomDrawers.meta +2 -2
  103. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs +32 -32
  104. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs.meta +2 -2
  105. package/Editor/CustomEditors/PersistentDirectoryGUI.cs +799 -799
  106. package/Editor/CustomEditors/PersistentDirectoryGUI.cs.meta +2 -2
  107. package/Editor/CustomEditors/PolygonCollider2DOptimizerEditor.cs +38 -40
  108. package/Editor/CustomEditors/PolygonCollider2DOptimizerEditor.cs.meta +2 -2
  109. package/Editor/CustomEditors/SourceFolderEntryDrawer.cs +685 -413
  110. package/Editor/CustomEditors/SourceFolderEntryDrawer.cs.meta +2 -2
  111. package/Editor/CustomEditors/TexturePlatformOverrideEntryDrawer.cs +146 -0
  112. package/{Runtime/Core/DataStructure/KDTree.cs.meta → Editor/CustomEditors/TexturePlatformOverrideEntryDrawer.cs.meta} +11 -11
  113. package/Editor/CustomEditors.meta +2 -2
  114. package/Editor/Extensions/SerializedPropertyExtensions.cs +217 -190
  115. package/Editor/Extensions/SerializedPropertyExtensions.cs.meta +2 -2
  116. package/Editor/Extensions/UnityExtensions.cs +50 -26
  117. package/Editor/Extensions/UnityExtensions.cs.meta +2 -2
  118. package/Editor/Extensions.meta +2 -2
  119. package/Editor/FitTextureSizeWindow.cs +785 -332
  120. package/Editor/FitTextureSizeWindow.cs.meta +2 -2
  121. package/Editor/Persistence/MultiFileSelectorPersistenceManager.cs +62 -0
  122. package/{Runtime/Core/DataStructure/QuadTree.cs.meta → Editor/Persistence/MultiFileSelectorPersistenceManager.cs.meta} +11 -11
  123. package/Editor/Persistence/MultiFileSelectorPersistenceWindow.cs +65 -0
  124. package/Editor/Persistence/MultiFileSelectorPersistenceWindow.cs.meta +11 -0
  125. package/Editor/Persistence.meta +8 -0
  126. package/Editor/PersistentDirectorySettings.cs +529 -248
  127. package/Editor/PersistentDirectorySettings.cs.meta +2 -2
  128. package/Editor/PrefabChecker.cs +1329 -741
  129. package/Editor/PrefabChecker.cs.meta +11 -11
  130. package/Editor/Sprites/AnimationCopier.cs +1518 -789
  131. package/Editor/Sprites/AnimationCopier.cs.meta +2 -2
  132. package/Editor/Sprites/AnimationCreator.cs +1532 -881
  133. package/Editor/Sprites/AnimationCreator.cs.meta +11 -11
  134. package/Editor/Sprites/AnimationViewerWindow.cs +1634 -1522
  135. package/Editor/Sprites/AnimationViewerWindow.cs.meta +2 -2
  136. package/Editor/Sprites/ScriptableSpriteAtlas.cs +251 -178
  137. package/Editor/Sprites/ScriptableSpriteAtlas.cs.meta +2 -2
  138. package/Editor/Sprites/ScriptableSpriteAtlasEditor.cs +1470 -1026
  139. package/Editor/Sprites/ScriptableSpriteAtlasEditor.cs.meta +2 -2
  140. package/Editor/Sprites/SpriteCropper.cs +1013 -523
  141. package/Editor/Sprites/SpriteCropper.cs.meta +2 -2
  142. package/Editor/Sprites/SpritePivotAdjustor.cs +605 -265
  143. package/Editor/Sprites/SpritePivotAdjustor.cs.meta +2 -2
  144. package/Editor/Sprites/SpriteSettingsApplier.cs +942 -918
  145. package/Editor/Sprites/SpriteSettingsApplier.cs.meta +2 -2
  146. package/Editor/Sprites/SpriteSettingsApplierAPI.cs +441 -0
  147. package/Editor/Sprites/SpriteSettingsApplierAPI.cs.meta +11 -0
  148. package/Editor/Sprites/SpriteSettingsProfileCollection.cs +12 -0
  149. package/Editor/Sprites/SpriteSettingsProfileCollection.cs.meta +11 -0
  150. package/Editor/Sprites/SpriteSheetAnimationCreator.cs +1586 -1537
  151. package/Editor/Sprites/SpriteSheetAnimationCreator.cs.meta +2 -2
  152. package/Editor/Sprites/TexturePlatformNameHelper.cs +78 -0
  153. package/Editor/Sprites/TexturePlatformNameHelper.cs.meta +11 -0
  154. package/Editor/Sprites/TextureResizerWizard.cs +434 -175
  155. package/Editor/Sprites/TextureResizerWizard.cs.meta +2 -2
  156. package/Editor/Sprites/TextureSettingsApplierAPI.cs +359 -0
  157. package/Editor/Sprites/TextureSettingsApplierAPI.cs.meta +11 -0
  158. package/Editor/Sprites/TextureSettingsApplierWindow.cs +605 -0
  159. package/Editor/Sprites/TextureSettingsApplierWindow.cs.meta +11 -0
  160. package/Editor/Sprites.meta +2 -2
  161. package/Editor/Styles/AnimationViewer.uss +115 -115
  162. package/Editor/Styles/AnimationViewer.uss.meta +2 -2
  163. package/Editor/Styles/AnimationViewer.uxml +56 -56
  164. package/Editor/Styles/AnimationViewer.uxml.meta +2 -2
  165. package/Editor/Styles/SpriteSheetAnimationCreator.uss +10 -0
  166. package/Editor/Styles/SpriteSheetAnimationCreator.uss.meta +11 -0
  167. package/Editor/Styles.meta +2 -2
  168. package/Editor/Tags/AttributeMetadataCacheEditor.cs +46 -0
  169. package/Editor/Tags/AttributeMetadataCacheEditor.cs.meta +11 -0
  170. package/Editor/Tags/AttributeMetadataCacheGenerator.cs +258 -0
  171. package/Editor/Tags/AttributeMetadataCacheGenerator.cs.meta +11 -0
  172. package/Editor/Tags.meta +8 -0
  173. package/Editor/Tools/ImageBlurTool.cs +451 -409
  174. package/Editor/Tools/ImageBlurTool.cs.meta +2 -2
  175. package/Editor/Tools.meta +2 -2
  176. package/Editor/Utils/DxReadOnlyPropertyDrawer.cs +26 -26
  177. package/Editor/Utils/DxReadOnlyPropertyDrawer.cs.meta +11 -11
  178. package/Editor/Utils/EditorUi.cs +228 -0
  179. package/Editor/Utils/EditorUi.cs.meta +11 -0
  180. package/Editor/Utils/EditorUtilities.cs +22 -22
  181. package/Editor/Utils/EditorUtilities.cs.meta +11 -11
  182. package/Editor/Utils/ScriptableObjectSingletonCreator.cs +633 -52
  183. package/Editor/Utils/ScriptableObjectSingletonCreator.cs.meta +2 -2
  184. package/Editor/Utils.meta +8 -8
  185. package/Editor/Visuals/EnhancedImageEditor.cs +160 -160
  186. package/Editor/Visuals/EnhancedImageEditor.cs.meta +11 -11
  187. package/Editor/Visuals.meta +2 -2
  188. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef +14 -18
  189. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef.meta +7 -7
  190. package/Editor.meta +8 -8
  191. package/GETTING_STARTED.md +425 -0
  192. package/GETTING_STARTED.md.meta +7 -0
  193. package/GLOSSARY.md +313 -0
  194. package/GLOSSARY.md.meta +7 -0
  195. package/HULLS.md +45 -0
  196. package/HULLS.md.meta +7 -0
  197. package/INDEX.md +429 -0
  198. package/INDEX.md.meta +7 -0
  199. package/LICENSE +21 -21
  200. package/LICENSE.md +7 -7
  201. package/LICENSE.md.meta +7 -7
  202. package/LICENSE.meta +7 -7
  203. package/MATH_AND_EXTENSIONS.md +316 -0
  204. package/MATH_AND_EXTENSIONS.md.meta +7 -0
  205. package/RANDOM_PERFORMANCE.md +140 -0
  206. package/RANDOM_PERFORMANCE.md.meta +7 -0
  207. package/README.md +3195 -188
  208. package/README.md.meta +7 -7
  209. package/REFLECTION_HELPERS.md +272 -0
  210. package/REFLECTION_HELPERS.md.meta +7 -0
  211. package/RELATIONAL_COMPONENTS.md +543 -0
  212. package/RELATIONAL_COMPONENTS.md.meta +7 -0
  213. package/Runtime/AssemblyInfo.cs +7 -0
  214. package/Runtime/AssemblyInfo.cs.meta +11 -0
  215. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll +0 -0
  216. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll.meta +33 -33
  217. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml +499 -278
  218. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml.meta +7 -7
  219. package/Runtime/Binaries/System.IO.Pipelines.dll +0 -0
  220. package/Runtime/Binaries/System.IO.Pipelines.dll.meta +33 -0
  221. package/Runtime/Binaries/System.IO.Pipelines.xml +702 -0
  222. package/Runtime/Binaries/System.IO.Pipelines.xml.meta +7 -0
  223. package/Runtime/Binaries/System.Text.Encodings.Web.dll +0 -0
  224. package/Runtime/Binaries/System.Text.Encodings.Web.dll.meta +33 -33
  225. package/Runtime/Binaries/System.Text.Encodings.Web.xml +1084 -1079
  226. package/Runtime/Binaries/System.Text.Encodings.Web.xml.meta +7 -7
  227. package/Runtime/Binaries/System.Text.Json.dll +0 -0
  228. package/Runtime/Binaries/System.Text.Json.dll.meta +33 -33
  229. package/Runtime/Binaries/System.Text.Json.xml +10217 -8116
  230. package/Runtime/Binaries/System.Text.Json.xml.meta +7 -7
  231. package/Runtime/Binaries.meta +8 -8
  232. package/Runtime/Core/Attributes/AnimationEventAttribute.cs +10 -138
  233. package/Runtime/Core/Attributes/AnimationEventAttribute.cs.meta +11 -11
  234. package/Runtime/Core/Attributes/BaseRelationalComponentAttribute.cs +841 -0
  235. package/Runtime/Core/Attributes/BaseRelationalComponentAttribute.cs.meta +11 -0
  236. package/Runtime/Core/Attributes/ChildComponentAttribute.cs +284 -226
  237. package/Runtime/Core/Attributes/ChildComponentAttribute.cs.meta +11 -11
  238. package/Runtime/Core/Attributes/DxReadOnlyAttribute.cs +6 -6
  239. package/Runtime/Core/Attributes/DxReadOnlyAttribute.cs.meta +11 -11
  240. package/Runtime/Core/Attributes/EnumDisplayNameAttribute.cs +15 -15
  241. package/Runtime/Core/Attributes/EnumDisplayNameAttribute.cs.meta +2 -2
  242. package/Runtime/Core/Attributes/IRelationalComponentAssigner.cs +36 -0
  243. package/Runtime/Core/Attributes/IRelationalComponentAssigner.cs.meta +11 -0
  244. package/Runtime/Core/Attributes/IntDropdownAttribute.cs +14 -14
  245. package/Runtime/Core/Attributes/IntDropdownAttribute.cs.meta +2 -2
  246. package/Runtime/Core/Attributes/KSerializableAttribute.cs +19 -19
  247. package/Runtime/Core/Attributes/KSerializableAttribute.cs.meta +11 -11
  248. package/Runtime/Core/Attributes/NotNullAttribute.cs +32 -32
  249. package/Runtime/Core/Attributes/NotNullAttribute.cs.meta +11 -11
  250. package/Runtime/Core/Attributes/ParentComponentAttribute.cs +376 -0
  251. package/Runtime/Core/Attributes/{ParentComponent.cs.meta → ParentComponentAttribute.cs.meta} +11 -11
  252. package/Runtime/Core/Attributes/RelationalComponentAssigner.cs +107 -0
  253. package/Runtime/Core/Attributes/RelationalComponentAssigner.cs.meta +11 -0
  254. package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +61 -14
  255. package/Runtime/Core/Attributes/RelationalComponentExtensions.cs.meta +11 -11
  256. package/Runtime/Core/Attributes/RelationalComponentInitializer.cs +331 -0
  257. package/Runtime/Core/Attributes/RelationalComponentInitializer.cs.meta +11 -0
  258. package/Runtime/Core/Attributes/ScriptableSingletonPathAttribute.cs +15 -15
  259. package/Runtime/Core/Attributes/ScriptableSingletonPathAttribute.cs.meta +2 -2
  260. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +264 -137
  261. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs.meta +11 -11
  262. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs +115 -106
  263. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs.meta +11 -11
  264. package/Runtime/Core/Attributes/ValueHelpers.cs +10 -0
  265. package/Runtime/Core/Attributes/ValueHelpers.cs.meta +3 -0
  266. package/Runtime/Core/Attributes/WShowIfAttribute.cs +24 -24
  267. package/Runtime/Core/Attributes/WShowIfAttribute.cs.meta +2 -2
  268. package/Runtime/Core/Attributes.meta +8 -8
  269. package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs +192 -92
  270. package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs.meta +11 -11
  271. package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs +268 -185
  272. package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs.meta +11 -11
  273. package/Runtime/Core/DataStructure/Adapters/KGuid.cs +360 -305
  274. package/Runtime/Core/DataStructure/Adapters/KGuid.cs.meta +11 -11
  275. package/Runtime/Core/DataStructure/Adapters/KVector2.cs +146 -80
  276. package/Runtime/Core/DataStructure/Adapters/KVector2.cs.meta +11 -11
  277. package/Runtime/Core/DataStructure/Adapters.meta +8 -8
  278. package/Runtime/Core/DataStructure/BitSet.cs +626 -0
  279. package/Runtime/Core/DataStructure/BitSet.cs.meta +11 -0
  280. package/Runtime/Core/DataStructure/BoundingBox3D.cs +405 -0
  281. package/Runtime/Core/DataStructure/BoundingBox3D.cs.meta +11 -0
  282. package/Runtime/Core/DataStructure/Circle.cs +203 -50
  283. package/Runtime/Core/DataStructure/Circle.cs.meta +11 -11
  284. package/Runtime/Core/DataStructure/CyclicBuffer.cs +489 -266
  285. package/Runtime/Core/DataStructure/CyclicBuffer.cs.meta +11 -11
  286. package/Runtime/Core/DataStructure/Deque.cs +561 -0
  287. package/Runtime/Core/DataStructure/Deque.cs.meta +11 -0
  288. package/Runtime/Core/DataStructure/DisjointSet.cs +483 -0
  289. package/Runtime/Core/DataStructure/DisjointSet.cs.meta +11 -0
  290. package/Runtime/Core/DataStructure/Heap.cs +514 -0
  291. package/Runtime/Core/DataStructure/Heap.cs.meta +11 -0
  292. package/Runtime/Core/DataStructure/{ISpatialTree.cs → ISpatialTree2D.cs} +25 -21
  293. package/Runtime/Core/DataStructure/ISpatialTree2D.cs.meta +11 -0
  294. package/Runtime/Core/DataStructure/ISpatialTree3D.cs +33 -0
  295. package/Runtime/Core/DataStructure/ISpatialTree3D.cs.meta +11 -0
  296. package/Runtime/Core/DataStructure/ImmutableBitSet.cs +398 -0
  297. package/Runtime/Core/DataStructure/ImmutableBitSet.cs.meta +3 -0
  298. package/Runtime/Core/DataStructure/KDTree2D.cs +852 -0
  299. package/Runtime/Core/DataStructure/KDTree2D.cs.meta +11 -0
  300. package/Runtime/Core/DataStructure/KDTree3D.cs +911 -0
  301. package/Runtime/Core/DataStructure/KDTree3D.cs.meta +11 -0
  302. package/Runtime/Core/DataStructure/OctTree3D.cs +983 -0
  303. package/Runtime/Core/DataStructure/OctTree3D.cs.meta +11 -0
  304. package/Runtime/Core/DataStructure/PriorityQueue.cs +194 -0
  305. package/Runtime/Core/DataStructure/PriorityQueue.cs.meta +11 -0
  306. package/Runtime/Core/DataStructure/QuadTree2D.cs +722 -0
  307. package/Runtime/Core/DataStructure/QuadTree2D.cs.meta +11 -0
  308. package/Runtime/Core/DataStructure/RTree2D.cs +704 -0
  309. package/Runtime/Core/DataStructure/{RTree.cs.meta → RTree2D.cs.meta} +11 -11
  310. package/Runtime/Core/DataStructure/RTree3D.cs +775 -0
  311. package/Runtime/Core/DataStructure/RTree3D.cs.meta +11 -0
  312. package/Runtime/Core/DataStructure/SparseSet.cs +597 -0
  313. package/Runtime/Core/DataStructure/SparseSet.cs.meta +11 -0
  314. package/Runtime/Core/DataStructure/SpatialHash2D.cs +312 -0
  315. package/Runtime/Core/DataStructure/SpatialHash2D.cs.meta +3 -0
  316. package/Runtime/Core/DataStructure/SpatialHash3D.cs +341 -0
  317. package/Runtime/Core/DataStructure/SpatialHash3D.cs.meta +11 -0
  318. package/Runtime/Core/DataStructure/Sphere.cs +264 -0
  319. package/Runtime/Core/DataStructure/Sphere.cs.meta +11 -0
  320. package/Runtime/Core/DataStructure/StringWrapper.cs +115 -91
  321. package/Runtime/Core/DataStructure/StringWrapper.cs.meta +11 -11
  322. package/Runtime/Core/DataStructure/TimedCache.cs +88 -66
  323. package/Runtime/Core/DataStructure/TimedCache.cs.meta +11 -11
  324. package/Runtime/Core/DataStructure/Trie.cs +660 -359
  325. package/Runtime/Core/DataStructure/Trie.cs.meta +2 -2
  326. package/Runtime/Core/DataStructure.meta +8 -8
  327. package/Runtime/Core/Extension/AnimatorExtensions.cs +40 -25
  328. package/Runtime/Core/Extension/AnimatorExtensions.cs.meta +11 -11
  329. package/Runtime/Core/Extension/AsyncOperationExtensions.cs +404 -110
  330. package/Runtime/Core/Extension/AsyncOperationExtensions.cs.meta +2 -2
  331. package/Runtime/Core/Extension/CircleExtensions.cs +125 -25
  332. package/Runtime/Core/Extension/CircleExtensions.cs.meta +11 -11
  333. package/Runtime/Core/Extension/ColorExtensions.cs +983 -644
  334. package/Runtime/Core/Extension/ColorExtensions.cs.meta +11 -11
  335. package/Runtime/Core/Extension/DictionaryExtensions.cs +606 -299
  336. package/Runtime/Core/Extension/DictionaryExtensions.cs.meta +11 -11
  337. package/Runtime/Core/Extension/DirectionExtensions.cs +377 -213
  338. package/Runtime/Core/Extension/DirectionExtensions.cs.meta +11 -11
  339. package/Runtime/Core/Extension/EnumExtensions.cs +535 -137
  340. package/Runtime/Core/Extension/EnumExtensions.cs.meta +2 -2
  341. package/Runtime/Core/Extension/IEnumerableExtensions.cs +341 -124
  342. package/Runtime/Core/Extension/IEnumerableExtensions.cs.meta +11 -11
  343. package/Runtime/Core/Extension/IListExtensions.cs +767 -248
  344. package/Runtime/Core/Extension/IListExtensions.cs.meta +11 -11
  345. package/Runtime/Core/Extension/IReadonlyListExtensions.cs +687 -37
  346. package/Runtime/Core/Extension/IReadonlyListExtensions.cs.meta +2 -2
  347. package/Runtime/Core/Extension/ProtoEqualityExtensions.cs +292 -0
  348. package/Runtime/Core/Extension/ProtoEqualityExtensions.cs.meta +3 -0
  349. package/Runtime/Core/Extension/RandomExtensions.cs +938 -109
  350. package/Runtime/Core/Extension/RandomExtensions.cs.meta +11 -11
  351. package/Runtime/Core/Extension/StringExtensions.cs +1635 -239
  352. package/Runtime/Core/Extension/StringExtensions.cs.meta +11 -11
  353. package/Runtime/Core/Extension/UnityExtensions.cs +4555 -1689
  354. package/Runtime/Core/Extension/UnityExtensions.cs.meta +11 -11
  355. package/Runtime/Core/Extension/WallstopStudiosLogger.cs +271 -245
  356. package/Runtime/Core/Extension/WallstopStudiosLogger.cs.meta +11 -11
  357. package/Runtime/Core/Extension.meta +8 -8
  358. package/Runtime/Core/Helper/ArrayConverter.cs +73 -39
  359. package/Runtime/Core/Helper/ArrayConverter.cs.meta +2 -2
  360. package/Runtime/Core/Helper/AssignUtilities.cs +33 -14
  361. package/Runtime/Core/Helper/AssignUtilities.cs.meta +11 -11
  362. package/Runtime/Core/Helper/DirectoryHelper.cs +210 -196
  363. package/Runtime/Core/Helper/DirectoryHelper.cs.meta +2 -2
  364. package/Runtime/Core/Helper/Enumerables.cs +51 -17
  365. package/Runtime/Core/Helper/Enumerables.cs.meta +11 -11
  366. package/Runtime/Core/Helper/FileHelper.cs +97 -77
  367. package/Runtime/Core/Helper/FileHelper.cs.meta +2 -2
  368. package/Runtime/Core/Helper/FormattingHelpers.cs +49 -38
  369. package/Runtime/Core/Helper/FormattingHelpers.cs.meta +2 -2
  370. package/Runtime/Core/Helper/FuncBasedComparer.cs +29 -0
  371. package/Runtime/Core/Helper/FuncBasedComparer.cs.meta +3 -0
  372. package/Runtime/Core/Helper/Geometry.cs +65 -43
  373. package/Runtime/Core/Helper/Geometry.cs.meta +11 -11
  374. package/Runtime/Core/Helper/Helpers.cs +1271 -831
  375. package/Runtime/Core/Helper/Helpers.cs.meta +11 -11
  376. package/Runtime/Core/Helper/IterationHelpers.cs +83 -32
  377. package/Runtime/Core/Helper/IterationHelpers.cs.meta +11 -11
  378. package/Runtime/Core/Helper/LifetimeHelpers.cs +20 -13
  379. package/Runtime/Core/Helper/LifetimeHelpers.cs.meta +11 -11
  380. package/Runtime/Core/Helper/LineHelper.cs +259 -194
  381. package/Runtime/Core/Helper/LineHelper.cs.meta +2 -2
  382. package/Runtime/Core/Helper/Logging/UnityLogTagFormatter.cs +549 -539
  383. package/Runtime/Core/Helper/Logging/UnityLogTagFormatter.cs.meta +2 -2
  384. package/Runtime/Core/Helper/Logging.meta +2 -2
  385. package/Runtime/Core/Helper/Objects.cs +477 -769
  386. package/Runtime/Core/Helper/Objects.cs.meta +11 -11
  387. package/Runtime/Core/Helper/Partials/LogHelpers.cs +13 -13
  388. package/Runtime/Core/Helper/Partials/LogHelpers.cs.meta +2 -2
  389. package/Runtime/Core/Helper/Partials/MathHelpers.cs +45 -30
  390. package/Runtime/Core/Helper/Partials/MathHelpers.cs.meta +2 -2
  391. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +506 -400
  392. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs.meta +2 -2
  393. package/Runtime/Core/Helper/Partials/TransformHelpers.cs +393 -377
  394. package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +2 -2
  395. package/Runtime/Core/Helper/Partials.meta +2 -2
  396. package/Runtime/Core/Helper/PathHelper.cs +42 -15
  397. package/Runtime/Core/Helper/PathHelper.cs.meta +2 -2
  398. package/Runtime/Core/Helper/ReflectionHelpers.cs +5287 -1963
  399. package/Runtime/Core/Helper/ReflectionHelpers.cs.meta +2 -2
  400. package/Runtime/Core/Helper/ReverseComparer.cs +33 -0
  401. package/Runtime/Core/Helper/ReverseComparer.cs.meta +3 -0
  402. package/Runtime/Core/Helper/SceneHelper.cs +251 -224
  403. package/Runtime/Core/Helper/SceneHelper.cs.meta +2 -2
  404. package/Runtime/Core/Helper/SpriteHelpers.cs +50 -41
  405. package/Runtime/Core/Helper/SpriteHelpers.cs.meta +11 -11
  406. package/Runtime/Core/Helper/StringInList.cs +61 -35
  407. package/Runtime/Core/Helper/StringInList.cs.meta +11 -11
  408. package/Runtime/Core/Helper/TestAssemblyHelper.cs +134 -0
  409. package/Runtime/Core/Helper/TestAssemblyHelper.cs.meta +11 -0
  410. package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs +100 -82
  411. package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs.meta +2 -2
  412. package/Runtime/Core/Helper/WallMath.cs +672 -166
  413. package/Runtime/Core/Helper/WallMath.cs.meta +11 -11
  414. package/Runtime/Core/Helper.meta +8 -8
  415. package/Runtime/Core/Math/Line2D.cs +263 -0
  416. package/Runtime/Core/Math/Line2D.cs.meta +11 -0
  417. package/Runtime/Core/Math/Line3D.cs +452 -0
  418. package/Runtime/Core/Math/Line3D.cs.meta +11 -0
  419. package/Runtime/Core/Math/Parabola.cs +241 -47
  420. package/Runtime/Core/Math/Parabola.cs.meta +11 -11
  421. package/Runtime/Core/Math/PointPolygonCheck.cs +175 -36
  422. package/Runtime/Core/Math/PointPolygonCheck.cs.meta +11 -11
  423. package/Runtime/Core/Math/Range.cs +157 -92
  424. package/Runtime/Core/Math/Range.cs.meta +11 -11
  425. package/Runtime/Core/Math.meta +8 -8
  426. package/Runtime/Core/Model/Direction.cs +25 -43
  427. package/Runtime/Core/Model/Direction.cs.meta +11 -11
  428. package/Runtime/Core/Model.meta +8 -8
  429. package/Runtime/Core/OneOf/FastOneOf.cs +252 -152
  430. package/Runtime/Core/OneOf/FastOneOf.cs.meta +11 -11
  431. package/Runtime/Core/OneOf/FastOneOf2.cs +198 -0
  432. package/Runtime/Core/OneOf/FastOneOf2.cs.meta +11 -0
  433. package/Runtime/Core/OneOf/FastOneOf4.cs +324 -0
  434. package/Runtime/Core/OneOf/FastOneOf4.cs.meta +11 -0
  435. package/Runtime/Core/OneOf/None.cs +30 -4
  436. package/Runtime/Core/OneOf/None.cs.meta +11 -11
  437. package/Runtime/Core/OneOf.meta +8 -8
  438. package/Runtime/Core/Random/AbstractRandom.cs +1318 -655
  439. package/Runtime/Core/Random/AbstractRandom.cs.meta +11 -11
  440. package/Runtime/Core/Random/DotNetRandom.cs +118 -54
  441. package/Runtime/Core/Random/DotNetRandom.cs.meta +2 -2
  442. package/Runtime/Core/Random/IRandom.cs +203 -161
  443. package/Runtime/Core/Random/IRandom.cs.meta +11 -11
  444. package/Runtime/Core/Random/IllusionFlow.cs +171 -107
  445. package/Runtime/Core/Random/IllusionFlow.cs.meta +2 -2
  446. package/Runtime/Core/Random/LinearCongruentialGenerator.cs +90 -49
  447. package/Runtime/Core/Random/LinearCongruentialGenerator.cs.meta +2 -2
  448. package/Runtime/Core/Random/NativePcgRandom.cs +139 -97
  449. package/Runtime/Core/Random/NativePcgRandom.cs.meta +11 -11
  450. package/Runtime/Core/Random/PRNG.cs +21 -7
  451. package/Runtime/Core/Random/PRNG.cs.meta +2 -2
  452. package/Runtime/Core/Random/PcgRandom.cs +243 -149
  453. package/Runtime/Core/Random/PcgRandom.cs.meta +11 -11
  454. package/Runtime/Core/Random/PerlinNoise.cs +369 -369
  455. package/Runtime/Core/Random/PerlinNoise.cs.meta +2 -2
  456. package/Runtime/Core/Random/RandomComparer.cs +34 -0
  457. package/Runtime/Core/Random/RandomComparer.cs.meta +3 -0
  458. package/Runtime/Core/Random/RandomState.cs +206 -131
  459. package/Runtime/Core/Random/RandomState.cs.meta +11 -11
  460. package/Runtime/Core/Random/RandomUtilities.cs +55 -26
  461. package/Runtime/Core/Random/RandomUtilities.cs.meta +11 -11
  462. package/Runtime/Core/Random/RomuDuo.cs +171 -116
  463. package/Runtime/Core/Random/RomuDuo.cs.meta +2 -2
  464. package/Runtime/Core/Random/SplitMix64.cs +134 -94
  465. package/Runtime/Core/Random/SplitMix64.cs.meta +2 -2
  466. package/Runtime/Core/Random/SquirrelRandom.cs +127 -84
  467. package/Runtime/Core/Random/SquirrelRandom.cs.meta +11 -11
  468. package/Runtime/Core/Random/SystemRandom.cs +203 -162
  469. package/Runtime/Core/Random/SystemRandom.cs.meta +11 -11
  470. package/Runtime/Core/Random/ThreadLocalRandom.cs +25 -12
  471. package/Runtime/Core/Random/ThreadLocalRandom.cs.meta +11 -11
  472. package/Runtime/Core/Random/UnityRandom.cs +109 -57
  473. package/Runtime/Core/Random/UnityRandom.cs.meta +11 -11
  474. package/Runtime/Core/Random/WyRandom.cs +158 -121
  475. package/Runtime/Core/Random/WyRandom.cs.meta +2 -2
  476. package/Runtime/Core/Random/XorShiftRandom.cs +106 -52
  477. package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -11
  478. package/Runtime/Core/Random/XoroShiroRandom.cs +184 -119
  479. package/Runtime/Core/Random/XoroShiroRandom.cs.meta +2 -2
  480. package/Runtime/Core/Random.meta +8 -8
  481. package/Runtime/Core/Serialization/JsonConverters/AnimationCurveConverter.cs +248 -0
  482. package/Runtime/Core/Serialization/JsonConverters/AnimationCurveConverter.cs.meta +11 -0
  483. package/Runtime/Core/Serialization/JsonConverters/BitSetConverter.cs +119 -0
  484. package/Runtime/Core/Serialization/JsonConverters/BitSetConverter.cs.meta +11 -0
  485. package/Runtime/Core/Serialization/JsonConverters/BoundingSphereConverter.cs +74 -0
  486. package/Runtime/Core/Serialization/JsonConverters/BoundingSphereConverter.cs.meta +11 -0
  487. package/Runtime/Core/Serialization/JsonConverters/BoundsConverter.cs +132 -0
  488. package/Runtime/Core/Serialization/JsonConverters/BoundsConverter.cs.meta +11 -0
  489. package/Runtime/Core/Serialization/JsonConverters/BoundsIntConverter.cs +135 -0
  490. package/Runtime/Core/Serialization/JsonConverters/BoundsIntConverter.cs.meta +11 -0
  491. package/Runtime/Core/Serialization/JsonConverters/Color32Converter.cs +98 -0
  492. package/Runtime/Core/Serialization/JsonConverters/Color32Converter.cs.meta +11 -0
  493. package/Runtime/Core/Serialization/JsonConverters/ColorBlockConverter.cs +123 -0
  494. package/Runtime/Core/Serialization/JsonConverters/ColorBlockConverter.cs.meta +11 -0
  495. package/Runtime/Core/Serialization/JsonConverters/ColorConverter.cs +88 -88
  496. package/Runtime/Core/Serialization/JsonConverters/ColorConverter.cs.meta +2 -2
  497. package/Runtime/Core/Serialization/JsonConverters/CyclicBufferConverterFactory.cs +112 -0
  498. package/Runtime/Core/Serialization/JsonConverters/CyclicBufferConverterFactory.cs.meta +11 -0
  499. package/Runtime/Core/Serialization/JsonConverters/DequeConverterFactory.cs +62 -0
  500. package/Runtime/Core/Serialization/JsonConverters/DequeConverterFactory.cs.meta +11 -0
  501. package/Runtime/Core/Serialization/JsonConverters/FastVector2IntConverter.cs +72 -0
  502. package/Runtime/Core/Serialization/JsonConverters/FastVector2IntConverter.cs.meta +11 -0
  503. package/Runtime/Core/Serialization/JsonConverters/FastVector3IntConverter.cs +80 -0
  504. package/Runtime/Core/Serialization/JsonConverters/FastVector3IntConverter.cs.meta +11 -0
  505. package/Runtime/Core/Serialization/JsonConverters/GameObjectConverter.cs +36 -36
  506. package/Runtime/Core/Serialization/JsonConverters/GameObjectConverter.cs.meta +2 -2
  507. package/Runtime/Core/Serialization/JsonConverters/GradientConverter.cs +245 -0
  508. package/Runtime/Core/Serialization/JsonConverters/GradientConverter.cs.meta +11 -0
  509. package/Runtime/Core/Serialization/JsonConverters/Hash128Converter.cs +92 -0
  510. package/Runtime/Core/Serialization/JsonConverters/Hash128Converter.cs.meta +11 -0
  511. package/Runtime/Core/Serialization/JsonConverters/ImmutableBitSetConverter.cs +119 -0
  512. package/Runtime/Core/Serialization/JsonConverters/ImmutableBitSetConverter.cs.meta +11 -0
  513. package/Runtime/Core/Serialization/JsonConverters/KVector2Converter.cs +72 -0
  514. package/Runtime/Core/Serialization/JsonConverters/KVector2Converter.cs.meta +11 -0
  515. package/Runtime/Core/Serialization/JsonConverters/LayerMaskConverter.cs +95 -0
  516. package/Runtime/Core/Serialization/JsonConverters/LayerMaskConverter.cs.meta +11 -0
  517. package/Runtime/Core/Serialization/JsonConverters/Matrix4x4Converter.cs +237 -218
  518. package/Runtime/Core/Serialization/JsonConverters/Matrix4x4Converter.cs.meta +2 -2
  519. package/Runtime/Core/Serialization/JsonConverters/MinMaxCurveConverter.cs +142 -0
  520. package/Runtime/Core/Serialization/JsonConverters/MinMaxCurveConverter.cs.meta +11 -0
  521. package/Runtime/Core/Serialization/JsonConverters/MinMaxGradientConverter.cs +135 -0
  522. package/Runtime/Core/Serialization/JsonConverters/MinMaxGradientConverter.cs.meta +11 -0
  523. package/Runtime/Core/Serialization/JsonConverters/PlaneConverter.cs +79 -0
  524. package/Runtime/Core/Serialization/JsonConverters/PlaneConverter.cs.meta +11 -0
  525. package/Runtime/Core/Serialization/JsonConverters/PoseConverter.cs +76 -0
  526. package/Runtime/Core/Serialization/JsonConverters/PoseConverter.cs.meta +11 -0
  527. package/Runtime/Core/Serialization/JsonConverters/QuaternionConverter.cs +88 -0
  528. package/Runtime/Core/Serialization/JsonConverters/QuaternionConverter.cs.meta +11 -0
  529. package/Runtime/Core/Serialization/JsonConverters/RangeConverterFactory.cs +106 -0
  530. package/Runtime/Core/Serialization/JsonConverters/RangeConverterFactory.cs.meta +11 -0
  531. package/Runtime/Core/Serialization/JsonConverters/RangeIntConverter.cs +71 -0
  532. package/Runtime/Core/Serialization/JsonConverters/RangeIntConverter.cs.meta +11 -0
  533. package/Runtime/Core/Serialization/JsonConverters/Ray2DConverter.cs +80 -0
  534. package/Runtime/Core/Serialization/JsonConverters/Ray2DConverter.cs.meta +11 -0
  535. package/Runtime/Core/Serialization/JsonConverters/RayConverter.cs +76 -0
  536. package/Runtime/Core/Serialization/JsonConverters/RayConverter.cs.meta +11 -0
  537. package/Runtime/Core/Serialization/JsonConverters/RaycastHitConverter.cs +115 -0
  538. package/Runtime/Core/Serialization/JsonConverters/RaycastHitConverter.cs.meta +11 -0
  539. package/Runtime/Core/Serialization/JsonConverters/RectConverter.cs +84 -0
  540. package/Runtime/Core/Serialization/JsonConverters/RectConverter.cs.meta +11 -0
  541. package/Runtime/Core/Serialization/JsonConverters/RectIntConverter.cs +88 -0
  542. package/Runtime/Core/Serialization/JsonConverters/RectIntConverter.cs.meta +11 -0
  543. package/Runtime/Core/Serialization/JsonConverters/RectOffsetConverter.cs +87 -0
  544. package/Runtime/Core/Serialization/JsonConverters/RectOffsetConverter.cs.meta +11 -0
  545. package/Runtime/Core/Serialization/JsonConverters/RenderTextureDescriptorConverter.cs +264 -0
  546. package/Runtime/Core/Serialization/JsonConverters/RenderTextureDescriptorConverter.cs.meta +11 -0
  547. package/Runtime/Core/Serialization/JsonConverters/ResolutionConverter.cs +158 -0
  548. package/Runtime/Core/Serialization/JsonConverters/ResolutionConverter.cs.meta +11 -0
  549. package/Runtime/Core/Serialization/JsonConverters/SceneConverter.cs +103 -0
  550. package/Runtime/Core/Serialization/JsonConverters/SceneConverter.cs.meta +11 -0
  551. package/Runtime/Core/Serialization/JsonConverters/SphericalHarmonicsL2Converter.cs +121 -0
  552. package/Runtime/Core/Serialization/JsonConverters/SphericalHarmonicsL2Converter.cs.meta +11 -0
  553. package/Runtime/Core/Serialization/JsonConverters/TouchConverter.cs +54 -0
  554. package/Runtime/Core/Serialization/JsonConverters/TouchConverter.cs.meta +11 -0
  555. package/Runtime/Core/Serialization/JsonConverters/TypeConverter.cs +30 -28
  556. package/Runtime/Core/Serialization/JsonConverters/TypeConverter.cs.meta +2 -2
  557. package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +72 -74
  558. package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs.meta +11 -11
  559. package/Runtime/Core/Serialization/JsonConverters/Vector2IntConverter.cs +72 -0
  560. package/Runtime/Core/Serialization/JsonConverters/Vector2IntConverter.cs.meta +11 -0
  561. package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +80 -81
  562. package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs.meta +11 -11
  563. package/Runtime/Core/Serialization/JsonConverters/Vector3IntConverter.cs +80 -0
  564. package/Runtime/Core/Serialization/JsonConverters/Vector3IntConverter.cs.meta +11 -0
  565. package/Runtime/Core/Serialization/JsonConverters/Vector4Converter.cs +88 -88
  566. package/Runtime/Core/Serialization/JsonConverters/Vector4Converter.cs.meta +2 -2
  567. package/Runtime/Core/Serialization/JsonConverters.meta +8 -8
  568. package/Runtime/Core/Serialization/ProtobufUnitySurrogates.cs +383 -0
  569. package/Runtime/Core/Serialization/ProtobufUnitySurrogates.cs.meta +11 -0
  570. package/Runtime/Core/Serialization/Serializer.cs +2020 -195
  571. package/Runtime/Core/Serialization/Serializer.cs.meta +11 -11
  572. package/Runtime/Core/Serialization.meta +8 -8
  573. package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +228 -228
  574. package/Runtime/Core/Threading/SingleThreadedThreadPool.cs.meta +11 -11
  575. package/Runtime/Core/Threading.meta +8 -8
  576. package/Runtime/Core.meta +8 -8
  577. package/Runtime/Integrations/VContainer/ObjectResolverRelationalExtensions.cs +185 -0
  578. package/Runtime/Integrations/VContainer/ObjectResolverRelationalExtensions.cs.meta +11 -0
  579. package/Runtime/Integrations/VContainer/RelationalComponentEntryPoint.cs +109 -0
  580. package/Runtime/Integrations/VContainer/RelationalComponentEntryPoint.cs.meta +11 -0
  581. package/Runtime/Integrations/VContainer/RelationalComponentsBuilderExtensions.cs +78 -0
  582. package/Runtime/Integrations/VContainer/RelationalComponentsBuilderExtensions.cs.meta +11 -0
  583. package/Runtime/Integrations/VContainer/RelationalSceneAssignmentOptions.cs +83 -0
  584. package/Runtime/Integrations/VContainer/RelationalSceneAssignmentOptions.cs.meta +11 -0
  585. package/Runtime/Integrations/VContainer/WallstopStudios.UnityHelpers.Integration.VContainer.asmdef +30 -0
  586. package/Runtime/Integrations/VContainer/WallstopStudios.UnityHelpers.Integration.VContainer.asmdef.meta +7 -0
  587. package/Runtime/Integrations/VContainer.meta +8 -0
  588. package/Runtime/Integrations/Zenject/DiContainerRelationalExtensions.cs +180 -0
  589. package/Runtime/Integrations/Zenject/DiContainerRelationalExtensions.cs.meta +11 -0
  590. package/Runtime/Integrations/Zenject/RelationalComponentSceneInitializer.cs +105 -0
  591. package/Runtime/Integrations/Zenject/RelationalComponentSceneInitializer.cs.meta +11 -0
  592. package/Runtime/Integrations/Zenject/RelationalComponentsInstaller.cs +72 -0
  593. package/Runtime/Integrations/Zenject/RelationalComponentsInstaller.cs.meta +11 -0
  594. package/Runtime/Integrations/Zenject/RelationalSceneAssignmentOptions.cs +87 -0
  595. package/Runtime/Integrations/Zenject/RelationalSceneAssignmentOptions.cs.meta +11 -0
  596. package/Runtime/Integrations/Zenject/WallstopStudios.UnityHelpers.Integration.Zenject.asmdef +30 -0
  597. package/Runtime/Integrations/Zenject/WallstopStudios.UnityHelpers.Integration.Zenject.asmdef.meta +7 -0
  598. package/Runtime/Integrations/Zenject.meta +8 -0
  599. package/Runtime/Integrations.meta +8 -0
  600. package/Runtime/Protobuf-Net/System.Collections.Immutable.dll.meta +33 -33
  601. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll.meta +33 -33
  602. package/Runtime/Protobuf-Net/protobuf-net.Core.dll.meta +33 -33
  603. package/Runtime/Protobuf-Net/protobuf-net.dll.meta +33 -33
  604. package/Runtime/Protobuf-Net.meta +8 -8
  605. package/Runtime/Tags/AlwaysIncludeInAttributeMetadataCacheAttribute.cs +11 -0
  606. package/Runtime/Tags/AlwaysIncludeInAttributeMetadataCacheAttribute.cs.meta +11 -0
  607. package/Runtime/Tags/Attribute.cs +399 -205
  608. package/Runtime/Tags/Attribute.cs.meta +2 -2
  609. package/Runtime/Tags/AttributeEffect.cs +372 -281
  610. package/Runtime/Tags/AttributeEffect.cs.meta +2 -2
  611. package/Runtime/Tags/AttributeMetadataCache.cs +503 -0
  612. package/Runtime/Tags/AttributeMetadataCache.cs.meta +11 -0
  613. package/Runtime/Tags/AttributeMetadataFilters.cs +108 -0
  614. package/Runtime/Tags/AttributeMetadataFilters.cs.meta +11 -0
  615. package/Runtime/Tags/AttributeModification.cs +132 -48
  616. package/Runtime/Tags/AttributeModification.cs.meta +2 -2
  617. package/Runtime/Tags/AttributeUtilities.cs +376 -209
  618. package/Runtime/Tags/AttributeUtilities.cs.meta +2 -2
  619. package/Runtime/Tags/AttributesComponent.cs +237 -163
  620. package/Runtime/Tags/AttributesComponent.cs.meta +2 -2
  621. package/Runtime/Tags/CollisionSenses.cs +117 -91
  622. package/Runtime/Tags/CollisionSenses.cs.meta +2 -2
  623. package/Runtime/Tags/CosmeticEffectComponent.cs +112 -50
  624. package/Runtime/Tags/CosmeticEffectComponent.cs.meta +2 -2
  625. package/Runtime/Tags/CosmeticEffectData.cs +109 -63
  626. package/Runtime/Tags/CosmeticEffectData.cs.meta +2 -2
  627. package/Runtime/Tags/EffectHandle.cs +150 -65
  628. package/Runtime/Tags/EffectHandle.cs.meta +2 -2
  629. package/Runtime/Tags/EffectHandler.cs +470 -393
  630. package/Runtime/Tags/EffectHandler.cs.meta +2 -2
  631. package/Runtime/Tags/ModificationAction.cs +60 -9
  632. package/Runtime/Tags/ModificationAction.cs.meta +2 -2
  633. package/Runtime/Tags/ModifierDurationType.cs +71 -13
  634. package/Runtime/Tags/ModifierDurationType.cs.meta +2 -2
  635. package/Runtime/Tags/TagHandler.cs +373 -158
  636. package/Runtime/Tags/TagHandler.cs.meta +2 -2
  637. package/Runtime/Tags.meta +2 -2
  638. package/Runtime/Utils/AnimationEventEqualityComparer.cs +198 -161
  639. package/Runtime/Utils/AnimationEventEqualityComparer.cs.meta +11 -11
  640. package/Runtime/Utils/AnimatorEnumStateMachine.cs +110 -88
  641. package/Runtime/Utils/AnimatorEnumStateMachine.cs.meta +11 -11
  642. package/Runtime/Utils/Ascii85.cs +132 -115
  643. package/Runtime/Utils/Ascii85.cs.meta +2 -2
  644. package/Runtime/Utils/Buffers.cs +1151 -550
  645. package/Runtime/Utils/Buffers.cs.meta +11 -11
  646. package/Runtime/Utils/CenterPointOffset.cs +35 -30
  647. package/Runtime/Utils/CenterPointOffset.cs.meta +2 -2
  648. package/Runtime/Utils/ChildSpawner.cs +250 -157
  649. package/Runtime/Utils/ChildSpawner.cs.meta +2 -2
  650. package/Runtime/Utils/CircleLineRenderer.cs +142 -142
  651. package/Runtime/Utils/CircleLineRenderer.cs.meta +11 -11
  652. package/Runtime/Utils/CollisionProxy.cs +48 -48
  653. package/Runtime/Utils/CollisionProxy.cs.meta +2 -2
  654. package/Runtime/Utils/CoroutineHandler.cs +4 -4
  655. package/Runtime/Utils/CoroutineHandler.cs.meta +2 -2
  656. package/Runtime/Utils/DeferredDisposalResult.cs +20 -23
  657. package/Runtime/Utils/DeferredDisposalResult.cs.meta +2 -2
  658. package/Runtime/Utils/LZMA.cs +276 -53
  659. package/Runtime/Utils/LZMA.cs.meta +2 -2
  660. package/Runtime/Utils/MatchColliderToSprite.cs +104 -104
  661. package/Runtime/Utils/MatchColliderToSprite.cs.meta +2 -2
  662. package/Runtime/Utils/MatchTransform.cs +99 -82
  663. package/Runtime/Utils/MatchTransform.cs.meta +2 -2
  664. package/Runtime/Utils/Oscillator.cs +27 -27
  665. package/Runtime/Utils/Oscillator.cs.meta +11 -11
  666. package/Runtime/Utils/PolygonCollider2DOptimizer.cs +104 -83
  667. package/Runtime/Utils/PolygonCollider2DOptimizer.cs.meta +2 -2
  668. package/Runtime/Utils/RuntimeSingleton.cs +139 -88
  669. package/Runtime/Utils/RuntimeSingleton.cs.meta +11 -11
  670. package/Runtime/Utils/ScriptableObjectSingleton.cs +226 -85
  671. package/Runtime/Utils/ScriptableObjectSingleton.cs.meta +2 -2
  672. package/Runtime/Utils/SerializedStringComparer.cs +107 -107
  673. package/Runtime/Utils/SerializedStringComparer.cs.meta +2 -2
  674. package/Runtime/Utils/SetTextureImportData.cs +69 -69
  675. package/Runtime/Utils/SetTextureImportData.cs.meta +11 -11
  676. package/Runtime/Utils/SevenZip/Common/CRC.cs +70 -70
  677. package/Runtime/Utils/SevenZip/Common/CRC.cs.meta +11 -11
  678. package/Runtime/Utils/SevenZip/Common/InBuffer.cs +84 -84
  679. package/Runtime/Utils/SevenZip/Common/InBuffer.cs.meta +11 -11
  680. package/Runtime/Utils/SevenZip/Common/OutBuffer.cs +70 -70
  681. package/Runtime/Utils/SevenZip/Common/OutBuffer.cs.meta +11 -11
  682. package/Runtime/Utils/SevenZip/Common.meta +2 -2
  683. package/Runtime/Utils/SevenZip/Compress/LZ/IMatchFinder.cs +28 -28
  684. package/Runtime/Utils/SevenZip/Compress/LZ/IMatchFinder.cs.meta +11 -11
  685. package/Runtime/Utils/SevenZip/Compress/LZ/LzBinTree.cs +454 -454
  686. package/Runtime/Utils/SevenZip/Compress/LZ/LzBinTree.cs.meta +11 -11
  687. package/Runtime/Utils/SevenZip/Compress/LZ/LzInWindow.cs +179 -179
  688. package/Runtime/Utils/SevenZip/Compress/LZ/LzInWindow.cs.meta +11 -11
  689. package/Runtime/Utils/SevenZip/Compress/LZ/LzOutWindow.cs +137 -137
  690. package/Runtime/Utils/SevenZip/Compress/LZ/LzOutWindow.cs.meta +11 -11
  691. package/Runtime/Utils/SevenZip/Compress/LZ.meta +8 -8
  692. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaBase.cs +110 -110
  693. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaBase.cs.meta +11 -11
  694. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaDecoder.cs +525 -527
  695. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaDecoder.cs.meta +11 -11
  696. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaEncoder.cs +1891 -1904
  697. package/Runtime/Utils/SevenZip/Compress/LZMA/LzmaEncoder.cs.meta +11 -11
  698. package/Runtime/Utils/SevenZip/Compress/LZMA.meta +8 -8
  699. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoder.cs +242 -242
  700. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoder.cs.meta +11 -11
  701. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoderBit.cs +146 -149
  702. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoderBit.cs.meta +11 -11
  703. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoderBitTree.cs +177 -177
  704. package/Runtime/Utils/SevenZip/Compress/RangeCoder/RangeCoderBitTree.cs.meta +11 -11
  705. package/Runtime/Utils/SevenZip/Compress/RangeCoder.meta +8 -8
  706. package/Runtime/Utils/SevenZip/Compress.meta +8 -8
  707. package/Runtime/Utils/SevenZip/ICoder.cs +177 -177
  708. package/Runtime/Utils/SevenZip/ICoder.cs.meta +11 -11
  709. package/Runtime/Utils/SevenZip.meta +2 -2
  710. package/Runtime/Utils/SpriteRendererMetadata.cs +346 -370
  711. package/Runtime/Utils/SpriteRendererMetadata.cs.meta +2 -2
  712. package/Runtime/Utils/SpriteRendererSyncer.cs +100 -100
  713. package/Runtime/Utils/SpriteRendererSyncer.cs.meta +2 -2
  714. package/Runtime/Utils/StartTracker.cs +15 -15
  715. package/Runtime/Utils/StartTracker.cs.meta +2 -2
  716. package/Runtime/Utils/TextureScale.cs +356 -179
  717. package/Runtime/Utils/TextureScale.cs.meta +2 -2
  718. package/Runtime/Utils/TypeNameSorter.cs +17 -17
  719. package/Runtime/Utils/TypeNameSorter.cs.meta +2 -2
  720. package/Runtime/Utils/UnityObjectNameComparer.cs +89 -89
  721. package/Runtime/Utils/UnityObjectNameComparer.cs.meta +2 -2
  722. package/Runtime/Utils.meta +8 -8
  723. package/Runtime/Visuals/AnimatedSpriteLayer.cs +217 -130
  724. package/Runtime/Visuals/AnimatedSpriteLayer.cs.meta +2 -2
  725. package/Runtime/Visuals/UGUI/EnhancedImage.cs +218 -85
  726. package/Runtime/Visuals/UGUI/EnhancedImage.cs.meta +2 -2
  727. package/Runtime/Visuals/UGUI.meta +2 -2
  728. package/Runtime/Visuals/UIToolkit/LayeredImage.cs +781 -484
  729. package/Runtime/Visuals/UIToolkit/LayeredImage.cs.meta +2 -2
  730. package/Runtime/Visuals/UIToolkit/MultiFileSelectorElement.cs +945 -322
  731. package/Runtime/Visuals/UIToolkit/MultiFileSelectorElement.cs.meta +2 -2
  732. package/Runtime/Visuals/UIToolkit.meta +2 -2
  733. package/Runtime/Visuals.meta +2 -2
  734. package/Runtime/WallstopStudios.UnityHelpers.asmdef +22 -14
  735. package/Runtime/WallstopStudios.UnityHelpers.asmdef.meta +7 -7
  736. package/Runtime.meta +8 -8
  737. package/SERIALIZATION.md +648 -0
  738. package/SERIALIZATION.md.meta +7 -0
  739. package/SINGLETONS.md +427 -0
  740. package/SINGLETONS.md.meta +7 -0
  741. package/SPATIAL_TREES_2D_GUIDE.md +261 -0
  742. package/SPATIAL_TREES_2D_GUIDE.md.meta +7 -0
  743. package/SPATIAL_TREES_3D_GUIDE.md +214 -0
  744. package/SPATIAL_TREES_3D_GUIDE.md.meta +7 -0
  745. package/SPATIAL_TREE_2D_PERFORMANCE.md +238 -0
  746. package/SPATIAL_TREE_2D_PERFORMANCE.md.meta +7 -0
  747. package/SPATIAL_TREE_3D_PERFORMANCE.md +240 -0
  748. package/SPATIAL_TREE_3D_PERFORMANCE.md.meta +7 -0
  749. package/SPATIAL_TREE_SEMANTICS.md +106 -0
  750. package/SPATIAL_TREE_SEMANTICS.md.meta +7 -0
  751. package/Samples~/DI - VContainer/Prefabs/RelationalConsumer.prefab +77 -0
  752. package/Samples~/DI - VContainer/Prefabs/RelationalConsumer.prefab.meta +8 -0
  753. package/Samples~/DI - VContainer/Prefabs/Spawner.prefab +47 -0
  754. package/Samples~/DI - VContainer/Prefabs/Spawner.prefab.meta +8 -0
  755. package/Samples~/DI - VContainer/Prefabs.meta +9 -0
  756. package/Samples~/DI - VContainer/README.md +334 -0
  757. package/Samples~/DI - VContainer/README.md.meta +8 -0
  758. package/Samples~/DI - VContainer/Scenes/VContainer_Sample.unity +120 -0
  759. package/Samples~/DI - VContainer/Scenes/VContainer_Sample.unity.meta +8 -0
  760. package/Samples~/DI - VContainer/Scenes.meta +9 -0
  761. package/Samples~/DI - VContainer/Scripts/GameLifetimeScope.cs +24 -0
  762. package/Samples~/DI - VContainer/Scripts/GameLifetimeScope.cs.meta +12 -0
  763. package/Samples~/DI - VContainer/Scripts/RelationalConsumer.cs +21 -0
  764. package/Samples~/DI - VContainer/Scripts/RelationalConsumer.cs.meta +12 -0
  765. package/Samples~/DI - VContainer/Scripts/Samples.UnityHelpers.DI.VContainer.asmdef +37 -0
  766. package/Samples~/DI - VContainer/Scripts/Samples.UnityHelpers.DI.VContainer.asmdef.meta +8 -0
  767. package/Samples~/DI - VContainer/Scripts/Spawner.cs +21 -0
  768. package/Samples~/DI - VContainer/Scripts/Spawner.cs.meta +12 -0
  769. package/Samples~/DI - VContainer/Scripts.meta +9 -0
  770. package/Samples~/DI - VContainer.meta +9 -0
  771. package/Samples~/DI - Zenject/Prefabs/RelationalConsumer.prefab +77 -0
  772. package/Samples~/DI - Zenject/Prefabs/RelationalConsumer.prefab.meta +8 -0
  773. package/Samples~/DI - Zenject/Prefabs/SpawnerZenject.prefab +47 -0
  774. package/Samples~/DI - Zenject/Prefabs/SpawnerZenject.prefab.meta +8 -0
  775. package/Samples~/DI - Zenject/Prefabs.meta +9 -0
  776. package/Samples~/DI - Zenject/README.md +389 -0
  777. package/Samples~/DI - Zenject/README.md.meta +7 -0
  778. package/Samples~/DI - Zenject/Scenes/Zenject_Sample.unity +164 -0
  779. package/Samples~/DI - Zenject/Scenes/Zenject_Sample.unity.meta +8 -0
  780. package/Samples~/DI - Zenject/Scenes.meta +9 -0
  781. package/Samples~/DI - Zenject/Scripts/RelationalConsumer.cs +19 -0
  782. package/Samples~/DI - Zenject/Scripts/RelationalConsumer.cs.meta +12 -0
  783. package/Samples~/DI - Zenject/Scripts/Samples.UnityHelpers.DI.Zenject.asmdef +36 -0
  784. package/Samples~/DI - Zenject/Scripts/Samples.UnityHelpers.DI.Zenject.asmdef.meta +8 -0
  785. package/Samples~/DI - Zenject/Scripts/SceneContextPlaceholder.cs +47 -0
  786. package/Samples~/DI - Zenject/Scripts/SceneContextPlaceholder.cs.meta +12 -0
  787. package/Samples~/DI - Zenject/Scripts/SpawnerZenject.cs +20 -0
  788. package/Samples~/DI - Zenject/Scripts/SpawnerZenject.cs.meta +12 -0
  789. package/Samples~/DI - Zenject/Scripts.meta +9 -0
  790. package/Samples~/DI - Zenject.meta +9 -0
  791. package/Samples~/Random - PRNG/README.md +12 -0
  792. package/Samples~/Random - PRNG/README.md.meta +8 -0
  793. package/Samples~/Random - PRNG/Scripts/RandomPrngDemo.cs +28 -0
  794. package/Samples~/Random - PRNG/Scripts/RandomPrngDemo.cs.meta +12 -0
  795. package/Samples~/Random - PRNG/Scripts/Samples.UnityHelpers.Random.Prng.asmdef +17 -0
  796. package/Samples~/Random - PRNG/Scripts/Samples.UnityHelpers.Random.Prng.asmdef.meta +8 -0
  797. package/Samples~/Random - PRNG/Scripts.meta +9 -0
  798. package/Samples~/Random - PRNG.meta +9 -0
  799. package/Samples~/Relational Components - Basic/README.md +19 -0
  800. package/Samples~/Relational Components - Basic/README.md.meta +8 -0
  801. package/Samples~/Relational Components - Basic/Scripts/RelationalBasicConsumer.cs +37 -0
  802. package/Samples~/Relational Components - Basic/Scripts/RelationalBasicConsumer.cs.meta +12 -0
  803. package/Samples~/Relational Components - Basic/Scripts/Samples.UnityHelpers.Relational.Basic.asmdef +17 -0
  804. package/Samples~/Relational Components - Basic/Scripts/Samples.UnityHelpers.Relational.Basic.asmdef.meta +8 -0
  805. package/Samples~/Relational Components - Basic/Scripts.meta +9 -0
  806. package/Samples~/Relational Components - Basic.meta +9 -0
  807. package/Samples~/Serialization - JSON/README.md +13 -0
  808. package/Samples~/Serialization - JSON/README.md.meta +8 -0
  809. package/Samples~/Serialization - JSON/Scripts/JsonSerializationDemo.cs +50 -0
  810. package/Samples~/Serialization - JSON/Scripts/JsonSerializationDemo.cs.meta +12 -0
  811. package/Samples~/Serialization - JSON/Scripts/Samples.UnityHelpers.Serialization.Json.asmdef +17 -0
  812. package/Samples~/Serialization - JSON/Scripts/Samples.UnityHelpers.Serialization.Json.asmdef.meta +8 -0
  813. package/Samples~/Serialization - JSON/Scripts.meta +9 -0
  814. package/Samples~/Serialization - JSON.meta +9 -0
  815. package/Samples~/Spatial Structures - 2D and 3D/README.md +13 -0
  816. package/Samples~/Spatial Structures - 2D and 3D/README.md.meta +8 -0
  817. package/Samples~/Spatial Structures - 2D and 3D/Scripts/Samples.UnityHelpers.SpatialStructures.asmdef +17 -0
  818. package/Samples~/Spatial Structures - 2D and 3D/Scripts/Samples.UnityHelpers.SpatialStructures.asmdef.meta +8 -0
  819. package/Samples~/Spatial Structures - 2D and 3D/Scripts/SpatialStructuresDemo.cs +62 -0
  820. package/Samples~/Spatial Structures - 2D and 3D/Scripts/SpatialStructuresDemo.cs.meta +12 -0
  821. package/Samples~/Spatial Structures - 2D and 3D/Scripts.meta +9 -0
  822. package/Samples~/Spatial Structures - 2D and 3D.meta +9 -0
  823. package/Samples~/UGUI - EnhancedImage/README.md +12 -0
  824. package/Samples~/UGUI - EnhancedImage/README.md.meta +8 -0
  825. package/Samples~/UGUI - EnhancedImage/Scripts/EnhancedImageDemo.cs +36 -0
  826. package/Samples~/UGUI - EnhancedImage/Scripts/EnhancedImageDemo.cs.meta +12 -0
  827. package/Samples~/UGUI - EnhancedImage/Scripts/Samples.UnityHelpers.UGUI.EnhancedImage.asmdef +17 -0
  828. package/Samples~/UGUI - EnhancedImage/Scripts/Samples.UnityHelpers.UGUI.EnhancedImage.asmdef.meta +8 -0
  829. package/Samples~/UGUI - EnhancedImage/Scripts.meta +9 -0
  830. package/Samples~/UGUI - EnhancedImage.meta +9 -0
  831. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/README.md +12 -0
  832. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/README.md.meta +8 -0
  833. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts/Editor/MultiFileSelectorSampleWindow.cs +45 -0
  834. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts/Editor/MultiFileSelectorSampleWindow.cs.meta +12 -0
  835. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts/Editor/Samples.UnityHelpers.UIToolkit.Editor.asmdef +19 -0
  836. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts/Editor/Samples.UnityHelpers.UIToolkit.Editor.asmdef.meta +8 -0
  837. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts/Editor.meta +9 -0
  838. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/Scripts.meta +9 -0
  839. package/Samples~/UI Toolkit - MultiFile Selector (Editor).meta +9 -0
  840. package/Shaders/Materials/BackgroundMask-Material.mat +59 -59
  841. package/Shaders/Materials/BackgroundMask-Material.mat.meta +8 -8
  842. package/Shaders/Materials.meta +8 -8
  843. package/Shaders/ShaderGraph/BackgroundMask.shadergraph +1653 -1653
  844. package/Shaders/ShaderGraph/BackgroundMask.shadergraph.meta +10 -10
  845. package/Shaders/ShaderGraph/DebugDisplayValue.shadersubgraph +835 -835
  846. package/Shaders/ShaderGraph/DebugDisplayValue.shadersubgraph.meta +10 -10
  847. package/Shaders/ShaderGraph.meta +8 -8
  848. package/Shaders/Support/EnhancedImageSupport.shader +64 -0
  849. package/Shaders/Support/EnhancedImageSupport.shader.meta +9 -0
  850. package/Shaders/Support.meta +8 -0
  851. package/Shaders.meta +8 -8
  852. package/Styles/Elements/Progress/ArcedProgressBar.cs +345 -345
  853. package/Styles/Elements/Progress/ArcedProgressBar.cs.meta +2 -2
  854. package/Styles/Elements/Progress/CircularProgressBar.cs +307 -307
  855. package/Styles/Elements/Progress/CircularProgressBar.cs.meta +2 -2
  856. package/Styles/Elements/Progress/GlitchProgressBar.cs +416 -416
  857. package/Styles/Elements/Progress/GlitchProgressBar.cs.meta +2 -2
  858. package/Styles/Elements/Progress/LiquidProgressBar.cs +632 -632
  859. package/Styles/Elements/Progress/LiquidProgressBar.cs.meta +2 -2
  860. package/Styles/Elements/Progress/MarchingAntsProgressBar.cs +722 -722
  861. package/Styles/Elements/Progress/MarchingAntsProgressBar.cs.meta +2 -2
  862. package/Styles/Elements/Progress/RegularProgressBar.cs +405 -405
  863. package/Styles/Elements/Progress/RegularProgressBar.cs.meta +2 -2
  864. package/Styles/Elements/Progress/WigglyProgressBar.cs +837 -837
  865. package/Styles/Elements/Progress/WigglyProgressBar.cs.meta +2 -2
  866. package/Styles/Elements/Progress.meta +2 -2
  867. package/Styles/Elements.meta +2 -2
  868. package/Styles/USS/ArcedProgressBar.uss +18 -18
  869. package/Styles/USS/ArcedProgressBar.uss.meta +2 -2
  870. package/Styles/USS/CirclularProgressBar.uss +17 -17
  871. package/Styles/USS/CirclularProgressBar.uss.meta +2 -2
  872. package/Styles/USS/RegularProgressBar.uss +32 -32
  873. package/Styles/USS/RegularProgressBar.uss.meta +2 -2
  874. package/Styles/USS/WigglyProgressBar.uss +16 -16
  875. package/Styles/USS/WigglyProgressBar.uss.meta +2 -2
  876. package/Styles/USS.meta +2 -2
  877. package/Styles/WallstopStudios.UnityHelpers.Styles.asmdef +14 -17
  878. package/Styles/WallstopStudios.UnityHelpers.Styles.asmdef.meta +7 -7
  879. package/Styles.meta +2 -2
  880. package/THIRD_PARTY_NOTICES.md +74 -0
  881. package/THIRD_PARTY_NOTICES.md.meta +7 -0
  882. package/Tests/Editor/Attributes/AnimationEventHelpersTests.cs +155 -0
  883. package/Tests/Editor/Attributes/AnimationEventHelpersTests.cs.meta +11 -0
  884. package/Tests/Editor/Attributes.meta +8 -0
  885. package/Tests/Editor/Core/Attributes/RelationalComponentAssignerTests.cs +118 -0
  886. package/Tests/Editor/Core/Attributes/RelationalComponentAssignerTests.cs.meta +11 -0
  887. package/Tests/Editor/Core/Attributes.meta +8 -0
  888. package/Tests/Editor/Core.meta +8 -0
  889. package/Tests/Editor/Extensions/SerializedPropertyExtensionsTests.cs +194 -0
  890. package/Tests/Editor/Extensions/SerializedPropertyExtensionsTests.cs.meta +3 -0
  891. package/Tests/Editor/Extensions.meta +3 -0
  892. package/Tests/Editor/Helper/DummyScriptableObject.cs +6 -0
  893. package/Tests/Editor/Helper/DummyScriptableObject.cs.meta +3 -0
  894. package/Tests/Editor/Helper/HelpersTests.cs +101 -0
  895. package/Tests/Editor/Helper/HelpersTests.cs.meta +3 -0
  896. package/Tests/Editor/Helper/ObjectHelpersEditorTests.cs +63 -0
  897. package/Tests/Editor/Helper/ObjectHelpersEditorTests.cs.meta +11 -0
  898. package/Tests/Editor/Helper/PromptScope.cs +28 -0
  899. package/Tests/Editor/Helper/PromptScope.cs.meta +11 -0
  900. package/Tests/Editor/Helper/ReflectionHelpersEditorTests.cs +105 -0
  901. package/Tests/Editor/Helper/ReflectionHelpersEditorTests.cs.meta +11 -0
  902. package/Tests/Editor/Helper/SpriteHelpersTests.cs +334 -0
  903. package/Tests/Editor/Helper/SpriteHelpersTests.cs.meta +3 -0
  904. package/Tests/Editor/Helper/SpriteSettingsApplierAdditionalTests.cs +183 -0
  905. package/Tests/Editor/Helper/SpriteSettingsApplierAdditionalTests.cs.meta +11 -0
  906. package/Tests/Editor/Helper/SpriteSettingsApplierTests.cs +161 -0
  907. package/Tests/Editor/Helper/SpriteSettingsApplierTests.cs.meta +11 -0
  908. package/Tests/Editor/Helper.meta +3 -0
  909. package/Tests/Editor/Integrations/VContainer/VContainerIntegrationCompilationTests.cs +40 -0
  910. package/Tests/Editor/Integrations/VContainer/VContainerIntegrationCompilationTests.cs.meta +11 -0
  911. package/Tests/Editor/Integrations/VContainer/VContainerRelationalEntryPointTests.cs +77 -0
  912. package/Tests/Editor/Integrations/VContainer/VContainerRelationalEntryPointTests.cs.meta +11 -0
  913. package/Tests/Editor/Integrations/VContainer/WallstopStudios.UnityHelpers.Tests.Editor.VContainer.asmdef +36 -0
  914. package/Tests/Editor/Integrations/VContainer/WallstopStudios.UnityHelpers.Tests.Editor.VContainer.asmdef.meta +7 -0
  915. package/Tests/Editor/Integrations/VContainer.meta +8 -0
  916. package/Tests/Editor/Integrations/Zenject/WallstopStudios.UnityHelpers.Tests.Editor.Zenject.asmdef +36 -0
  917. package/Tests/Editor/Integrations/Zenject/WallstopStudios.UnityHelpers.Tests.Editor.Zenject.asmdef.meta +7 -0
  918. package/Tests/Editor/Integrations/Zenject/ZenjectIntegrationCompilationTests.cs +40 -0
  919. package/Tests/Editor/Integrations/Zenject/ZenjectIntegrationCompilationTests.cs.meta +11 -0
  920. package/Tests/Editor/Integrations/Zenject/ZenjectRelationalInitializerTests.cs +76 -0
  921. package/Tests/Editor/Integrations/Zenject/ZenjectRelationalInitializerTests.cs.meta +11 -0
  922. package/Tests/Editor/Integrations/Zenject.meta +8 -0
  923. package/Tests/Editor/Integrations.meta +8 -0
  924. package/Tests/Editor/MultiFileSelectorElementTests.cs +265 -0
  925. package/Tests/Editor/MultiFileSelectorElementTests.cs.meta +11 -0
  926. package/Tests/Editor/MultiFileSelectorPersistenceManagerTests.cs +100 -0
  927. package/Tests/Editor/MultiFileSelectorPersistenceManagerTests.cs.meta +11 -0
  928. package/Tests/Editor/Sprites/AnimationCopierWindowTests.cs +199 -0
  929. package/Tests/Editor/Sprites/AnimationCopierWindowTests.cs.meta +11 -0
  930. package/Tests/Editor/Sprites/ScriptableSpriteAtlasEditorTests.cs +108 -0
  931. package/Tests/Editor/Sprites/ScriptableSpriteAtlasEditorTests.cs.meta +11 -0
  932. package/Tests/Editor/Sprites/SpriteCropperAdditionalTests.cs +323 -0
  933. package/Tests/Editor/Sprites/SpriteCropperAdditionalTests.cs.meta +11 -0
  934. package/Tests/Editor/Sprites/SpriteCropperTests.cs +162 -0
  935. package/Tests/Editor/Sprites/SpriteCropperTests.cs.meta +11 -0
  936. package/Tests/Editor/Sprites/SpritePivotAdjusterAdditionalTests.cs +227 -0
  937. package/Tests/Editor/Sprites/SpritePivotAdjusterAdditionalTests.cs.meta +11 -0
  938. package/Tests/Editor/Sprites/SpritePivotAdjusterTests.cs +113 -0
  939. package/Tests/Editor/Sprites/SpritePivotAdjusterTests.cs.meta +11 -0
  940. package/Tests/Editor/Sprites/TexturePlatformNameHelperTests.cs +28 -0
  941. package/Tests/Editor/Sprites/TexturePlatformNameHelperTests.cs.meta +11 -0
  942. package/Tests/Editor/Sprites/TextureResizerWizardTests.cs +248 -0
  943. package/Tests/Editor/Sprites/TextureResizerWizardTests.cs.meta +11 -0
  944. package/Tests/Editor/Sprites/TextureSettingsApplierAPITests.cs +180 -0
  945. package/Tests/Editor/Sprites/TextureSettingsApplierAPITests.cs.meta +11 -0
  946. package/Tests/Editor/Sprites/TextureSettingsApplierWizardAdditionalTests.cs +295 -0
  947. package/Tests/Editor/Sprites/TextureSettingsApplierWizardAdditionalTests.cs.meta +11 -0
  948. package/Tests/Editor/Sprites/TextureSettingsApplierWizardTests.cs +134 -0
  949. package/Tests/Editor/Sprites/TextureSettingsApplierWizardTests.cs.meta +11 -0
  950. package/Tests/Editor/Sprites.meta +8 -0
  951. package/Tests/Editor/TestComponents/PrewarmTesterComponent.cs +10 -0
  952. package/Tests/Editor/TestComponents/PrewarmTesterComponent.cs.meta +11 -0
  953. package/Tests/Editor/TestComponents.meta +8 -0
  954. package/Tests/Editor/Tools/ImageBlurToolTests.cs +135 -0
  955. package/Tests/Editor/Tools/ImageBlurToolTests.cs.meta +11 -0
  956. package/Tests/Editor/Tools.meta +8 -0
  957. package/Tests/Editor/Utils/CommonTestBase.cs +208 -0
  958. package/Tests/Editor/Utils/CommonTestBase.cs.meta +11 -0
  959. package/Tests/Editor/Utils/ScriptableObjectSingletonCreatorEditorTests.cs +306 -0
  960. package/Tests/Editor/Utils/ScriptableObjectSingletonCreatorEditorTests.cs.meta +9 -0
  961. package/Tests/Editor/Utils/ScriptableObjectSingletonCreatorTests.cs +183 -0
  962. package/Tests/Editor/Utils/ScriptableObjectSingletonCreatorTests.cs.meta +11 -0
  963. package/Tests/Editor/Utils/ScriptableObjectSingletonTests.cs +466 -0
  964. package/Tests/Editor/Utils/ScriptableObjectSingletonTests.cs.meta +11 -0
  965. package/Tests/Editor/Utils.meta +3 -0
  966. package/Tests/Editor/WallstopStudios.UnityHelpers.Tests.Editor.asmdef +19 -0
  967. package/Tests/Editor/WallstopStudios.UnityHelpers.Tests.Editor.asmdef.meta +7 -0
  968. package/Tests/Editor/Windows/FitTextureSizeWindowTests.cs +781 -0
  969. package/Tests/Editor/Windows/FitTextureSizeWindowTests.cs.meta +11 -0
  970. package/Tests/Editor/Windows/PrefabCheckerFolderAdditionTests.cs +96 -0
  971. package/Tests/Editor/Windows/PrefabCheckerFolderAdditionTests.cs.meta +11 -0
  972. package/Tests/Editor/Windows/PrefabCheckerTests.cs +81 -0
  973. package/Tests/Editor/Windows/PrefabCheckerTests.cs.meta +11 -0
  974. package/Tests/Editor/Windows.meta +8 -0
  975. package/Tests/Editor.meta +8 -0
  976. package/Tests/Runtime/AssemblyInfo.cs +4 -0
  977. package/Tests/Runtime/AssemblyInfo.cs.meta +3 -0
  978. package/Tests/Runtime/Attributes/ChildComponentTests.cs +766 -81
  979. package/Tests/Runtime/Attributes/ChildComponentTests.cs.meta +2 -2
  980. package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs +28 -28
  981. package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs.meta +2 -2
  982. package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs +28 -28
  983. package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs.meta +2 -2
  984. package/Tests/Runtime/{Components → Attributes/Components}/RelationalComponentTesterComplex.cs +34 -34
  985. package/Tests/Runtime/{Components → Attributes/Components}/RelationalComponentTesterComplex.cs.meta +2 -2
  986. package/Tests/Runtime/Attributes/Components/RelationalComponentsTesterSimple.cs +37 -0
  987. package/Tests/Runtime/{Components → Attributes/Components}/RelationalComponentsTesterSimple.cs.meta +2 -2
  988. package/Tests/Runtime/Attributes/Components.meta +2 -2
  989. package/Tests/Runtime/Attributes/MiscRuntimeAttributeTests.cs +75 -0
  990. package/Tests/Runtime/Attributes/MiscRuntimeAttributeTests.cs.meta +11 -0
  991. package/Tests/Runtime/Attributes/NotNullAttributeTests.cs +26 -0
  992. package/Tests/Runtime/Attributes/NotNullAttributeTests.cs.meta +3 -0
  993. package/Tests/Runtime/Attributes/ParentComponentTests.cs +565 -68
  994. package/Tests/Runtime/Attributes/ParentComponentTests.cs.meta +2 -2
  995. package/Tests/Runtime/Attributes/RelationalComponentAdvancedTests.cs +614 -0
  996. package/Tests/Runtime/Attributes/RelationalComponentAdvancedTests.cs.meta +11 -0
  997. package/Tests/Runtime/Attributes/RelationalComponentBackwardCompatibilityTests.cs +478 -0
  998. package/Tests/Runtime/Attributes/RelationalComponentBackwardCompatibilityTests.cs.meta +11 -0
  999. package/Tests/Runtime/Attributes/RelationalComponentExtensionsTests.cs +56 -0
  1000. package/Tests/Runtime/Attributes/RelationalComponentExtensionsTests.cs.meta +11 -0
  1001. package/Tests/Runtime/Attributes/RelationalComponentHashSetTests.cs +226 -0
  1002. package/Tests/Runtime/Attributes/RelationalComponentHashSetTests.cs.meta +11 -0
  1003. package/Tests/Runtime/Attributes/RelationalComponentInitializerTests.cs +109 -0
  1004. package/Tests/Runtime/Attributes/RelationalComponentInitializerTests.cs.meta +11 -0
  1005. package/Tests/Runtime/Attributes/RelationalComponentTagAndNameFilterEdgeTests.cs +234 -0
  1006. package/Tests/Runtime/Attributes/RelationalComponentTagAndNameFilterEdgeTests.cs.meta +11 -0
  1007. package/Tests/Runtime/Attributes/SiblingComponentTests.cs +721 -0
  1008. package/Tests/Runtime/Attributes/SiblingComponentTests.cs.meta +11 -0
  1009. package/Tests/Runtime/Attributes/ValidateAssignmentAttributeTests.cs +96 -0
  1010. package/Tests/Runtime/Attributes/ValidateAssignmentAttributeTests.cs.meta +11 -0
  1011. package/Tests/Runtime/Attributes.meta +2 -2
  1012. package/Tests/Runtime/Core/Random/RandomComparerTests.cs +166 -0
  1013. package/Tests/Runtime/Core/Random/RandomComparerTests.cs.meta +11 -0
  1014. package/Tests/Runtime/Core/Random.meta +8 -0
  1015. package/Tests/Runtime/Core/Threading/SingleThreadedThreadPoolTests.cs +56 -56
  1016. package/Tests/Runtime/Core/Threading/SingleThreadedThreadPoolTests.cs.meta +2 -2
  1017. package/Tests/Runtime/Core/Threading.meta +2 -2
  1018. package/Tests/Runtime/Core.meta +2 -2
  1019. package/Tests/Runtime/DataStructures/BalancedKDTree2DTests.cs +562 -0
  1020. package/Tests/Runtime/DataStructures/{BalancedKDTreeTests.cs.meta → BalancedKDTree2DTests.cs.meta} +11 -11
  1021. package/Tests/Runtime/DataStructures/BalancedKDTree3DTests.cs +10 -0
  1022. package/Tests/Runtime/DataStructures/BalancedKDTree3DTests.cs.meta +11 -0
  1023. package/Tests/Runtime/DataStructures/BitSetTests.cs +1400 -0
  1024. package/Tests/Runtime/DataStructures/BitSetTests.cs.meta +3 -0
  1025. package/Tests/Runtime/DataStructures/BoundingBox3DTests.cs +1215 -0
  1026. package/Tests/Runtime/DataStructures/BoundingBox3DTests.cs.meta +11 -0
  1027. package/Tests/Runtime/DataStructures/CircleTests.cs +965 -0
  1028. package/Tests/Runtime/DataStructures/CircleTests.cs.meta +11 -0
  1029. package/Tests/Runtime/DataStructures/CyclicBufferTests.cs +2083 -324
  1030. package/Tests/Runtime/DataStructures/CyclicBufferTests.cs.meta +2 -2
  1031. package/Tests/Runtime/DataStructures/DequeTests.cs +790 -0
  1032. package/Tests/Runtime/DataStructures/DequeTests.cs.meta +3 -0
  1033. package/Tests/Runtime/DataStructures/DisjointSetTests.cs +1114 -0
  1034. package/Tests/Runtime/DataStructures/DisjointSetTests.cs.meta +3 -0
  1035. package/Tests/Runtime/DataStructures/FastOneOfTests.cs +966 -0
  1036. package/Tests/Runtime/DataStructures/FastOneOfTests.cs.meta +11 -0
  1037. package/Tests/Runtime/DataStructures/FastVector2IntTests.cs +286 -0
  1038. package/Tests/Runtime/DataStructures/FastVector2IntTests.cs.meta +11 -0
  1039. package/Tests/Runtime/DataStructures/FastVector3IntTests.cs +414 -0
  1040. package/Tests/Runtime/DataStructures/FastVector3IntTests.cs.meta +11 -0
  1041. package/Tests/Runtime/DataStructures/HeapTests.cs +1953 -0
  1042. package/Tests/Runtime/DataStructures/HeapTests.cs.meta +11 -0
  1043. package/Tests/Runtime/DataStructures/ImmutableBitSetTests.cs +833 -0
  1044. package/Tests/Runtime/DataStructures/ImmutableBitSetTests.cs.meta +3 -0
  1045. package/Tests/Runtime/DataStructures/KDTree3DTestsBase.cs +297 -0
  1046. package/Tests/Runtime/DataStructures/KDTree3DTestsBase.cs.meta +11 -0
  1047. package/Tests/Runtime/DataStructures/OctTree3DTests.cs +351 -0
  1048. package/Tests/Runtime/DataStructures/OctTree3DTests.cs.meta +11 -0
  1049. package/Tests/Runtime/DataStructures/PriorityQueueTests.cs +71 -0
  1050. package/Tests/Runtime/DataStructures/PriorityQueueTests.cs.meta +3 -0
  1051. package/Tests/Runtime/DataStructures/ProtobufSerializationTests.cs +475 -0
  1052. package/Tests/Runtime/DataStructures/ProtobufSerializationTests.cs.meta +11 -0
  1053. package/Tests/Runtime/DataStructures/QuadTree2DTests.cs +660 -0
  1054. package/Tests/Runtime/DataStructures/QuadTree2DTests.cs.meta +11 -0
  1055. package/Tests/Runtime/DataStructures/RTree2DTests.cs +823 -0
  1056. package/Tests/Runtime/DataStructures/RTree2DTests.cs.meta +3 -0
  1057. package/Tests/Runtime/DataStructures/RTree3DTests.cs +270 -0
  1058. package/Tests/Runtime/DataStructures/RTree3DTests.cs.meta +11 -0
  1059. package/Tests/Runtime/DataStructures/SparseSetTests.cs +1146 -0
  1060. package/Tests/Runtime/DataStructures/SparseSetTests.cs.meta +3 -0
  1061. package/Tests/Runtime/DataStructures/SpatialHashTests.cs +992 -0
  1062. package/Tests/Runtime/DataStructures/SpatialHashTests.cs.meta +11 -0
  1063. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsConsistencyTests.cs +351 -0
  1064. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsConsistencyTests.cs.meta +11 -0
  1065. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsEdgeTests.cs +127 -0
  1066. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsEdgeTests.cs.meta +11 -0
  1067. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsFuzzTests.cs +218 -0
  1068. package/Tests/Runtime/DataStructures/SpatialTree2DBoundsFuzzTests.cs.meta +11 -0
  1069. package/Tests/Runtime/DataStructures/SpatialTree2DTests.cs +396 -0
  1070. package/Tests/Runtime/DataStructures/SpatialTree2DTests.cs.meta +11 -0
  1071. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsConsistencyTests.cs +281 -0
  1072. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsConsistencyTests.cs.meta +11 -0
  1073. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsEdgeTests.cs +127 -0
  1074. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsEdgeTests.cs.meta +11 -0
  1075. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsFuzzTests.cs +170 -0
  1076. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsFuzzTests.cs.meta +11 -0
  1077. package/Tests/Runtime/DataStructures/SpatialTree3DTests.cs +474 -0
  1078. package/Tests/Runtime/DataStructures/SpatialTree3DTests.cs.meta +11 -0
  1079. package/Tests/Runtime/DataStructures/SphereTests.cs +806 -0
  1080. package/Tests/Runtime/DataStructures/SphereTests.cs.meta +3 -0
  1081. package/Tests/Runtime/DataStructures/StringWrapperTests.cs +333 -0
  1082. package/Tests/Runtime/DataStructures/StringWrapperTests.cs.meta +11 -0
  1083. package/Tests/Runtime/DataStructures/TimedCacheTests.cs +669 -0
  1084. package/Tests/Runtime/DataStructures/TimedCacheTests.cs.meta +11 -0
  1085. package/Tests/Runtime/DataStructures/TrieTests.cs +3385 -0
  1086. package/Tests/Runtime/DataStructures/TrieTests.cs.meta +11 -0
  1087. package/Tests/Runtime/DataStructures/UnbalancedKDTree2DTests.cs +565 -0
  1088. package/Tests/Runtime/DataStructures/{UnbalancedKDTreeTests.cs.meta → UnbalancedKDTree2DTests.cs.meta} +11 -11
  1089. package/Tests/Runtime/DataStructures/UnbalancedKDTree3DTests.cs +10 -0
  1090. package/Tests/Runtime/DataStructures/UnbalancedKDTree3DTests.cs.meta +11 -0
  1091. package/Tests/Runtime/DataStructures.meta +8 -8
  1092. package/Tests/Runtime/Extensions/AnimatorExtensionsTests.cs +28 -0
  1093. package/Tests/Runtime/Extensions/AnimatorExtensionsTests.cs.meta +11 -0
  1094. package/Tests/Runtime/Extensions/AsyncOperationExtensionsTests.cs +667 -0
  1095. package/Tests/Runtime/Extensions/AsyncOperationExtensionsTests.cs.meta +11 -0
  1096. package/Tests/Runtime/Extensions/CircleExtensionsTests.cs +230 -0
  1097. package/Tests/Runtime/Extensions/CircleExtensionsTests.cs.meta +11 -0
  1098. package/Tests/Runtime/Extensions/ColorExtensionsTests.cs +55 -0
  1099. package/Tests/Runtime/Extensions/ColorExtensionsTests.cs.meta +11 -0
  1100. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs +724 -438
  1101. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs.meta +2 -2
  1102. package/Tests/Runtime/Extensions/DirectionExtensionsComprehensiveTests.cs +403 -0
  1103. package/Tests/Runtime/Extensions/DirectionExtensionsComprehensiveTests.cs.meta +11 -0
  1104. package/Tests/Runtime/Extensions/DirectionExtensionsTests.cs +69 -0
  1105. package/Tests/Runtime/Extensions/DirectionExtensionsTests.cs.meta +11 -0
  1106. package/Tests/Runtime/Extensions/EnumExtensionTests.cs +809 -153
  1107. package/Tests/Runtime/Extensions/EnumExtensionTests.cs.meta +2 -2
  1108. package/Tests/Runtime/Extensions/IEnumerableExtensionsTests.cs +191 -0
  1109. package/Tests/Runtime/Extensions/IEnumerableExtensionsTests.cs.meta +11 -0
  1110. package/Tests/Runtime/Extensions/IListExtensionTests.cs +955 -169
  1111. package/Tests/Runtime/Extensions/IListExtensionTests.cs.meta +2 -2
  1112. package/Tests/Runtime/Extensions/IReadonlyListExtensionTests.cs +266 -58
  1113. package/Tests/Runtime/Extensions/IReadonlyListExtensionTests.cs.meta +2 -2
  1114. package/Tests/Runtime/Extensions/LoggingExtensionTests.cs +721 -718
  1115. package/Tests/Runtime/Extensions/LoggingExtensionTests.cs.meta +2 -2
  1116. package/Tests/Runtime/Extensions/ProtoEqualityExtensionsTests.cs +565 -0
  1117. package/Tests/Runtime/Extensions/ProtoEqualityExtensionsTests.cs.meta +3 -0
  1118. package/Tests/Runtime/Extensions/ProtoEqualityPolymorphismTests.cs +100 -0
  1119. package/Tests/Runtime/Extensions/ProtoEqualityPolymorphismTests.cs.meta +11 -0
  1120. package/Tests/Runtime/Extensions/RandomExtensionTests.cs +719 -27
  1121. package/Tests/Runtime/Extensions/RandomExtensionTests.cs.meta +2 -2
  1122. package/Tests/Runtime/Extensions/StringExtensionTests.cs +2592 -31
  1123. package/Tests/Runtime/Extensions/StringExtensionTests.cs.meta +2 -2
  1124. package/Tests/Runtime/Extensions/UnityExtensionsBasicTests.cs +166 -0
  1125. package/Tests/Runtime/Extensions/UnityExtensionsBasicTests.cs.meta +11 -0
  1126. package/Tests/Runtime/Extensions/UnityExtensionsComprehensiveTests.cs +1446 -0
  1127. package/Tests/Runtime/Extensions/UnityExtensionsComprehensiveTests.cs.meta +11 -0
  1128. package/Tests/Runtime/Extensions/UnityExtensionsMathTests.cs +1779 -0
  1129. package/Tests/Runtime/Extensions/UnityExtensionsMathTests.cs.meta +11 -0
  1130. package/Tests/Runtime/Extensions/UnityExtensionsVector2HullTests.cs +292 -0
  1131. package/Tests/Runtime/Extensions/UnityExtensionsVector2HullTests.cs.meta +11 -0
  1132. package/Tests/Runtime/Extensions/UnityLogTagFormatterEdgeTests.cs +260 -0
  1133. package/Tests/Runtime/Extensions/UnityLogTagFormatterEdgeTests.cs.meta +11 -0
  1134. package/Tests/Runtime/Extensions.meta +2 -2
  1135. package/Tests/Runtime/Helper/ArrayConverterTests.cs +19 -19
  1136. package/Tests/Runtime/Helper/ArrayConverterTests.cs.meta +2 -2
  1137. package/Tests/Runtime/Helper/AssignUtilitiesTests.cs +38 -0
  1138. package/Tests/Runtime/Helper/AssignUtilitiesTests.cs.meta +11 -0
  1139. package/Tests/Runtime/Helper/DirectoryHelperTests.cs +347 -0
  1140. package/Tests/Runtime/Helper/DirectoryHelperTests.cs.meta +11 -0
  1141. package/Tests/Runtime/Helper/EnumerablesTests.cs +45 -0
  1142. package/Tests/Runtime/Helper/EnumerablesTests.cs.meta +11 -0
  1143. package/Tests/Runtime/Helper/FileHelperTests.cs +481 -0
  1144. package/Tests/Runtime/Helper/FileHelperTests.cs.meta +11 -0
  1145. package/Tests/Runtime/Helper/FormattingHelpersTests.cs +353 -0
  1146. package/Tests/Runtime/Helper/FormattingHelpersTests.cs.meta +11 -0
  1147. package/Tests/Runtime/Helper/FuncBasedComparerTests.cs +27 -0
  1148. package/Tests/Runtime/Helper/FuncBasedComparerTests.cs.meta +11 -0
  1149. package/Tests/Runtime/Helper/GeometryTests.cs +517 -0
  1150. package/Tests/Runtime/Helper/GeometryTests.cs.meta +3 -0
  1151. package/Tests/Runtime/Helper/HelpersTests.cs +749 -0
  1152. package/Tests/Runtime/Helper/HelpersTests.cs.meta +11 -0
  1153. package/Tests/Runtime/Helper/IterationHelpersTests.cs +173 -0
  1154. package/Tests/Runtime/Helper/IterationHelpersTests.cs.meta +11 -0
  1155. package/Tests/Runtime/Helper/LineHelperTests.cs +662 -0
  1156. package/Tests/Runtime/Helper/LineHelperTests.cs.meta +11 -0
  1157. package/Tests/Runtime/Helper/ObjectHelperTests.cs +444 -432
  1158. package/Tests/Runtime/Helper/ObjectHelperTests.cs.meta +2 -2
  1159. package/Tests/Runtime/Helper/ObjectsTests.cs +363 -0
  1160. package/Tests/Runtime/Helper/ObjectsTests.cs.meta +3 -0
  1161. package/Tests/Runtime/Helper/PathHelperTests.cs +183 -0
  1162. package/Tests/Runtime/Helper/PathHelperTests.cs.meta +11 -0
  1163. package/Tests/Runtime/Helper/ReflectionHelperTests.cs +2199 -1493
  1164. package/Tests/Runtime/Helper/ReflectionHelperTests.cs.meta +2 -2
  1165. package/Tests/Runtime/Helper/ReflectionHelpersMemberLookupTests.cs +192 -0
  1166. package/Tests/Runtime/Helper/ReflectionHelpersMemberLookupTests.cs.meta +11 -0
  1167. package/Tests/Runtime/Helper/ReflectionHelpersTypeScanningTests.cs +58 -0
  1168. package/Tests/Runtime/Helper/ReflectionHelpersTypeScanningTests.cs.meta +11 -0
  1169. package/Tests/Runtime/Helper/SceneHelperTests.cs +77 -94
  1170. package/Tests/Runtime/Helper/SceneHelperTests.cs.meta +2 -2
  1171. package/Tests/Runtime/Helper/UnityMainThreadDispatcherTests.cs +45 -0
  1172. package/Tests/Runtime/Helper/UnityMainThreadDispatcherTests.cs.meta +11 -0
  1173. package/Tests/Runtime/Helper/WallMathTests.cs +1884 -233
  1174. package/Tests/Runtime/Helper/WallMathTests.cs.meta +2 -2
  1175. package/Tests/Runtime/Helper.meta +2 -2
  1176. package/Tests/Runtime/Integrations/VContainer/RelationalComponentsVContainerTests.cs +560 -0
  1177. package/Tests/Runtime/Integrations/VContainer/RelationalComponentsVContainerTests.cs.meta +11 -0
  1178. package/Tests/Runtime/Integrations/VContainer/WallstopStudios.UnityHelpers.Tests.Runtime.VContainer.asmdef +38 -0
  1179. package/Tests/Runtime/Integrations/VContainer/WallstopStudios.UnityHelpers.Tests.Runtime.VContainer.asmdef.meta +7 -0
  1180. package/Tests/Runtime/Integrations/VContainer.meta +8 -0
  1181. package/Tests/Runtime/Integrations/Zenject/RelationalComponentsZenjectTests.cs +591 -0
  1182. package/Tests/Runtime/Integrations/Zenject/RelationalComponentsZenjectTests.cs.meta +11 -0
  1183. package/Tests/Runtime/Integrations/Zenject/WallstopStudios.UnityHelpers.Tests.Runtime.Zenject.asmdef +38 -0
  1184. package/Tests/Runtime/Integrations/Zenject/WallstopStudios.UnityHelpers.Tests.Runtime.Zenject.asmdef.meta +7 -0
  1185. package/Tests/Runtime/Integrations/Zenject.meta +8 -0
  1186. package/Tests/Runtime/Integrations.meta +8 -0
  1187. package/Tests/Runtime/Math/Line2DTests.cs +594 -0
  1188. package/Tests/Runtime/Math/Line2DTests.cs.meta +11 -0
  1189. package/Tests/Runtime/Math/Line3DTests.cs +655 -0
  1190. package/Tests/Runtime/Math/Line3DTests.cs.meta +11 -0
  1191. package/Tests/Runtime/Math/LineTests.cs +480 -0
  1192. package/Tests/Runtime/Math/LineTests.cs.meta +11 -0
  1193. package/Tests/Runtime/Math/ParabolaTests.cs +477 -0
  1194. package/Tests/Runtime/Math/ParabolaTests.cs.meta +11 -0
  1195. package/Tests/Runtime/Math/PointPolygonCheckTests.cs +939 -0
  1196. package/Tests/Runtime/Math/PointPolygonCheckTests.cs.meta +11 -0
  1197. package/Tests/Runtime/Math/RangeTests.cs +197 -0
  1198. package/Tests/Runtime/Math/RangeTests.cs.meta +11 -0
  1199. package/Tests/Runtime/Math.meta +8 -0
  1200. package/Tests/Runtime/Performance/BenchmarkReadmeUpdater.cs +81 -0
  1201. package/Tests/Runtime/Performance/BenchmarkReadmeUpdater.cs.meta +11 -0
  1202. package/Tests/Runtime/Performance/JsonSerializationPerformanceTests.cs +421 -0
  1203. package/Tests/Runtime/Performance/JsonSerializationPerformanceTests.cs.meta +3 -0
  1204. package/Tests/Runtime/Performance/ListExtensionPerformanceTests.cs +76 -76
  1205. package/Tests/Runtime/Performance/ListExtensionPerformanceTests.cs.meta +2 -2
  1206. package/Tests/Runtime/Performance/ProtoEqualsPerformanceTests.cs +161 -0
  1207. package/Tests/Runtime/Performance/ProtoEqualsPerformanceTests.cs.meta +11 -0
  1208. package/Tests/Runtime/Performance/ProtoSerializationPerformanceTests.cs +207 -0
  1209. package/Tests/Runtime/Performance/ProtoSerializationPerformanceTests.cs.meta +3 -0
  1210. package/Tests/Runtime/Performance/RandomPerformanceTests.cs +195 -181
  1211. package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -11
  1212. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +60 -61
  1213. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +2 -2
  1214. package/Tests/Runtime/Performance/SpatialTree2DPerformanceTests.cs +692 -0
  1215. package/Tests/Runtime/Performance/SpatialTree2DPerformanceTests.cs.meta +11 -0
  1216. package/Tests/Runtime/Performance/SpatialTree3DPerformanceTests.cs +650 -0
  1217. package/Tests/Runtime/Performance/SpatialTree3DPerformanceTests.cs.meta +11 -0
  1218. package/Tests/Runtime/Performance.meta +8 -8
  1219. package/Tests/Runtime/Random/DotNetRandomTests.cs +9 -9
  1220. package/Tests/Runtime/Random/DotNetRandomTests.cs.meta +2 -2
  1221. package/Tests/Runtime/Random/IllusionFlowTests.cs +12 -12
  1222. package/Tests/Runtime/Random/IllusionFlowTests.cs.meta +2 -2
  1223. package/Tests/Runtime/Random/LinearCongruentialGeneratorTests.cs +12 -12
  1224. package/Tests/Runtime/Random/LinearCongruentialGeneratorTests.cs.meta +2 -2
  1225. package/Tests/Runtime/Random/PcgRandomTests.cs +9 -9
  1226. package/Tests/Runtime/Random/PcgRandomTests.cs.meta +11 -11
  1227. package/Tests/Runtime/Random/RandomProtoSerializationTests.cs +494 -0
  1228. package/Tests/Runtime/Random/RandomProtoSerializationTests.cs.meta +3 -0
  1229. package/Tests/Runtime/Random/RandomStateSerializationTests.cs +304 -0
  1230. package/Tests/Runtime/Random/RandomStateSerializationTests.cs.meta +4 -0
  1231. package/Tests/Runtime/Random/RandomTestBase.cs +836 -787
  1232. package/Tests/Runtime/Random/RandomTestBase.cs.meta +11 -11
  1233. package/Tests/Runtime/Random/RomuDuoRandomTests.cs +9 -9
  1234. package/Tests/Runtime/Random/RomuDuoRandomTests.cs.meta +2 -2
  1235. package/Tests/Runtime/Random/SplitMix64RandomTests.cs +9 -9
  1236. package/Tests/Runtime/Random/SplitMix64RandomTests.cs.meta +2 -2
  1237. package/Tests/Runtime/Random/SquirrelRandomTests.cs +14 -14
  1238. package/Tests/Runtime/Random/SquirrelRandomTests.cs.meta +11 -11
  1239. package/Tests/Runtime/Random/SystemRandomTests.cs +10 -10
  1240. package/Tests/Runtime/Random/SystemRandomTests.cs.meta +11 -11
  1241. package/Tests/Runtime/Random/UnityRandomTests.cs +9 -9
  1242. package/Tests/Runtime/Random/UnityRandomTests.cs.meta +11 -11
  1243. package/Tests/Runtime/Random/WyRandomTests.cs +9 -9
  1244. package/Tests/Runtime/Random/WyRandomTests.cs.meta +2 -2
  1245. package/Tests/Runtime/Random/XorShiftRandomTests.cs +9 -9
  1246. package/Tests/Runtime/Random/XorShiftRandomTests.cs.meta +11 -11
  1247. package/Tests/Runtime/Random/XoroShiroRandomTests.cs +9 -9
  1248. package/Tests/Runtime/Random/XoroShiroRandomTests.cs.meta +2 -2
  1249. package/Tests/Runtime/Random.meta +8 -8
  1250. package/Tests/Runtime/RuntimeTestTimeouts.cs +3 -0
  1251. package/Tests/Runtime/RuntimeTestTimeouts.cs.meta +11 -0
  1252. package/Tests/Runtime/Scenes/Test1.unity +723 -723
  1253. package/Tests/Runtime/Scenes/Test1.unity.meta +7 -7
  1254. package/Tests/Runtime/Scenes/Test2.unity +723 -723
  1255. package/Tests/Runtime/Scenes/Test2.unity.meta +7 -7
  1256. package/Tests/Runtime/Scenes.meta +2 -2
  1257. package/Tests/Runtime/Serialization/AdaptersJsonTests.cs +67 -0
  1258. package/Tests/Runtime/Serialization/AdaptersJsonTests.cs.meta +11 -0
  1259. package/Tests/Runtime/Serialization/BitSetJsonTests.cs +50 -0
  1260. package/Tests/Runtime/Serialization/BitSetJsonTests.cs.meta +11 -0
  1261. package/Tests/Runtime/Serialization/CyclicBufferJsonTests.cs +67 -0
  1262. package/Tests/Runtime/Serialization/CyclicBufferJsonTests.cs.meta +11 -0
  1263. package/Tests/Runtime/Serialization/DequeJsonTests.cs +70 -0
  1264. package/Tests/Runtime/Serialization/DequeJsonTests.cs.meta +11 -0
  1265. package/Tests/Runtime/Serialization/ImmutableBitSetJsonTests.cs +25 -0
  1266. package/Tests/Runtime/Serialization/ImmutableBitSetJsonTests.cs.meta +11 -0
  1267. package/Tests/Runtime/Serialization/JsonConverterTests.cs +1157 -0
  1268. package/Tests/Runtime/Serialization/JsonConverterTests.cs.meta +11 -0
  1269. package/Tests/Runtime/Serialization/JsonRoundtripComprehensiveTests.cs +239 -0
  1270. package/Tests/Runtime/Serialization/JsonRoundtripComprehensiveTests.cs.meta +11 -0
  1271. package/Tests/Runtime/Serialization/JsonSerializationCorrectnessTests.cs +458 -0
  1272. package/Tests/Runtime/Serialization/JsonSerializationCorrectnessTests.cs.meta +3 -0
  1273. package/Tests/Runtime/Serialization/JsonSerializationTest.cs +156 -156
  1274. package/Tests/Runtime/Serialization/JsonSerializationTest.cs.meta +2 -2
  1275. package/Tests/Runtime/Serialization/MathJsonTests.cs +79 -0
  1276. package/Tests/Runtime/Serialization/MathJsonTests.cs.meta +11 -0
  1277. package/Tests/Runtime/Serialization/ProtoInterfaceResolutionEdgeTests.cs +76 -0
  1278. package/Tests/Runtime/Serialization/ProtoInterfaceResolutionEdgeTests.cs.meta +11 -0
  1279. package/Tests/Runtime/Serialization/ProtoRootRegistrationTests.cs +80 -0
  1280. package/Tests/Runtime/Serialization/ProtoRootRegistrationTests.cs.meta +11 -0
  1281. package/Tests/Runtime/Serialization/ProtoRoundtripComprehensiveTests.cs +257 -0
  1282. package/Tests/Runtime/Serialization/ProtoRoundtripComprehensiveTests.cs.meta +11 -0
  1283. package/Tests/Runtime/Serialization/ProtoSerializationCorrectnessTests.cs +471 -0
  1284. package/Tests/Runtime/Serialization/ProtoSerializationCorrectnessTests.cs.meta +3 -0
  1285. package/Tests/Runtime/Serialization/ProtoSerializationTests.cs +169 -0
  1286. package/Tests/Runtime/Serialization/ProtoSerializationTests.cs.meta +11 -0
  1287. package/Tests/Runtime/Serialization/ProtoSerializeBehaviorTests.cs +62 -0
  1288. package/Tests/Runtime/Serialization/ProtoSerializeBehaviorTests.cs.meta +11 -0
  1289. package/Tests/Runtime/Serialization/SerializerAdditionalTests.cs +895 -0
  1290. package/Tests/Runtime/Serialization/SerializerAdditionalTests.cs.meta +3 -0
  1291. package/Tests/Runtime/Serialization/TypeConverterTests.cs +34 -0
  1292. package/Tests/Runtime/Serialization/TypeConverterTests.cs.meta +11 -0
  1293. package/Tests/Runtime/Serialization.meta +2 -2
  1294. package/Tests/Runtime/Tags/AttributeComponentTests.cs +174 -0
  1295. package/Tests/Runtime/Tags/AttributeComponentTests.cs.meta +3 -0
  1296. package/Tests/Runtime/Tags/AttributeDataTests.cs +312 -0
  1297. package/Tests/Runtime/Tags/AttributeDataTests.cs.meta +11 -0
  1298. package/Tests/Runtime/Tags/AttributeUtilitiesTests.cs +405 -0
  1299. package/Tests/Runtime/Tags/AttributeUtilitiesTests.cs.meta +3 -0
  1300. package/Tests/Runtime/Tags/CosmeticAndCollisionTests.cs +147 -0
  1301. package/Tests/Runtime/Tags/CosmeticAndCollisionTests.cs.meta +11 -0
  1302. package/Tests/Runtime/Tags/CosmeticEffectDataTests.cs +60 -0
  1303. package/Tests/Runtime/Tags/CosmeticEffectDataTests.cs.meta +3 -0
  1304. package/Tests/Runtime/Tags/EffectHandleTests.cs +61 -0
  1305. package/Tests/Runtime/Tags/EffectHandleTests.cs.meta +3 -0
  1306. package/Tests/Runtime/Tags/EffectHandlerTests.cs +270 -0
  1307. package/Tests/Runtime/Tags/EffectHandlerTests.cs.meta +3 -0
  1308. package/Tests/Runtime/Tags/Helpers/RecordingCosmeticComponent.cs +39 -0
  1309. package/Tests/Runtime/Tags/Helpers/RecordingCosmeticComponent.cs.meta +3 -0
  1310. package/Tests/Runtime/Tags/Helpers/TagTestBase.cs +49 -0
  1311. package/Tests/Runtime/Tags/Helpers/TagTestBase.cs.meta +3 -0
  1312. package/Tests/Runtime/Tags/Helpers/TestAttributesComponent.cs +28 -0
  1313. package/Tests/Runtime/Tags/Helpers/TestAttributesComponent.cs.meta +3 -0
  1314. package/Tests/Runtime/Tags/Helpers.meta +3 -0
  1315. package/Tests/Runtime/Tags/TagHandlerTests.cs +108 -0
  1316. package/Tests/Runtime/Tags/TagHandlerTests.cs.meta +3 -0
  1317. package/Tests/Runtime/Tags.meta +8 -0
  1318. package/Tests/Runtime/TestUtils/CommonTestBase.cs +213 -0
  1319. package/Tests/Runtime/TestUtils/CommonTestBase.cs.meta +11 -0
  1320. package/Tests/Runtime/TestUtils/GCAssert.cs +55 -0
  1321. package/Tests/Runtime/TestUtils/GCAssert.cs.meta +11 -0
  1322. package/Tests/Runtime/TestUtils/SpatialAssert.cs +33 -0
  1323. package/Tests/Runtime/TestUtils/SpatialAssert.cs.meta +11 -0
  1324. package/Tests/Runtime/TestUtils/SpatialDiagnostics.cs +195 -0
  1325. package/Tests/Runtime/TestUtils/SpatialDiagnostics.cs.meta +11 -0
  1326. package/Tests/Runtime/TestUtils.meta +8 -0
  1327. package/Tests/Runtime/Utils/AnimationEventEqualityComparerTests.cs +144 -0
  1328. package/Tests/Runtime/Utils/AnimationEventEqualityComparerTests.cs.meta +11 -0
  1329. package/Tests/Runtime/Utils/Ascii85Tests.cs +56 -0
  1330. package/Tests/Runtime/Utils/Ascii85Tests.cs.meta +11 -0
  1331. package/Tests/Runtime/Utils/BuffersTests.cs +1148 -741
  1332. package/Tests/Runtime/Utils/BuffersTests.cs.meta +2 -2
  1333. package/Tests/Runtime/Utils/BuffersWaitInstructionTests.cs +31 -0
  1334. package/Tests/Runtime/Utils/BuffersWaitInstructionTests.cs.meta +11 -0
  1335. package/Tests/Runtime/Utils/CenterPointOffsetTests.cs +67 -0
  1336. package/Tests/Runtime/Utils/CenterPointOffsetTests.cs.meta +11 -0
  1337. package/Tests/Runtime/Utils/ChildSpawnerTests.cs +490 -0
  1338. package/Tests/Runtime/Utils/ChildSpawnerTests.cs.meta +11 -0
  1339. package/Tests/Runtime/Utils/CircleLineRendererTests.cs +80 -0
  1340. package/Tests/Runtime/Utils/CircleLineRendererTests.cs.meta +11 -0
  1341. package/Tests/Runtime/Utils/CollisionProxyTests.cs +442 -0
  1342. package/Tests/Runtime/Utils/CollisionProxyTests.cs.meta +11 -0
  1343. package/Tests/Runtime/Utils/CoroutineHandlerTests.cs +353 -0
  1344. package/Tests/Runtime/Utils/CoroutineHandlerTests.cs.meta +11 -0
  1345. package/Tests/Runtime/Utils/DeferredDisposalResultTests.cs +44 -0
  1346. package/Tests/Runtime/Utils/DeferredDisposalResultTests.cs.meta +11 -0
  1347. package/Tests/Runtime/Utils/LZMAComprehensiveTests.cs +249 -0
  1348. package/Tests/Runtime/Utils/LZMAComprehensiveTests.cs.meta +11 -0
  1349. package/Tests/Runtime/Utils/LZMATests.cs +31 -0
  1350. package/Tests/Runtime/Utils/LZMATests.cs.meta +11 -0
  1351. package/Tests/Runtime/Utils/MatchColliderToSpriteAdditionalTests.cs +86 -0
  1352. package/Tests/Runtime/Utils/MatchColliderToSpriteAdditionalTests.cs.meta +11 -0
  1353. package/Tests/Runtime/Utils/MatchColliderToSpriteTests.cs +503 -0
  1354. package/Tests/Runtime/Utils/MatchColliderToSpriteTests.cs.meta +11 -0
  1355. package/Tests/Runtime/Utils/MatchTransformEdgeTests.cs +34 -0
  1356. package/Tests/Runtime/Utils/MatchTransformEdgeTests.cs.meta +11 -0
  1357. package/Tests/Runtime/Utils/MatchTransformTests.cs +495 -0
  1358. package/Tests/Runtime/Utils/MatchTransformTests.cs.meta +11 -0
  1359. package/Tests/Runtime/Utils/OscillatorTests.cs +540 -0
  1360. package/Tests/Runtime/Utils/OscillatorTests.cs.meta +11 -0
  1361. package/Tests/Runtime/Utils/PolygonCollider2DOptimizerTests.cs +52 -0
  1362. package/Tests/Runtime/Utils/PolygonCollider2DOptimizerTests.cs.meta +11 -0
  1363. package/Tests/Runtime/Utils/RuntimeSingletonTests.cs +766 -0
  1364. package/Tests/Runtime/Utils/RuntimeSingletonTests.cs.meta +11 -0
  1365. package/Tests/Runtime/Utils/SerializedStringComparerEdgeTests.cs +47 -0
  1366. package/Tests/Runtime/Utils/SerializedStringComparerEdgeTests.cs.meta +11 -0
  1367. package/Tests/Runtime/Utils/SerializedStringComparerTests.cs +361 -0
  1368. package/Tests/Runtime/Utils/SerializedStringComparerTests.cs.meta +11 -0
  1369. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs +383 -398
  1370. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs.meta +2 -2
  1371. package/Tests/Runtime/Utils/SpriteRendererSyncTests.cs +134 -0
  1372. package/Tests/Runtime/Utils/SpriteRendererSyncTests.cs.meta +11 -0
  1373. package/Tests/Runtime/Utils/StartTrackerTests.cs +24 -0
  1374. package/Tests/Runtime/Utils/StartTrackerTests.cs.meta +11 -0
  1375. package/Tests/Runtime/Utils/TextureScaleEdgeTests.cs +114 -0
  1376. package/Tests/Runtime/Utils/TextureScaleEdgeTests.cs.meta +11 -0
  1377. package/Tests/Runtime/Utils/TextureScaleTests.cs +298 -0
  1378. package/Tests/Runtime/Utils/TextureScaleTests.cs.meta +3 -0
  1379. package/Tests/Runtime/Utils/TypeNameSorterAdditionalTests.cs +36 -0
  1380. package/Tests/Runtime/Utils/TypeNameSorterAdditionalTests.cs.meta +11 -0
  1381. package/Tests/Runtime/Utils/TypeNameSorterTests.cs +34 -0
  1382. package/Tests/Runtime/Utils/TypeNameSorterTests.cs.meta +11 -0
  1383. package/Tests/Runtime/Utils/UnityObjectNameComparerEdgeTests.cs +63 -0
  1384. package/Tests/Runtime/Utils/UnityObjectNameComparerEdgeTests.cs.meta +11 -0
  1385. package/Tests/Runtime/Utils/UnityObjectNameComparerTests.cs +59 -0
  1386. package/Tests/Runtime/Utils/UnityObjectNameComparerTests.cs.meta +11 -0
  1387. package/Tests/Runtime/Utils.meta +2 -2
  1388. package/Tests/Runtime/Visuals/AnimatedSpriteLayerTests.cs +266 -0
  1389. package/Tests/Runtime/Visuals/AnimatedSpriteLayerTests.cs.meta +11 -0
  1390. package/Tests/Runtime/Visuals/EnhancedImageTests.cs +184 -0
  1391. package/Tests/Runtime/Visuals/EnhancedImageTests.cs.meta +11 -0
  1392. package/Tests/Runtime/Visuals/LayeredImageTests.cs +422 -0
  1393. package/Tests/Runtime/Visuals/LayeredImageTests.cs.meta +11 -0
  1394. package/Tests/Runtime/Visuals/VisualsTestHelpers.cs +132 -0
  1395. package/Tests/Runtime/Visuals/VisualsTestHelpers.cs.meta +11 -0
  1396. package/Tests/Runtime/Visuals.meta +3 -0
  1397. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef +24 -23
  1398. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef.meta +7 -7
  1399. package/Tests/Runtime.meta +8 -8
  1400. package/Tests.meta +8 -8
  1401. package/URP/VolumeProfiles/Post Processing Bloom Profile(URP).asset +63 -63
  1402. package/URP/VolumeProfiles/Post Processing Bloom Profile(URP).asset.meta +8 -8
  1403. package/URP/VolumeProfiles.meta +8 -8
  1404. package/URP.meta +8 -8
  1405. package/node_modules.meta +8 -0
  1406. package/package.json +95 -38
  1407. package/package.json.meta +7 -7
  1408. package/scripts/check-eol.ps1 +52 -0
  1409. package/scripts/check-eol.ps1.meta +7 -0
  1410. package/scripts/clean-nul.ps1 +29 -0
  1411. package/scripts/clean-nul.ps1.meta +7 -0
  1412. package/scripts/lint-doc-links.ps1 +80 -0
  1413. package/scripts/lint-doc-links.ps1.meta +7 -0
  1414. package/scripts/normalize-eol.ps1 +71 -0
  1415. package/scripts/normalize-eol.ps1.meta +7 -0
  1416. package/scripts.meta +8 -0
  1417. package/Editor/Sprites/ProjectAnimationSettings.cs +0 -50
  1418. package/Editor/Sprites/ProjectAnimationSettings.cs.meta +0 -3
  1419. package/Editor/Sprites/TextureSettingsApplier.cs +0 -178
  1420. package/Editor/Sprites/TextureSettingsApplier.cs.meta +0 -3
  1421. package/Runtime/Core/Attributes/ParentComponent.cs +0 -189
  1422. package/Runtime/Core/DataStructure/KDTree.cs +0 -434
  1423. package/Runtime/Core/DataStructure/QuadTree.cs +0 -431
  1424. package/Runtime/Core/DataStructure/RTree.cs +0 -356
  1425. package/Runtime/Core/Extension/HashSetExtensions.cs +0 -12
  1426. package/Runtime/Core/Extension/HashSetExtensions.cs.meta +0 -11
  1427. package/Runtime/Core/Math/Line.cs +0 -55
  1428. package/Runtime/Core/Math/Line.cs.meta +0 -11
  1429. package/Runtime/Core/Math/XXHash.cs +0 -310
  1430. package/Runtime/Core/Math/XXHash.cs.meta +0 -11
  1431. package/Tests/Runtime/Components/RelationalComponentsTesterSimple.cs +0 -40
  1432. package/Tests/Runtime/Components.meta +0 -3
  1433. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs +0 -14
  1434. package/Tests/Runtime/DataStructures/QuadTreeTests.cs +0 -14
  1435. package/Tests/Runtime/DataStructures/QuadTreeTests.cs.meta +0 -11
  1436. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs +0 -130
  1437. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs.meta +0 -11
  1438. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs +0 -14
  1439. package/Tests/Runtime/Helper/FormattingHelperTests.cs +0 -129
  1440. package/Tests/Runtime/Helper/FormattingHelperTests.cs.meta +0 -3
  1441. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs +0 -14
  1442. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs.meta +0 -11
  1443. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs +0 -14
  1444. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs.meta +0 -11
  1445. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs +0 -158
  1446. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs.meta +0 -11
  1447. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs +0 -14
  1448. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs.meta +0 -11
  1449. package/Third Party Notices.md +0 -1
@@ -1,831 +1,1271 @@
1
- namespace WallstopStudios.UnityHelpers.Core.Helper
2
- {
3
- using System;
4
- using System.Collections;
5
- using System.Collections.Concurrent;
6
- using System.Collections.Generic;
7
- using System.Linq;
8
- using System.Reflection;
9
- using DataStructure.Adapters;
10
- using Extension;
11
- using Random;
12
- using UnityEngine;
13
- using Utils;
14
- using Object = UnityEngine.Object;
15
- #if UNITY_EDITOR
16
- using UnityEditor;
17
- using UnityEditorInternal;
18
- #endif
19
- public static partial class Helpers
20
- {
21
- private static readonly WaitForEndOfFrame WaitForEndOfFrame = new();
22
- #if SINGLE_THREADED
23
- private static readonly Dictionary<Type, MethodInfo> AwakeMethodsByType = new();
24
- #else
25
- private static readonly ConcurrentDictionary<Type, MethodInfo> AwakeMethodsByType = new();
26
- #endif
27
- private static readonly Object LogObject = new();
28
- private static readonly Dictionary<string, Object> ObjectsByTag = new(
29
- StringComparer.Ordinal
30
- );
31
-
32
- internal static readonly Dictionary<string, string[]> CachedLabels = new(
33
- StringComparer.OrdinalIgnoreCase
34
- );
35
-
36
- public static bool IsRunningInBatchMode => Application.isBatchMode;
37
-
38
- public static bool IsRunningInContinuousIntegration
39
- {
40
- get
41
- {
42
- if (
43
- !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("GITHUB_ACTIONS"))
44
- )
45
- {
46
- return true;
47
- }
48
-
49
- if (!string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("CI")))
50
- {
51
- return true;
52
- }
53
-
54
- if (!string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("JENKINS_URL")))
55
- {
56
- return true;
57
- }
58
-
59
- if (!string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("GITLAB_CI")))
60
- {
61
- return true;
62
- }
63
-
64
- return false;
65
- }
66
- }
67
-
68
- internal static string[] AllSpriteLabels;
69
-
70
- public static string[] GetAllSpriteLabelNames()
71
- {
72
- if (IsRunningInContinuousIntegration || IsRunningInBatchMode)
73
- {
74
- return Array.Empty<string>();
75
- }
76
-
77
- #if UNITY_EDITOR
78
- if (AllSpriteLabels != null)
79
- {
80
- return AllSpriteLabels;
81
- }
82
-
83
- HashSet<string> allLabels = new(StringComparer.Ordinal);
84
- string[] guids = AssetDatabase.FindAssets("t:Sprite");
85
- foreach (string guid in guids)
86
- {
87
- string path = AssetDatabase.GUIDToAssetPath(guid);
88
- if (!path.StartsWith("Assets", StringComparison.OrdinalIgnoreCase))
89
- {
90
- continue;
91
- }
92
- Object asset = AssetDatabase.LoadMainAssetAtPath(path);
93
- if (asset == null)
94
- {
95
- continue;
96
- }
97
-
98
- string[] labels = AssetDatabase.GetLabels(asset);
99
- if (labels.Length != 0)
100
- {
101
- CachedLabels[path] = labels;
102
- allLabels.UnionWith(labels);
103
- }
104
- }
105
-
106
- AllSpriteLabels = allLabels.ToArray();
107
- Array.Sort(AllSpriteLabels);
108
- return AllSpriteLabels;
109
- #else
110
- return Array.Empty<string>();
111
- #endif
112
- }
113
-
114
- public static string[] GetAllLayerNames()
115
- {
116
- #if UNITY_EDITOR
117
- return InternalEditorUtility.layers;
118
- #else
119
- return Array.Empty<string>();
120
- #endif
121
- }
122
-
123
- // https://gamedevelopment.tutsplus.com/tutorials/unity-solution-for-hitting-moving-targets--cms-29633
124
- public static Vector2 PredictCurrentTarget(
125
- this GameObject currentTarget,
126
- Vector2 launchLocation,
127
- float projectileSpeed,
128
- bool predictiveFiring,
129
- Vector2 targetVelocity
130
- )
131
- {
132
- Vector2 target = currentTarget.transform.position;
133
-
134
- if (!predictiveFiring)
135
- {
136
- return target;
137
- }
138
-
139
- if (projectileSpeed <= 0)
140
- {
141
- return target;
142
- }
143
-
144
- float a =
145
- targetVelocity.x * targetVelocity.x
146
- + targetVelocity.y * targetVelocity.y
147
- - projectileSpeed * projectileSpeed;
148
-
149
- float b =
150
- 2
151
- * (
152
- targetVelocity.x * (target.x - launchLocation.x)
153
- + targetVelocity.y * (target.y - launchLocation.y)
154
- );
155
-
156
- float c =
157
- (target.x - launchLocation.x) * (target.x - launchLocation.x)
158
- + (target.y - launchLocation.y) * (target.y - launchLocation.y);
159
-
160
- float disc = b * b - 4 * a * c;
161
- if (disc < 0)
162
- {
163
- return target;
164
- }
165
-
166
- float t1 = (-1 * b + Mathf.Sqrt(disc)) / (2 * a);
167
- float t2 = (-1 * b - Mathf.Sqrt(disc)) / (2 * a);
168
- float t = Mathf.Max(t1, t2); // let us take the larger time value
169
-
170
- float aimX = target.x + targetVelocity.x * t;
171
- float aimY = target.y + targetVelocity.y * t;
172
-
173
- if (float.IsNaN(aimX) || float.IsNaN(aimY))
174
- {
175
- return target;
176
- }
177
-
178
- if (float.IsInfinity(aimX) || float.IsInfinity(aimY))
179
- {
180
- return target;
181
- }
182
-
183
- return new Vector2(aimX, aimY);
184
- }
185
-
186
- public static T GetComponent<T>(this Object target)
187
- {
188
- return target switch
189
- {
190
- GameObject go => go != null ? go.GetComponent<T>() : default,
191
- Component c => c != null ? c.GetComponent<T>() : default,
192
- _ => default,
193
- };
194
- }
195
-
196
- public static T[] GetComponents<T>(this Object target)
197
- {
198
- return target switch
199
- {
200
- GameObject go => go != null ? go.GetComponents<T>() : Array.Empty<T>(),
201
- Component c => c != null ? c.GetComponents<T>() : Array.Empty<T>(),
202
- _ => default,
203
- };
204
- }
205
-
206
- public static GameObject GetGameObject(this object target)
207
- {
208
- return target switch
209
- {
210
- GameObject go => go,
211
- Component c => c != null ? c.gameObject : null,
212
- _ => null,
213
- };
214
- }
215
-
216
- public static bool TryGetComponent<T>(this Object target, out T component)
217
- {
218
- component = default;
219
- return target switch
220
- {
221
- GameObject go => go != null && go.TryGetComponent(out component),
222
- Component c => c != null && c.TryGetComponent(out component),
223
- _ => false,
224
- };
225
- }
226
-
227
- public static GameObject FindChildGameObjectWithTag(this GameObject gameObject, string tag)
228
- {
229
- using PooledResource<List<Transform>> bufferResource = Buffers<Transform>.List.Get();
230
- foreach (
231
- Transform t in gameObject.transform.IterateOverAllChildrenRecursively(
232
- bufferResource.resource,
233
- includeSelf: true
234
- )
235
- )
236
- {
237
- GameObject go = t.gameObject;
238
-
239
- if (go.CompareTag(tag))
240
- {
241
- return go;
242
- }
243
- }
244
-
245
- return null;
246
- }
247
-
248
- public static Coroutine StartFunctionAsCoroutine(
249
- this MonoBehaviour monoBehaviour,
250
- Action action,
251
- float updateRate,
252
- bool useJitter = false,
253
- bool waitBefore = false
254
- )
255
- {
256
- return monoBehaviour.StartCoroutine(
257
- FunctionAsCoroutine(action, updateRate, useJitter, waitBefore)
258
- );
259
- }
260
-
261
- private static IEnumerator FunctionAsCoroutine(
262
- Action action,
263
- float updateRate,
264
- bool useJitter,
265
- bool waitBefore
266
- )
267
- {
268
- bool usedJitter = false;
269
- while (true)
270
- {
271
- float startTime;
272
- if (waitBefore)
273
- {
274
- if (useJitter && !usedJitter)
275
- {
276
- float delay = PRNG.Instance.NextFloat(updateRate);
277
- startTime = Time.time;
278
- while (!HasEnoughTimePassed(startTime, delay))
279
- {
280
- yield return null;
281
- }
282
-
283
- usedJitter = true;
284
- }
285
-
286
- startTime = Time.time;
287
- while (!HasEnoughTimePassed(startTime, updateRate))
288
- {
289
- yield return null;
290
- }
291
- }
292
-
293
- action();
294
-
295
- if (!waitBefore)
296
- {
297
- if (useJitter && !usedJitter)
298
- {
299
- float delay = PRNG.Instance.NextFloat(updateRate);
300
- startTime = Time.time;
301
- while (!HasEnoughTimePassed(startTime, delay))
302
- {
303
- yield return null;
304
- }
305
-
306
- usedJitter = true;
307
- }
308
-
309
- startTime = Time.time;
310
- while (!HasEnoughTimePassed(startTime, updateRate))
311
- {
312
- yield return null;
313
- }
314
- }
315
- }
316
- }
317
-
318
- public static Coroutine ExecuteFunctionAfterDelay(
319
- this MonoBehaviour monoBehaviour,
320
- Action action,
321
- float delay
322
- )
323
- {
324
- return monoBehaviour.StartCoroutine(FunctionDelayAsCoroutine(action, delay));
325
- }
326
-
327
- public static Coroutine ExecuteFunctionNextFrame(
328
- this MonoBehaviour monoBehaviour,
329
- Action action
330
- )
331
- {
332
- return monoBehaviour.ExecuteFunctionAfterDelay(action, 0f);
333
- }
334
-
335
- public static Coroutine ExecuteFunctionAfterFrame(
336
- this MonoBehaviour monoBehaviour,
337
- Action action
338
- )
339
- {
340
- return monoBehaviour.StartCoroutine(FunctionAfterFrame(action));
341
- }
342
-
343
- public static IEnumerator ExecuteOverTime(
344
- Action action,
345
- int totalCount,
346
- float duration,
347
- bool delay = true
348
- )
349
- {
350
- if (action == null)
351
- {
352
- yield break;
353
- }
354
-
355
- if (totalCount <= 0)
356
- {
357
- yield break;
358
- }
359
-
360
- int totalExecuted = 0;
361
- float startTime = Time.time;
362
- while (!HasEnoughTimePassed(startTime, duration))
363
- {
364
- float percent = (Time.time - startTime) / duration;
365
- // optional delay execution from happening on 0, 1, 2, ... n-1 to 1, 2, ... n
366
- if (
367
- totalExecuted < totalCount
368
- && (totalExecuted + (delay ? 1f : 0f)) / totalCount <= percent
369
- )
370
- {
371
- action();
372
- ++totalExecuted;
373
- }
374
-
375
- yield return null;
376
- }
377
-
378
- for (; totalExecuted < totalCount; )
379
- {
380
- action();
381
- ++totalExecuted;
382
- yield return null;
383
- }
384
- }
385
-
386
- private static IEnumerator FunctionDelayAsCoroutine(Action action, float delay)
387
- {
388
- float startTime = Time.time;
389
- while (!HasEnoughTimePassed(startTime, delay))
390
- {
391
- yield return null;
392
- }
393
-
394
- action();
395
- }
396
-
397
- private static IEnumerator FunctionAfterFrame(Action action)
398
- {
399
- yield return WaitForEndOfFrame;
400
- action();
401
- }
402
-
403
- public static bool HasEnoughTimePassed(float timestamp, float desiredDuration) =>
404
- timestamp + desiredDuration < Time.time;
405
-
406
- public static Vector2 Opposite(this Vector2 vector)
407
- {
408
- return vector * -1;
409
- }
410
-
411
- public static Vector3 Opposite(this Vector3 vector)
412
- {
413
- return vector * -1;
414
- }
415
-
416
- public static IEnumerable<Vector3Int> IterateArea(this BoundsInt bounds)
417
- {
418
- foreach (Vector3Int position in bounds.allPositionsWithin)
419
- {
420
- yield return position;
421
- }
422
- }
423
-
424
- public static IEnumerable<Vector3Int> IterateBounds(this BoundsInt bounds, int padding = 1)
425
- {
426
- for (int x = bounds.xMin - padding; x <= bounds.xMax + padding; ++x)
427
- {
428
- for (int y = bounds.yMin; y <= bounds.yMax + padding; ++y)
429
- {
430
- yield return new Vector3Int(x, y, 0);
431
- }
432
- }
433
- }
434
-
435
- public static Vector3Int AsVector3Int(this (int x, int y, int z) vector)
436
- {
437
- return new Vector3Int(vector.x, vector.y, vector.z);
438
- }
439
-
440
- public static Vector3Int AsVector3Int(this (uint x, uint y, uint z) vector)
441
- {
442
- return new Vector3Int((int)vector.x, (int)vector.y, (int)vector.z);
443
- }
444
-
445
- public static Vector3Int AsVector3Int(this Vector3 vector)
446
- {
447
- return new Vector3Int(
448
- (int)Math.Round(vector.x),
449
- (int)Math.Round(vector.y),
450
- (int)Math.Round(vector.z)
451
- );
452
- }
453
-
454
- public static Vector3 AsVector3(this (uint x, uint y, uint z) vector)
455
- {
456
- return new Vector3(vector.x, vector.y, vector.z);
457
- }
458
-
459
- public static Vector3 AsVector3(this Vector3Int vector)
460
- {
461
- return new Vector3(vector.x, vector.y, vector.z);
462
- }
463
-
464
- public static Vector2 AsVector2(this Vector3Int vector)
465
- {
466
- return new Vector2(vector.x, vector.y);
467
- }
468
-
469
- public static Vector2Int AsVector2Int(this Vector3Int vector)
470
- {
471
- return new Vector2Int(vector.x, vector.y);
472
- }
473
-
474
- public static Vector3Int AsVector3Int(this Vector2Int vector)
475
- {
476
- return new Vector3Int(vector.x, vector.y);
477
- }
478
-
479
- public static T CopyTo<T>(this T original, GameObject destination)
480
- where T : Component
481
- {
482
- Type type = original.GetType();
483
- T copied = destination.GetComponent(type) as T;
484
- if (copied == null)
485
- {
486
- copied = destination.AddComponent(type) as T;
487
- }
488
-
489
- foreach (FieldInfo field in type.GetFields(BindingFlags.Instance | BindingFlags.Public))
490
- {
491
- try
492
- {
493
- field.SetValue(copied, field.GetValue(original));
494
- }
495
- catch
496
- {
497
- original.LogWarn($"Failed to copy public field {field.Name}.");
498
- }
499
- }
500
-
501
- foreach (
502
- FieldInfo field in type.GetFields(BindingFlags.Instance | BindingFlags.NonPublic)
503
- .Where(field => Attribute.IsDefined(field, typeof(SerializeField)))
504
- )
505
- {
506
- try
507
- {
508
- field.SetValue(copied, field.GetValue(original));
509
- }
510
- catch
511
- {
512
- original.LogWarn($"Failed to copy non-public field {field.Name}.");
513
- }
514
- }
515
-
516
- foreach (PropertyInfo property in type.GetProperties())
517
- {
518
- if (!property.CanWrite || property.Name == nameof(Object.name))
519
- {
520
- continue;
521
- }
522
-
523
- try
524
- {
525
- property.SetValue(copied, property.GetValue(original));
526
- }
527
- catch
528
- {
529
- original.LogWarn($"Failed to copy property {property.Name}.");
530
- }
531
- }
532
-
533
- return copied;
534
- }
535
-
536
- public static Rect AsRect(this BoundsInt bounds)
537
- {
538
- return new Rect(bounds.x, bounds.y, bounds.size.x, bounds.size.y);
539
- }
540
-
541
- public static Vector2 GetRandomPointInCircle(
542
- Vector2 center,
543
- float radius,
544
- IRandom random = null
545
- )
546
- {
547
- random ??= PRNG.Instance;
548
- double r = radius * Math.Sqrt(random.NextDouble());
549
- double theta = random.NextDouble() * 2 * Math.PI;
550
- return new Vector2(
551
- center.x + (float)(r * Math.Cos(theta)),
552
- center.y + (float)(r * Math.Sin(theta))
553
- );
554
- }
555
-
556
- public static GameObject GetPlayerObjectInChildHierarchy(
557
- this GameObject gameObject,
558
- string playerTag = "Player"
559
- )
560
- {
561
- return gameObject.GetTagObjectInChildHierarchy(playerTag);
562
- }
563
-
564
- public static GameObject GetTagObjectInChildHierarchy(
565
- this GameObject gameObject,
566
- string tag
567
- )
568
- {
569
- using PooledResource<List<Transform>> bufferResource = Buffers<Transform>.List.Get();
570
- foreach (
571
- Transform t in gameObject.transform.IterateOverAllChildrenRecursively(
572
- bufferResource.resource,
573
- includeSelf: true
574
- )
575
- )
576
- {
577
- GameObject go = t.gameObject;
578
- if (go.CompareTag(tag))
579
- {
580
- return go;
581
- }
582
- }
583
-
584
- return null;
585
- }
586
-
587
- //https://answers.unity.com/questions/722748/refreshing-the-polygon-collider-2d-upon-sprite-cha.html
588
- public static void UpdateShapeToSprite(this Component component)
589
- {
590
- if (
591
- !component.TryGetComponent(out SpriteRenderer spriteRenderer)
592
- || !component.TryGetComponent(out PolygonCollider2D collider)
593
- )
594
- {
595
- return;
596
- }
597
-
598
- UpdateShapeToSprite(spriteRenderer.sprite, collider);
599
- }
600
-
601
- public static void UpdateShapeToSprite(Sprite sprite, PolygonCollider2D collider)
602
- {
603
- if (sprite == null || collider == null)
604
- {
605
- return;
606
- }
607
-
608
- int pathCount = collider.pathCount = sprite.GetPhysicsShapeCount();
609
-
610
- using PooledResource<List<Vector2>> pathResource = Buffers<Vector2>.List.Get();
611
- List<Vector2> path = pathResource.resource;
612
- for (int i = 0; i < pathCount; ++i)
613
- {
614
- path.Clear();
615
- _ = sprite.GetPhysicsShape(i, path);
616
- collider.SetPath(i, path);
617
- }
618
- }
619
-
620
- public static Vector3Int Cross(this Vector3Int vector, Vector3Int other)
621
- {
622
- int x = vector.y * other.z - other.y * vector.z;
623
- int y = (vector.x * other.z - other.x * vector.z) * -1;
624
- int z = vector.x * other.y - other.x * vector.y;
625
-
626
- return new Vector3Int(x, y, z);
627
- }
628
-
629
- public static GameObject TryGetClosestParentWithComponentIncludingSelf<T>(
630
- this GameObject current
631
- )
632
- where T : Component
633
- {
634
- while (current != null)
635
- {
636
- if (current.HasComponent<T>())
637
- {
638
- return current;
639
- }
640
-
641
- Transform parent = current.transform.parent;
642
- current = parent != null ? parent.gameObject : null;
643
- }
644
-
645
- return null;
646
- }
647
-
648
- #if UNITY_EDITOR
649
- public static IEnumerable<GameObject> EnumeratePrefabs(
650
- IEnumerable<string> assetPaths = null
651
- )
652
- {
653
- assetPaths ??= new[] { "Assets/Prefabs", "Assets/Resources" };
654
-
655
- foreach (string assetGuid in AssetDatabase.FindAssets("t:prefab", assetPaths.ToArray()))
656
- {
657
- string path = AssetDatabase.GUIDToAssetPath(assetGuid);
658
- GameObject go = AssetDatabase.LoadAssetAtPath<GameObject>(path);
659
- if (go != null)
660
- {
661
- yield return go;
662
- }
663
- }
664
- }
665
-
666
- public static IEnumerable<T> EnumerateScriptableObjects<T>(string[] assetPaths = null)
667
- where T : ScriptableObject
668
- {
669
- assetPaths ??= new[] { "Assets/Prefabs", "Assets/Resources", "Assets/TileMaps" };
670
-
671
- foreach (
672
- string assetGuid in AssetDatabase.FindAssets("t:" + typeof(T).Name, assetPaths)
673
- )
674
- {
675
- string path = AssetDatabase.GUIDToAssetPath(assetGuid);
676
- T so = AssetDatabase.LoadAssetAtPath<T>(path);
677
- if (so != null)
678
- {
679
- yield return so;
680
- }
681
- }
682
- }
683
- #endif
684
-
685
- public static bool NameEquals(Object lhs, Object rhs)
686
- {
687
- if (lhs == rhs)
688
- {
689
- return true;
690
- }
691
-
692
- if (lhs == null || rhs == null)
693
- {
694
- return false;
695
- }
696
-
697
- if (string.Equals(lhs.name, rhs.name))
698
- {
699
- return true;
700
- }
701
-
702
- const string clone = "(Clone)";
703
- string lhsName = lhs.name;
704
- while (lhsName.EndsWith(clone))
705
- {
706
- lhsName = lhsName.Substring(lhsName.Length - clone.Length - 1);
707
- lhsName = lhsName.Trim();
708
- }
709
-
710
- string rhsName = rhs.name;
711
- while (rhsName.EndsWith(clone))
712
- {
713
- rhsName = rhsName.Substring(rhsName.Length - clone.Length - 1);
714
- rhsName = rhsName.Trim();
715
- }
716
-
717
- return string.Equals(lhsName, rhsName);
718
- }
719
-
720
- public static Color ChangeColorBrightness(this Color color, float correctionFactor)
721
- {
722
- correctionFactor = Math.Clamp(correctionFactor, -1f, 1f);
723
-
724
- float red = color.r;
725
- float green = color.g;
726
- float blue = color.b;
727
- if (correctionFactor < 0)
728
- {
729
- correctionFactor += 1;
730
- red *= correctionFactor;
731
- green *= correctionFactor;
732
- blue *= correctionFactor;
733
- }
734
- else
735
- {
736
- red = (1f - red) * correctionFactor + red;
737
- green = (1f - green) * correctionFactor + green;
738
- blue = (1f - blue) * correctionFactor + blue;
739
- }
740
-
741
- return new Color(red, green, blue, color.a);
742
- }
743
-
744
- public static void AwakeObject(this GameObject gameObject)
745
- {
746
- using PooledResource<List<MonoBehaviour>> componentResource =
747
- Buffers<MonoBehaviour>.List.Get();
748
- List<MonoBehaviour> components = componentResource.resource;
749
- gameObject.GetComponentsInChildren(false, components);
750
- foreach (MonoBehaviour script in components)
751
- {
752
- MethodInfo awakeInfo = AwakeMethodsByType.GetOrAdd(
753
- script.GetType(),
754
- type =>
755
- {
756
- MethodInfo[] methods = type.GetMethods(
757
- BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
758
- );
759
- foreach (MethodInfo method in methods)
760
- {
761
- if (
762
- string.Equals(method.Name, "Awake", StringComparison.Ordinal)
763
- && method.GetParameters().Length == 0
764
- )
765
- {
766
- return method;
767
- }
768
- }
769
-
770
- return null;
771
- }
772
- );
773
- if (awakeInfo != null)
774
- {
775
- _ = awakeInfo.Invoke(script, null);
776
- }
777
- }
778
- }
779
-
780
- public static Vector2 GetAngleWithSpeed(
781
- Vector2 targetDirection,
782
- Vector2 currentDirection,
783
- float rotationSpeed
784
- )
785
- {
786
- if (targetDirection == Vector2.zero)
787
- {
788
- return currentDirection;
789
- }
790
-
791
- float turnRatePerFrame = rotationSpeed * Time.deltaTime;
792
- float angleDiscrepancy = Vector2.SignedAngle(currentDirection, targetDirection);
793
- float turnRateThisFrame;
794
- if (Math.Sign(angleDiscrepancy) < 0)
795
- {
796
- turnRateThisFrame = -1 * Math.Min(turnRatePerFrame, -angleDiscrepancy);
797
- }
798
- else
799
- {
800
- turnRateThisFrame = Math.Min(turnRatePerFrame, angleDiscrepancy);
801
- }
802
-
803
- float currentAngle = Vector2.SignedAngle(Vector2.right, currentDirection);
804
- currentAngle += turnRateThisFrame;
805
- return (Quaternion.AngleAxis(currentAngle, Vector3.forward) * Vector3.right).normalized;
806
- }
807
-
808
- public static void Extend2D(ref BoundsInt bounds, FastVector3Int position)
809
- {
810
- if (position.x < bounds.xMin)
811
- {
812
- bounds.xMin = position.x;
813
- }
814
-
815
- if (bounds.xMax < position.x)
816
- {
817
- bounds.xMax = position.x;
818
- }
819
-
820
- if (position.y < bounds.yMin)
821
- {
822
- bounds.yMin = position.y;
823
- }
824
-
825
- if (bounds.yMax < position.y)
826
- {
827
- bounds.yMax = position.y;
828
- }
829
- }
830
- }
831
- }
1
+ namespace WallstopStudios.UnityHelpers.Core.Helper
2
+ {
3
+ using System;
4
+ using System.Collections;
5
+ using System.Collections.Generic;
6
+ using System.Reflection;
7
+ using DataStructure.Adapters;
8
+ using Random;
9
+ using UnityEngine;
10
+ using Utils;
11
+ using Object = UnityEngine.Object;
12
+ #if !SINGLE_THREADED
13
+ using System.Collections.Concurrent;
14
+ #else
15
+ using WallstopStudios.UnityHelpers.Core.Extension;
16
+ #endif
17
+ #if UNITY_EDITOR
18
+ using UnityEditor;
19
+ using UnityEditorInternal;
20
+ #endif
21
+ /// <summary>
22
+ /// General-purpose utilities and Unity-centric helpers.
23
+ /// </summary>
24
+ /// <remarks>
25
+ /// Scope: Cross-cutting helpers for gameplay, math, pooling, scene, sprites, and layers.
26
+ /// Threading: Unless noted otherwise, methods that touch Unity APIs must run on the main thread.
27
+ /// Performance: Many methods use pooled buffers (see Buffers&lt;T&gt;) to avoid allocations.
28
+ /// </remarks>
29
+ public static partial class Helpers
30
+ {
31
+ #if SINGLE_THREADED
32
+ private static readonly Dictionary<
33
+ Type,
34
+ Func<object, object[], object>
35
+ > AwakeMethodsByType = new();
36
+ #else
37
+ private static readonly ConcurrentDictionary<
38
+ Type,
39
+ Func<object, object[], object>
40
+ > AwakeMethodsByType = new();
41
+ #endif
42
+ private static readonly Object LogObject = new();
43
+ private static readonly Dictionary<string, Object> ObjectsByTag = new(
44
+ StringComparer.Ordinal
45
+ );
46
+
47
+ internal static readonly Dictionary<string, string[]> CachedLabels = new(
48
+ StringComparer.OrdinalIgnoreCase
49
+ );
50
+
51
+ private static string[] CachedLayerNames = Array.Empty<string>();
52
+ private static bool LayerCacheInitialized;
53
+
54
+ #if UNITY_EDITOR
55
+ private static readonly string[] DefaultPrefabSearchFolders =
56
+ {
57
+ "Assets/Prefabs",
58
+ "Assets/Resources",
59
+ };
60
+
61
+ private static readonly string[] DefaultScriptableObjectSearchFolders =
62
+ {
63
+ "Assets/Prefabs",
64
+ "Assets/Resources",
65
+ "Assets/TileMaps",
66
+ };
67
+ #endif
68
+
69
+ [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
70
+ private static void CLearLayerNames()
71
+ {
72
+ CachedLayerNames = Array.Empty<string>();
73
+ LayerCacheInitialized = false;
74
+ }
75
+
76
+ /// <summary>
77
+ /// Indicates whether Unity is running in batch mode (no graphics device, command-line mode).
78
+ /// </summary>
79
+ /// <remarks>
80
+ /// Useful for disabling editor-only or interactive-only behavior in build scripts and CI.
81
+ /// </remarks>
82
+ public static bool IsRunningInBatchMode => Application.isBatchMode;
83
+
84
+ /// <summary>
85
+ /// Indicates whether the process appears to be running under a CI system.
86
+ /// </summary>
87
+ /// <remarks>
88
+ /// Checks common CI environment variables including GITHUB_ACTIONS, CI, JENKINS_URL, and GITLAB_CI.
89
+ /// </remarks>
90
+ public static bool IsRunningInContinuousIntegration
91
+ {
92
+ get
93
+ {
94
+ if (
95
+ !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("GITHUB_ACTIONS"))
96
+ )
97
+ {
98
+ return true;
99
+ }
100
+
101
+ if (!string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("CI")))
102
+ {
103
+ return true;
104
+ }
105
+
106
+ if (!string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("JENKINS_URL")))
107
+ {
108
+ return true;
109
+ }
110
+
111
+ if (!string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("GITLAB_CI")))
112
+ {
113
+ return true;
114
+ }
115
+
116
+ return false;
117
+ }
118
+ }
119
+
120
+ internal static string[] AllSpriteLabels { get; private set; } = Array.Empty<string>();
121
+ private static bool SpriteLabelCacheInitialized;
122
+
123
+ /// <summary>
124
+ /// Gets all unique sprite labels in the project (Editor only).
125
+ /// </summary>
126
+ /// <remarks>
127
+ /// Returns an empty array in batch/CI or at runtime player. Results are cached and sorted.
128
+ /// </remarks>
129
+ public static string[] GetAllSpriteLabelNames()
130
+ {
131
+ if (IsRunningInContinuousIntegration || IsRunningInBatchMode)
132
+ {
133
+ return Array.Empty<string>();
134
+ }
135
+
136
+ #if UNITY_EDITOR
137
+ if (SpriteLabelCacheInitialized)
138
+ {
139
+ return AllSpriteLabels;
140
+ }
141
+
142
+ using PooledResource<List<string>> labelBuffer = Buffers<string>.List.Get();
143
+ CollectSpriteLabels(labelBuffer.resource);
144
+ return AllSpriteLabels;
145
+ #else
146
+ return Array.Empty<string>();
147
+ #endif
148
+ }
149
+
150
+ /// <summary>
151
+ /// Copies all unique sprite labels into <paramref name="destination"/> (Editor only).
152
+ /// </summary>
153
+ /// <param name="destination">Destination list which will be cleared first.</param>
154
+ /// <remarks>
155
+ /// Returns without changes in batch/CI or at runtime player. Results are cached and sorted.
156
+ /// </remarks>
157
+ public static void GetAllSpriteLabelNames(List<string> destination)
158
+ {
159
+ if (destination == null)
160
+ {
161
+ throw new ArgumentNullException(nameof(destination));
162
+ }
163
+
164
+ destination.Clear();
165
+
166
+ if (IsRunningInContinuousIntegration || IsRunningInBatchMode)
167
+ {
168
+ return;
169
+ }
170
+
171
+ #if UNITY_EDITOR
172
+ string[] cached = SpriteLabelCacheInitialized
173
+ ? AllSpriteLabels
174
+ : GetAllSpriteLabelNames();
175
+
176
+ if (cached.Length == 0)
177
+ {
178
+ return;
179
+ }
180
+
181
+ destination.AddRange(cached);
182
+ #else
183
+ _ = destination;
184
+ #endif
185
+ }
186
+
187
+ /// <summary>
188
+ /// Gets all defined Unity layer names.
189
+ /// </summary>
190
+ /// <remarks>
191
+ /// Uses InternalEditorUtility.layers in Editor with caching, otherwise queries LayerMask.LayerToName.
192
+ /// </remarks>
193
+ public static string[] GetAllLayerNames()
194
+ {
195
+ #if UNITY_EDITOR
196
+ try
197
+ {
198
+ // Prefer the editor API when available
199
+ string[] editorLayers = InternalEditorUtility.layers;
200
+ if (editorLayers is { Length: > 0 })
201
+ {
202
+ LayerCacheInitialized = true;
203
+ CachedLayerNames = editorLayers;
204
+ return editorLayers;
205
+ }
206
+ }
207
+ catch
208
+ {
209
+ // Fall through to runtime-safe fallback below
210
+ }
211
+ #endif
212
+ if (!Application.isEditor && Application.isPlaying && LayerCacheInitialized)
213
+ {
214
+ return CachedLayerNames;
215
+ }
216
+
217
+ using PooledResource<List<string>> layerBuffer = Buffers<string>.List.Get();
218
+ List<string> layers = layerBuffer.resource;
219
+ for (int i = 0; i < 32; ++i)
220
+ {
221
+ string name = LayerMask.LayerToName(i);
222
+ if (!string.IsNullOrEmpty(name))
223
+ {
224
+ layers.Add(name);
225
+ }
226
+ }
227
+
228
+ LayerCacheInitialized = true;
229
+ int layerCount = layers.Count;
230
+ if (layerCount == 0)
231
+ {
232
+ CachedLayerNames = Array.Empty<string>();
233
+ return CachedLayerNames;
234
+ }
235
+
236
+ if (CachedLayerNames == null || CachedLayerNames.Length != layerCount)
237
+ {
238
+ CachedLayerNames = new string[layerCount];
239
+ }
240
+
241
+ for (int i = 0; i < layerCount; ++i)
242
+ {
243
+ CachedLayerNames[i] = layers[i];
244
+ }
245
+
246
+ return CachedLayerNames;
247
+ }
248
+
249
+ /// <summary>
250
+ /// Copies all layer names into <paramref name="destination"/>.
251
+ /// </summary>
252
+ /// <param name="destination">Destination list which will be cleared first.</param>
253
+ public static void GetAllLayerNames(List<string> destination)
254
+ {
255
+ if (destination == null)
256
+ {
257
+ throw new ArgumentNullException(nameof(destination));
258
+ }
259
+
260
+ destination.Clear();
261
+
262
+ string[] layers = GetAllLayerNames();
263
+ if (layers.Length == 0)
264
+ {
265
+ return;
266
+ }
267
+
268
+ destination.AddRange(layers);
269
+ }
270
+
271
+ #if UNITY_EDITOR
272
+ private static void CollectSpriteLabels(List<string> destination)
273
+ {
274
+ destination.Clear();
275
+
276
+ using PooledResource<HashSet<string>> labelSetResource = Buffers<string>.HashSet.Get();
277
+ HashSet<string> labelSet = labelSetResource.resource;
278
+
279
+ string[] guids = AssetDatabase.FindAssets("t:Sprite");
280
+ foreach (string guid in guids)
281
+ {
282
+ string path = AssetDatabase.GUIDToAssetPath(guid);
283
+ if (!path.StartsWith("Assets", StringComparison.OrdinalIgnoreCase))
284
+ {
285
+ continue;
286
+ }
287
+
288
+ Object asset = AssetDatabase.LoadMainAssetAtPath(path);
289
+ if (asset == null)
290
+ {
291
+ continue;
292
+ }
293
+
294
+ string[] labels = AssetDatabase.GetLabels(asset);
295
+ if (labels.Length == 0)
296
+ {
297
+ continue;
298
+ }
299
+
300
+ CachedLabels[path] = labels;
301
+ labelSet.UnionWith(labels);
302
+ }
303
+
304
+ if (labelSet.Count == 0)
305
+ {
306
+ SetSpriteLabelCache(Array.Empty<string>(), alreadySorted: true);
307
+ return;
308
+ }
309
+
310
+ destination.AddRange(labelSet);
311
+ destination.Sort(StringComparer.Ordinal);
312
+ SetSpriteLabelCache(destination, alreadySorted: true);
313
+ }
314
+ #endif
315
+
316
+ internal static void SetSpriteLabelCache(
317
+ IReadOnlyCollection<string> labels,
318
+ bool alreadySorted = false
319
+ )
320
+ {
321
+ if (labels == null || labels.Count == 0)
322
+ {
323
+ AllSpriteLabels = Array.Empty<string>();
324
+ SpriteLabelCacheInitialized = true;
325
+ return;
326
+ }
327
+
328
+ string[] cache =
329
+ AllSpriteLabels.Length == labels.Count ? AllSpriteLabels : new string[labels.Count];
330
+
331
+ if (labels is IReadOnlyList<string> list)
332
+ {
333
+ for (int i = 0; i < list.Count; ++i)
334
+ {
335
+ cache[i] = list[i];
336
+ }
337
+ }
338
+ else
339
+ {
340
+ int index = 0;
341
+ foreach (string label in labels)
342
+ {
343
+ cache[index++] = label;
344
+ }
345
+ }
346
+
347
+ if (!alreadySorted)
348
+ {
349
+ Array.Sort(cache, StringComparer.Ordinal);
350
+ }
351
+
352
+ AllSpriteLabels = cache;
353
+ SpriteLabelCacheInitialized = true;
354
+ }
355
+
356
+ internal static void ResetSpriteLabelCache()
357
+ {
358
+ SpriteLabelCacheInitialized = false;
359
+ AllSpriteLabels = Array.Empty<string>();
360
+ }
361
+
362
+ // https://gamedevelopment.tutsplus.com/tutorials/unity-solution-for-hitting-moving-targets--cms-29633
363
+ /// <summary>
364
+ /// Computes a lead position for a moving target given projectile speed.
365
+ /// </summary>
366
+ /// <param name="currentTarget">Target GameObject to aim at.</param>
367
+ /// <param name="launchLocation">Projectile launch position.</param>
368
+ /// <param name="projectileSpeed">Projectile speed (units/second).</param>
369
+ /// <param name="predictiveFiring">If false, returns current target position.</param>
370
+ /// <param name="targetVelocity">Estimated target linear velocity.</param>
371
+ /// <returns>World position to aim at. Falls back to current target position if prediction fails.</returns>
372
+ /// <example>
373
+ /// <code>
374
+ /// // Aim turret with predictive lead
375
+ /// Vector2 aimPoint = target.PredictCurrentTarget(turret.position, projectileSpeed: 25f, predictiveFiring: true, targetVelocity);
376
+ /// turret.transform.up = (aimPoint - (Vector2)turret.position).normalized;
377
+ /// </code>
378
+ /// </example>
379
+ public static Vector2 PredictCurrentTarget(
380
+ this GameObject currentTarget,
381
+ Vector2 launchLocation,
382
+ float projectileSpeed,
383
+ bool predictiveFiring,
384
+ Vector2 targetVelocity
385
+ )
386
+ {
387
+ Vector2 target = currentTarget.transform.position;
388
+
389
+ if (!predictiveFiring)
390
+ {
391
+ return target;
392
+ }
393
+
394
+ if (projectileSpeed <= 0)
395
+ {
396
+ return target;
397
+ }
398
+
399
+ float a =
400
+ targetVelocity.x * targetVelocity.x
401
+ + targetVelocity.y * targetVelocity.y
402
+ - projectileSpeed * projectileSpeed;
403
+
404
+ float b =
405
+ 2
406
+ * (
407
+ targetVelocity.x * (target.x - launchLocation.x)
408
+ + targetVelocity.y * (target.y - launchLocation.y)
409
+ );
410
+
411
+ float c =
412
+ (target.x - launchLocation.x) * (target.x - launchLocation.x)
413
+ + (target.y - launchLocation.y) * (target.y - launchLocation.y);
414
+
415
+ float disc = b * b - 4 * a * c;
416
+ if (disc < 0)
417
+ {
418
+ return target;
419
+ }
420
+
421
+ float t1 = (-1 * b + Mathf.Sqrt(disc)) / (2 * a);
422
+ float t2 = (-1 * b - Mathf.Sqrt(disc)) / (2 * a);
423
+ float t = Mathf.Max(t1, t2); // let us take the larger time value
424
+
425
+ float aimX = target.x + targetVelocity.x * t;
426
+ float aimY = target.y + targetVelocity.y * t;
427
+
428
+ if (float.IsNaN(aimX) || float.IsNaN(aimY))
429
+ {
430
+ return target;
431
+ }
432
+
433
+ if (float.IsInfinity(aimX) || float.IsInfinity(aimY))
434
+ {
435
+ return target;
436
+ }
437
+
438
+ return new Vector2(aimX, aimY);
439
+ }
440
+
441
+ /// <summary>
442
+ /// Gets a component of type <typeparamref name="T"/> from a GameObject or Component reference.
443
+ /// Returns default when <paramref name="target"/> is neither.
444
+ /// </summary>
445
+ public static T GetComponent<T>(this Object target)
446
+ {
447
+ return target switch
448
+ {
449
+ GameObject go => go != null ? go.GetComponent<T>() : default,
450
+ Component c => c != null ? c.GetComponent<T>() : default,
451
+ _ => default,
452
+ };
453
+ }
454
+
455
+ /// <summary>
456
+ /// Gets all components of type <typeparamref name="T"/> from a GameObject or Component reference.
457
+ /// Returns an empty array when no match is found.
458
+ /// </summary>
459
+ public static T[] GetComponents<T>(this Object target)
460
+ {
461
+ return target switch
462
+ {
463
+ GameObject go => go != null ? go.GetComponents<T>() : Array.Empty<T>(),
464
+ Component c => c != null ? c.GetComponents<T>() : Array.Empty<T>(),
465
+ _ => default,
466
+ };
467
+ }
468
+
469
+ /// <summary>
470
+ /// Gets all components of type <typeparamref name="T"/> into a provided buffer, avoiding allocations.
471
+ /// </summary>
472
+ /// <param name="buffer">Destination buffer which is cleared first.</param>
473
+ public static List<T> GetComponents<T>(this Object target, List<T> buffer)
474
+ {
475
+ if (buffer == null)
476
+ {
477
+ throw new ArgumentNullException(nameof(buffer));
478
+ }
479
+
480
+ buffer.Clear();
481
+
482
+ switch (target)
483
+ {
484
+ case GameObject go when go != null:
485
+ go.GetComponents(buffer);
486
+ break;
487
+ case Component component when component != null:
488
+ component.GetComponents(buffer);
489
+ break;
490
+ }
491
+
492
+ return buffer;
493
+ }
494
+
495
+ /// <summary>
496
+ /// Extracts a GameObject from either a GameObject or Component instance; returns null otherwise.
497
+ /// </summary>
498
+ public static GameObject GetGameObject(this object target)
499
+ {
500
+ return target switch
501
+ {
502
+ GameObject go => go,
503
+ Component c => c != null ? c.gameObject : null,
504
+ _ => null,
505
+ };
506
+ }
507
+
508
+ /// <summary>
509
+ /// Tries to get a component of type <typeparamref name="T"/> from a GameObject or Component.
510
+ /// </summary>
511
+ public static bool TryGetComponent<T>(this Object target, out T component)
512
+ {
513
+ component = default;
514
+ return target switch
515
+ {
516
+ GameObject go => go != null && go.TryGetComponent(out component),
517
+ Component c => c != null && c.TryGetComponent(out component),
518
+ _ => false,
519
+ };
520
+ }
521
+
522
+ /// <summary>
523
+ /// Recursively searches the child hierarchy (including self) for the first GameObject with the specified tag.
524
+ /// </summary>
525
+ public static GameObject FindChildGameObjectWithTag(this GameObject gameObject, string tag)
526
+ {
527
+ using PooledResource<List<Transform>> bufferResource = Buffers<Transform>.List.Get();
528
+ foreach (
529
+ Transform t in gameObject.transform.IterateOverAllChildrenRecursively(
530
+ bufferResource.resource,
531
+ includeSelf: true
532
+ )
533
+ )
534
+ {
535
+ GameObject go = t.gameObject;
536
+
537
+ if (go.CompareTag(tag))
538
+ {
539
+ return go;
540
+ }
541
+ }
542
+
543
+ return null;
544
+ }
545
+
546
+ /// <summary>
547
+ /// Repeatedly invokes an action at the specified update rate using a coroutine.
548
+ /// </summary>
549
+ /// <param name="updateRate">Interval in seconds between invocations.</param>
550
+ /// <param name="useJitter">If true, applies a single randomized initial delay up to <paramref name="updateRate"/>.</param>
551
+ /// <param name="waitBefore">If true, waits one interval before the first invocation.</param>
552
+ /// <returns>The started coroutine.</returns>
553
+ /// <example>
554
+ /// <code>
555
+ /// // Poll a service every 0.5s with staggered start
556
+ /// this.StartFunctionAsCoroutine(CheckHealth, 0.5f, useJitter: true);
557
+ /// </code>
558
+ /// </example>
559
+ public static Coroutine StartFunctionAsCoroutine(
560
+ this MonoBehaviour monoBehaviour,
561
+ Action action,
562
+ float updateRate,
563
+ bool useJitter = false,
564
+ bool waitBefore = false
565
+ )
566
+ {
567
+ return monoBehaviour.StartCoroutine(
568
+ FunctionAsCoroutine(action, updateRate, useJitter, waitBefore)
569
+ );
570
+ }
571
+
572
+ private static IEnumerator FunctionAsCoroutine(
573
+ Action action,
574
+ float updateRate,
575
+ bool useJitter,
576
+ bool waitBefore
577
+ )
578
+ {
579
+ bool usedJitter = false;
580
+ while (true)
581
+ {
582
+ float startTime;
583
+ if (waitBefore)
584
+ {
585
+ if (useJitter && !usedJitter)
586
+ {
587
+ float delay = PRNG.Instance.NextFloat(updateRate);
588
+ startTime = Time.time;
589
+ while (!HasEnoughTimePassed(startTime, delay))
590
+ {
591
+ yield return null;
592
+ }
593
+
594
+ usedJitter = true;
595
+ }
596
+
597
+ startTime = Time.time;
598
+ while (!HasEnoughTimePassed(startTime, updateRate))
599
+ {
600
+ yield return null;
601
+ }
602
+ }
603
+
604
+ action();
605
+
606
+ if (!waitBefore)
607
+ {
608
+ if (useJitter && !usedJitter)
609
+ {
610
+ float delay = PRNG.Instance.NextFloat(updateRate);
611
+ startTime = Time.time;
612
+ while (!HasEnoughTimePassed(startTime, delay))
613
+ {
614
+ yield return null;
615
+ }
616
+
617
+ usedJitter = true;
618
+ }
619
+
620
+ startTime = Time.time;
621
+ while (!HasEnoughTimePassed(startTime, updateRate))
622
+ {
623
+ yield return null;
624
+ }
625
+ }
626
+ }
627
+ }
628
+
629
+ public static Coroutine ExecuteFunctionAfterDelay(
630
+ this MonoBehaviour monoBehaviour,
631
+ Action action,
632
+ float delay
633
+ )
634
+ {
635
+ return monoBehaviour.StartCoroutine(FunctionDelayAsCoroutine(action, delay));
636
+ }
637
+
638
+ public static Coroutine ExecuteFunctionNextFrame(
639
+ this MonoBehaviour monoBehaviour,
640
+ Action action
641
+ )
642
+ {
643
+ return monoBehaviour.ExecuteFunctionAfterDelay(action, 0f);
644
+ }
645
+
646
+ public static Coroutine ExecuteFunctionAfterFrame(
647
+ this MonoBehaviour monoBehaviour,
648
+ Action action
649
+ )
650
+ {
651
+ return monoBehaviour.StartCoroutine(FunctionAfterFrame(action));
652
+ }
653
+
654
+ public static IEnumerator ExecuteOverTime(
655
+ Action action,
656
+ int totalCount,
657
+ float duration,
658
+ bool delay = true
659
+ )
660
+ {
661
+ if (action == null)
662
+ {
663
+ yield break;
664
+ }
665
+
666
+ if (totalCount <= 0)
667
+ {
668
+ yield break;
669
+ }
670
+
671
+ int totalExecuted = 0;
672
+ float startTime = Time.time;
673
+ while (!HasEnoughTimePassed(startTime, duration))
674
+ {
675
+ float percent = (Time.time - startTime) / duration;
676
+ // optional delay execution from happening on 0, 1, 2, ... n-1 to 1, 2, ... n
677
+ if (
678
+ totalExecuted < totalCount
679
+ && (totalExecuted + (delay ? 1f : 0f)) / totalCount <= percent
680
+ )
681
+ {
682
+ action();
683
+ ++totalExecuted;
684
+ }
685
+
686
+ yield return null;
687
+ }
688
+
689
+ for (; totalExecuted < totalCount; )
690
+ {
691
+ action();
692
+ ++totalExecuted;
693
+ yield return null;
694
+ }
695
+ }
696
+
697
+ private static IEnumerator FunctionDelayAsCoroutine(Action action, float delay)
698
+ {
699
+ float startTime = Time.time;
700
+ while (!HasEnoughTimePassed(startTime, delay))
701
+ {
702
+ yield return null;
703
+ }
704
+
705
+ action();
706
+ }
707
+
708
+ private static IEnumerator FunctionAfterFrame(Action action)
709
+ {
710
+ yield return Buffers.WaitForEndOfFrame;
711
+ action();
712
+ }
713
+
714
+ public static bool HasEnoughTimePassed(float timestamp, float desiredDuration)
715
+ {
716
+ return timestamp + desiredDuration < Time.time;
717
+ }
718
+
719
+ public static Vector2 Opposite(this Vector2 vector)
720
+ {
721
+ return vector * -1;
722
+ }
723
+
724
+ public static Vector3 Opposite(this Vector3 vector)
725
+ {
726
+ return vector * -1;
727
+ }
728
+
729
+ public static IEnumerable<Vector3Int> IterateArea(this BoundsInt bounds)
730
+ {
731
+ foreach (Vector3Int position in bounds.allPositionsWithin)
732
+ {
733
+ yield return position;
734
+ }
735
+ }
736
+
737
+ public static IEnumerable<Vector3Int> IterateBounds(this BoundsInt bounds, int padding = 1)
738
+ {
739
+ int xStart = bounds.xMin - padding;
740
+ int xEnd = bounds.xMax + padding;
741
+ int yStart = bounds.yMin - padding;
742
+ int yEnd = bounds.yMax + padding;
743
+
744
+ for (int x = xStart; x <= xEnd; ++x)
745
+ {
746
+ for (int y = yStart; y <= yEnd; ++y)
747
+ {
748
+ yield return new Vector3Int(x, y, 0);
749
+ }
750
+ }
751
+ }
752
+
753
+ public static Vector3Int AsVector3Int(this (int x, int y, int z) vector)
754
+ {
755
+ return new Vector3Int(vector.x, vector.y, vector.z);
756
+ }
757
+
758
+ public static Vector3Int AsVector3Int(this (uint x, uint y, uint z) vector)
759
+ {
760
+ return new Vector3Int((int)vector.x, (int)vector.y, (int)vector.z);
761
+ }
762
+
763
+ public static Vector3Int AsVector3Int(this Vector3 vector)
764
+ {
765
+ return new Vector3Int(
766
+ (int)Math.Round(vector.x),
767
+ (int)Math.Round(vector.y),
768
+ (int)Math.Round(vector.z)
769
+ );
770
+ }
771
+
772
+ /// <summary>
773
+ /// Converts a tuple to a Vector3.
774
+ /// </summary>
775
+ public static Vector3 AsVector3(this (uint x, uint y, uint z) vector)
776
+ {
777
+ return new Vector3(vector.x, vector.y, vector.z);
778
+ }
779
+
780
+ /// <summary>
781
+ /// Converts a Vector3Int to Vector3.
782
+ /// </summary>
783
+ public static Vector3 AsVector3(this Vector3Int vector)
784
+ {
785
+ return new Vector3(vector.x, vector.y, vector.z);
786
+ }
787
+
788
+ /// <summary>
789
+ /// Converts a Vector3Int to Vector2 by dropping Z.
790
+ /// </summary>
791
+ public static Vector2 AsVector2(this Vector3Int vector)
792
+ {
793
+ return new Vector2(vector.x, vector.y);
794
+ }
795
+
796
+ /// <summary>
797
+ /// Converts a Vector3Int to Vector2Int by dropping Z.
798
+ /// </summary>
799
+ public static Vector2Int AsVector2Int(this Vector3Int vector)
800
+ {
801
+ return new Vector2Int(vector.x, vector.y);
802
+ }
803
+
804
+ /// <summary>
805
+ /// Converts a Vector2Int to Vector3Int (Z = 0).
806
+ /// </summary>
807
+ public static Vector3Int AsVector3Int(this Vector2Int vector)
808
+ {
809
+ return new Vector3Int(vector.x, vector.y);
810
+ }
811
+
812
+ /// <summary>
813
+ /// Converts a BoundsInt to a 2D Rect using X/Y and size.
814
+ /// </summary>
815
+ public static Rect AsRect(this BoundsInt bounds)
816
+ {
817
+ return new Rect(bounds.x, bounds.y, bounds.size.x, bounds.size.y);
818
+ }
819
+
820
+ /// <summary>
821
+ /// Returns a uniformly random point inside a circle.
822
+ /// </summary>
823
+ /// <param name="center">Circle center.</param>
824
+ /// <param name="radius">Circle radius.</param>
825
+ /// <param name="random">Optional RNG; defaults to PRNG.Instance.</param>
826
+ public static Vector2 GetRandomPointInCircle(
827
+ Vector2 center,
828
+ float radius,
829
+ IRandom random = null
830
+ )
831
+ {
832
+ random ??= PRNG.Instance;
833
+ double r = radius * Math.Sqrt(random.NextDouble());
834
+ double theta = random.NextDouble() * 2 * Math.PI;
835
+ return new Vector2(
836
+ center.x + (float)(r * Math.Cos(theta)),
837
+ center.y + (float)(r * Math.Sin(theta))
838
+ );
839
+ }
840
+
841
+ /// <summary>
842
+ /// Returns a uniformly random point inside a sphere.
843
+ /// </summary>
844
+ /// <param name="center">Sphere center.</param>
845
+ /// <param name="radius">Sphere radius.</param>
846
+ /// <param name="random">Optional RNG; defaults to PRNG.Instance.</param>
847
+ public static Vector3 GetRandomPointInSphere(
848
+ Vector3 center,
849
+ float radius,
850
+ IRandom random = null
851
+ )
852
+ {
853
+ random ??= PRNG.Instance;
854
+ double u = random.NextDouble();
855
+ double v = random.NextDouble();
856
+ double theta = 2 * Math.PI * u;
857
+ double phi = Math.Acos(2 * v - 1);
858
+ double r = radius * Math.Pow(random.NextDouble(), 1.0 / 3.0);
859
+ double sinPhi = Math.Sin(phi);
860
+ return new Vector3(
861
+ center.x + (float)(r * sinPhi * Math.Cos(theta)),
862
+ center.y + (float)(r * sinPhi * Math.Sin(theta)),
863
+ center.z + (float)(r * Math.Cos(phi))
864
+ );
865
+ }
866
+
867
+ /// <summary>
868
+ /// Gets the first child (or self) with the Player tag.
869
+ /// </summary>
870
+ public static GameObject GetPlayerObjectInChildHierarchy(
871
+ this GameObject gameObject,
872
+ string playerTag = "Player"
873
+ )
874
+ {
875
+ return gameObject.GetTagObjectInChildHierarchy(playerTag);
876
+ }
877
+
878
+ /// <summary>
879
+ /// Gets the first child (or self) with a specific tag.
880
+ /// </summary>
881
+ public static GameObject GetTagObjectInChildHierarchy(
882
+ this GameObject gameObject,
883
+ string tag
884
+ )
885
+ {
886
+ using PooledResource<List<Transform>> bufferResource = Buffers<Transform>.List.Get();
887
+ foreach (
888
+ Transform t in gameObject.transform.IterateOverAllChildrenRecursively(
889
+ bufferResource.resource,
890
+ includeSelf: true
891
+ )
892
+ )
893
+ {
894
+ GameObject go = t.gameObject;
895
+ if (go.CompareTag(tag))
896
+ {
897
+ return go;
898
+ }
899
+ }
900
+
901
+ return null;
902
+ }
903
+
904
+ //https://answers.unity.com/questions/722748/refreshing-the-polygon-collider-2d-upon-sprite-cha.html
905
+ /// <summary>
906
+ /// Updates a PolygonCollider2D's shape to match the current SpriteRenderer sprite.
907
+ /// </summary>
908
+ /// <remarks>
909
+ /// Useful when changing sprites at runtime and needing the collider to match the new shape.
910
+ /// </remarks>
911
+ public static void UpdateShapeToSprite(this Component component)
912
+ {
913
+ if (
914
+ !component.TryGetComponent(out SpriteRenderer spriteRenderer)
915
+ || !component.TryGetComponent(out PolygonCollider2D collider)
916
+ )
917
+ {
918
+ return;
919
+ }
920
+
921
+ UpdateShapeToSprite(spriteRenderer.sprite, collider);
922
+ }
923
+
924
+ /// <summary>
925
+ /// Updates a PolygonCollider2D to match a given Sprite's physics shape.
926
+ /// </summary>
927
+ public static void UpdateShapeToSprite(Sprite sprite, PolygonCollider2D collider)
928
+ {
929
+ if (sprite == null || collider == null)
930
+ {
931
+ return;
932
+ }
933
+
934
+ int pathCount = collider.pathCount = sprite.GetPhysicsShapeCount();
935
+
936
+ using PooledResource<List<Vector2>> pathResource = Buffers<Vector2>.List.Get();
937
+ List<Vector2> path = pathResource.resource;
938
+ for (int i = 0; i < pathCount; ++i)
939
+ {
940
+ path.Clear();
941
+ _ = sprite.GetPhysicsShape(i, path);
942
+ collider.SetPath(i, path);
943
+ }
944
+ }
945
+
946
+ /// <summary>
947
+ /// 3D cross product for Vector3Int.
948
+ /// </summary>
949
+ public static Vector3Int Cross(this Vector3Int vector, Vector3Int other)
950
+ {
951
+ int x = vector.y * other.z - other.y * vector.z;
952
+ int y = (vector.x * other.z - other.x * vector.z) * -1;
953
+ int z = vector.x * other.y - other.x * vector.y;
954
+
955
+ return new Vector3Int(x, y, z);
956
+ }
957
+
958
+ /// <summary>
959
+ /// Walks up the hierarchy (including self) to find the nearest GameObject with a component of type <typeparamref name="T"/>.
960
+ /// </summary>
961
+ public static GameObject TryGetClosestParentWithComponentIncludingSelf<T>(
962
+ this GameObject current
963
+ )
964
+ where T : Component
965
+ {
966
+ while (current != null)
967
+ {
968
+ if (current.HasComponent<T>())
969
+ {
970
+ return current;
971
+ }
972
+
973
+ Transform parent = current.transform.parent;
974
+ current = parent != null ? parent.gameObject : null;
975
+ }
976
+
977
+ return null;
978
+ }
979
+
980
+ #if UNITY_EDITOR
981
+ private static string[] PrepareSearchFolders(
982
+ IEnumerable<string> assetPaths,
983
+ string[] defaultFolders,
984
+ out PooledResource<List<string>> listResource,
985
+ out PooledResource<string[]> arrayResource
986
+ )
987
+ {
988
+ listResource = default;
989
+ arrayResource = default;
990
+
991
+ if (assetPaths == null)
992
+ {
993
+ return defaultFolders;
994
+ }
995
+
996
+ if (assetPaths is string[] array)
997
+ {
998
+ return array;
999
+ }
1000
+
1001
+ if (assetPaths is IReadOnlyList<string> readonlyList)
1002
+ {
1003
+ arrayResource = WallstopFastArrayPool<string>.Get(
1004
+ readonlyList.Count,
1005
+ out string[] buffer
1006
+ );
1007
+ for (int i = 0; i < readonlyList.Count; i++)
1008
+ {
1009
+ string path = readonlyList[i];
1010
+ buffer[i] = path;
1011
+ }
1012
+
1013
+ return buffer;
1014
+ }
1015
+ if (assetPaths is ICollection<string> collection)
1016
+ {
1017
+ arrayResource = WallstopFastArrayPool<string>.Get(
1018
+ collection.Count,
1019
+ out string[] buffer
1020
+ );
1021
+ collection.CopyTo(buffer, 0);
1022
+ return buffer;
1023
+ }
1024
+
1025
+ listResource = Buffers<string>.List.Get(out List<string> list);
1026
+ list.AddRange(assetPaths);
1027
+
1028
+ arrayResource = WallstopFastArrayPool<string>.Get(list.Count, out string[] temp);
1029
+ list.CopyTo(temp);
1030
+ return temp;
1031
+ }
1032
+
1033
+ /// <summary>
1034
+ /// Enumerates Prefab assets in the project (Editor only). Uses search folders when provided.
1035
+ /// </summary>
1036
+ public static IEnumerable<GameObject> EnumeratePrefabs(
1037
+ IEnumerable<string> assetPaths = null
1038
+ )
1039
+ {
1040
+ string[] searchFolders = PrepareSearchFolders(
1041
+ assetPaths,
1042
+ DefaultPrefabSearchFolders,
1043
+ out PooledResource<List<string>> pathListResource,
1044
+ out PooledResource<string[]> pathArrayResource
1045
+ );
1046
+
1047
+ try
1048
+ {
1049
+ foreach (string assetGuid in AssetDatabase.FindAssets("t:prefab", searchFolders))
1050
+ {
1051
+ string path = AssetDatabase.GUIDToAssetPath(assetGuid);
1052
+ GameObject go = AssetDatabase.LoadAssetAtPath<GameObject>(path);
1053
+ if (go != null)
1054
+ {
1055
+ yield return go;
1056
+ }
1057
+ }
1058
+ }
1059
+ finally
1060
+ {
1061
+ pathArrayResource.Dispose();
1062
+ pathListResource.Dispose();
1063
+ }
1064
+ }
1065
+
1066
+ /// <summary>
1067
+ /// Enumerates ScriptableObject assets of type <typeparamref name="T"/> in the project (Editor only).
1068
+ /// </summary>
1069
+ public static IEnumerable<T> EnumerateScriptableObjects<T>(
1070
+ IEnumerable<string> assetPaths = null
1071
+ )
1072
+ where T : ScriptableObject
1073
+ {
1074
+ string[] searchFolders = PrepareSearchFolders(
1075
+ assetPaths,
1076
+ DefaultScriptableObjectSearchFolders,
1077
+ out PooledResource<List<string>> pathListResource,
1078
+ out PooledResource<string[]> pathArrayResource
1079
+ );
1080
+
1081
+ try
1082
+ {
1083
+ foreach (
1084
+ string assetGuid in AssetDatabase.FindAssets(
1085
+ "t:" + typeof(T).Name,
1086
+ searchFolders
1087
+ )
1088
+ )
1089
+ {
1090
+ string path = AssetDatabase.GUIDToAssetPath(assetGuid);
1091
+ T so = AssetDatabase.LoadAssetAtPath<T>(path);
1092
+ if (so != null)
1093
+ {
1094
+ yield return so;
1095
+ }
1096
+ }
1097
+ }
1098
+ finally
1099
+ {
1100
+ pathArrayResource.Dispose();
1101
+ pathListResource.Dispose();
1102
+ }
1103
+ }
1104
+ #endif
1105
+
1106
+ public static bool NameEquals(Object lhs, Object rhs)
1107
+ {
1108
+ if (lhs == rhs)
1109
+ {
1110
+ return true;
1111
+ }
1112
+
1113
+ if (lhs == null || rhs == null)
1114
+ {
1115
+ return false;
1116
+ }
1117
+
1118
+ if (string.Equals(lhs.name, rhs.name, StringComparison.Ordinal))
1119
+ {
1120
+ return true;
1121
+ }
1122
+
1123
+ const string clone = "(Clone)";
1124
+ string lhsName = lhs.name;
1125
+ while (lhsName.EndsWith(clone, StringComparison.Ordinal))
1126
+ {
1127
+ lhsName = lhsName.Substring(0, lhsName.Length - clone.Length);
1128
+ lhsName = lhsName.Trim();
1129
+ }
1130
+
1131
+ string rhsName = rhs.name;
1132
+ while (rhsName.EndsWith(clone, StringComparison.Ordinal))
1133
+ {
1134
+ rhsName = rhsName.Substring(0, rhsName.Length - clone.Length);
1135
+ rhsName = rhsName.Trim();
1136
+ }
1137
+
1138
+ return string.Equals(lhsName, rhsName, StringComparison.Ordinal);
1139
+ }
1140
+
1141
+ public static Color ChangeColorBrightness(this Color color, float correctionFactor)
1142
+ {
1143
+ correctionFactor = Math.Clamp(correctionFactor, -1f, 1f);
1144
+
1145
+ float red = color.r;
1146
+ float green = color.g;
1147
+ float blue = color.b;
1148
+ if (correctionFactor < 0)
1149
+ {
1150
+ correctionFactor += 1;
1151
+ red *= correctionFactor;
1152
+ green *= correctionFactor;
1153
+ blue *= correctionFactor;
1154
+ }
1155
+ else
1156
+ {
1157
+ red = (1f - red) * correctionFactor + red;
1158
+ green = (1f - green) * correctionFactor + green;
1159
+ blue = (1f - blue) * correctionFactor + blue;
1160
+ }
1161
+
1162
+ return new Color(red, green, blue, color.a);
1163
+ }
1164
+
1165
+ /// <summary>
1166
+ /// Invokes Awake() on all <see cref="MonoBehaviour"/> components in the GameObject's hierarchy.
1167
+ /// </summary>
1168
+ /// <remarks>
1169
+ /// Primarily useful in tests and tooling to simulate lifecycle when instantiating objects dynamically.
1170
+ /// </remarks>
1171
+ public static void AwakeObject(this GameObject gameObject)
1172
+ {
1173
+ using PooledResource<List<MonoBehaviour>> componentResource =
1174
+ Buffers<MonoBehaviour>.List.Get();
1175
+ List<MonoBehaviour> components = componentResource.resource;
1176
+ gameObject.GetComponentsInChildren(false, components);
1177
+ foreach (MonoBehaviour script in components)
1178
+ {
1179
+ Func<object, object[], object> awakeInfo = AwakeMethodsByType.GetOrAdd(
1180
+ script.GetType(),
1181
+ type =>
1182
+ {
1183
+ MethodInfo[] methods = type.GetMethods(
1184
+ BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
1185
+ );
1186
+ foreach (MethodInfo method in methods)
1187
+ {
1188
+ if (
1189
+ string.Equals(method.Name, "Awake", StringComparison.Ordinal)
1190
+ && method.GetParameters().Length == 0
1191
+ )
1192
+ {
1193
+ return ReflectionHelpers.GetMethodInvoker(method);
1194
+ }
1195
+ }
1196
+
1197
+ return null;
1198
+ }
1199
+ );
1200
+ _ = awakeInfo?.Invoke(script, null);
1201
+ }
1202
+ }
1203
+
1204
+ /// <summary>
1205
+ /// Rotates a direction vector toward a target direction at a fixed angular speed.
1206
+ /// </summary>
1207
+ /// <param name="targetDirection">Desired direction (normalized or not).</param>
1208
+ /// <param name="currentDirection">Current direction (normalized or not).</param>
1209
+ /// <param name="rotationSpeed">Degrees per second.</param>
1210
+ /// <returns>New normalized direction after applying rotation for the current frame.</returns>
1211
+ /// <example>
1212
+ /// <code>
1213
+ /// Vector2 facing = Vector2.right;
1214
+ /// facing = Helpers.GetAngleWithSpeed(target - position, facing, 180f);
1215
+ /// </code>
1216
+ /// </example>
1217
+ public static Vector2 GetAngleWithSpeed(
1218
+ Vector2 targetDirection,
1219
+ Vector2 currentDirection,
1220
+ float rotationSpeed
1221
+ )
1222
+ {
1223
+ if (targetDirection == Vector2.zero)
1224
+ {
1225
+ return currentDirection;
1226
+ }
1227
+
1228
+ float turnRatePerFrame = rotationSpeed * Time.deltaTime;
1229
+ float angleDiscrepancy = Vector2.SignedAngle(currentDirection, targetDirection);
1230
+ float turnRateThisFrame;
1231
+ if (Math.Sign(angleDiscrepancy) < 0)
1232
+ {
1233
+ turnRateThisFrame = -1 * Math.Min(turnRatePerFrame, -angleDiscrepancy);
1234
+ }
1235
+ else
1236
+ {
1237
+ turnRateThisFrame = Math.Min(turnRatePerFrame, angleDiscrepancy);
1238
+ }
1239
+
1240
+ float currentAngle = Vector2.SignedAngle(Vector2.right, currentDirection);
1241
+ currentAngle += turnRateThisFrame;
1242
+ return (Quaternion.AngleAxis(currentAngle, Vector3.forward) * Vector3.right).normalized;
1243
+ }
1244
+
1245
+ /// <summary>
1246
+ /// Expands a 2D BoundsInt to include the given X/Y position.
1247
+ /// </summary>
1248
+ public static void Extend2D(ref BoundsInt bounds, FastVector3Int position)
1249
+ {
1250
+ if (position.x < bounds.xMin)
1251
+ {
1252
+ bounds.xMin = position.x;
1253
+ }
1254
+
1255
+ if (bounds.xMax < position.x)
1256
+ {
1257
+ bounds.xMax = position.x;
1258
+ }
1259
+
1260
+ if (position.y < bounds.yMin)
1261
+ {
1262
+ bounds.yMin = position.y;
1263
+ }
1264
+
1265
+ if (bounds.yMax < position.y)
1266
+ {
1267
+ bounds.yMax = position.y;
1268
+ }
1269
+ }
1270
+ }
1271
+ }