com.wallstop-studios.unity-helpers 2.0.0-rc58 → 2.0.0-rc60

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 (298) hide show
  1. package/.config/dotnet-tools.json +9 -9
  2. package/.editorconfig +184 -184
  3. package/.gitattributes +63 -63
  4. package/.github/workflows/npm-publish.yml +75 -66
  5. package/.pre-commit-config.yaml +21 -21
  6. package/Editor/AnimationCopier.cs +181 -181
  7. package/Editor/AnimationCopier.cs.meta +2 -2
  8. package/Editor/AnimationCreator.cs +253 -253
  9. package/Editor/AnimationCreator.cs.meta +11 -11
  10. package/Editor/AnimationEventEditor.cs +887 -887
  11. package/Editor/AnimatorControllerCopier.cs +162 -162
  12. package/Editor/AnimatorControllerCopier.cs.meta +2 -2
  13. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs +34 -34
  14. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs.meta +2 -2
  15. package/Editor/CustomEditors.meta +2 -2
  16. package/Editor/FitTextureSizeWizard.cs +147 -147
  17. package/Editor/FitTextureSizeWizard.cs.meta +2 -2
  18. package/Editor/PrefabCheckWizard.cs +170 -170
  19. package/Editor/PrefabCheckWizard.cs.meta +11 -11
  20. package/Editor/SpriteSettingsApplier.cs +272 -272
  21. package/Editor/SpriteSettingsApplier.cs.meta +2 -2
  22. package/Editor/StringInListeDrawer.cs +56 -56
  23. package/Editor/TextureResizerWizard.cs +181 -181
  24. package/Editor/TextureResizerWizard.cs.meta +2 -2
  25. package/Editor/TextureSettingsApplier.cs +178 -178
  26. package/Editor/TextureSettingsApplier.cs.meta +2 -2
  27. package/Editor/Utils/DxReadOnlyPropertyDrawer.cs +26 -26
  28. package/Editor/Utils/DxReadOnlyPropertyDrawer.cs.meta +11 -11
  29. package/Editor/Utils/EditorUtilities.cs +22 -22
  30. package/Editor/Utils/EditorUtilities.cs.meta +11 -11
  31. package/Editor/Utils.meta +8 -8
  32. package/Editor/WShowIfPropertyDrawer.cs +63 -63
  33. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef +17 -17
  34. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef.meta +7 -7
  35. package/LICENSE +21 -21
  36. package/LICENSE.md +6 -6
  37. package/LICENSE.meta +7 -7
  38. package/README.md +177 -177
  39. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll.meta +33 -33
  40. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml +223 -223
  41. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml.meta +7 -7
  42. package/Runtime/Binaries/System.Text.Encodings.Web.dll.meta +33 -33
  43. package/Runtime/Binaries/System.Text.Encodings.Web.xml +935 -935
  44. package/Runtime/Binaries/System.Text.Encodings.Web.xml.meta +7 -7
  45. package/Runtime/Binaries/System.Text.Json.dll.meta +33 -33
  46. package/Runtime/Binaries/System.Text.Json.xml +4829 -4829
  47. package/Runtime/Binaries/System.Text.Json.xml.meta +7 -7
  48. package/Runtime/Binaries.meta +8 -8
  49. package/Runtime/Core/Attributes/AnimationEventAttribute.cs +131 -131
  50. package/Runtime/Core/Attributes/ChildComponentAttribute.cs +213 -209
  51. package/Runtime/Core/Attributes/DxReadOnlyAttribute.cs +6 -6
  52. package/Runtime/Core/Attributes/KSerializableAttribute.cs +19 -19
  53. package/Runtime/Core/Attributes/NotNullAttribute.cs +32 -32
  54. package/Runtime/Core/Attributes/ParentComponent.cs +185 -185
  55. package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +14 -14
  56. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +117 -117
  57. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs.meta +11 -11
  58. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs +101 -101
  59. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs.meta +11 -11
  60. package/Runtime/Core/Attributes/WShowIfAttribute.cs +16 -16
  61. package/Runtime/Core/Attributes.meta +8 -8
  62. package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs +92 -92
  63. package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs +185 -185
  64. package/Runtime/Core/DataStructure/Adapters/KGuid.cs +305 -305
  65. package/Runtime/Core/DataStructure/Adapters/KVector2.cs +80 -80
  66. package/Runtime/Core/DataStructure/Circle.cs +50 -50
  67. package/Runtime/Core/DataStructure/CyclicBuffer.cs +193 -153
  68. package/Runtime/Core/DataStructure/ISpatialTree.cs +60 -60
  69. package/Runtime/Core/DataStructure/ISpatialTree.cs.meta +11 -11
  70. package/Runtime/Core/DataStructure/KDTree.cs +292 -292
  71. package/Runtime/Core/DataStructure/KDTree.cs.meta +11 -11
  72. package/Runtime/Core/DataStructure/QuadTree.cs +287 -287
  73. package/Runtime/Core/DataStructure/RTree.cs +346 -346
  74. package/Runtime/Core/DataStructure/RTree.cs.meta +11 -11
  75. package/Runtime/Core/DataStructure/StringWrapper.cs +91 -91
  76. package/Runtime/Core/DataStructure/TimedCache.cs +66 -66
  77. package/Runtime/Core/Extension/AnimatorExtensions.cs +25 -25
  78. package/Runtime/Core/Extension/AsyncOperationExtensions.cs +110 -110
  79. package/Runtime/Core/Extension/CircleExtensions.cs +25 -25
  80. package/Runtime/Core/Extension/ColorExtensions.cs +629 -629
  81. package/Runtime/Core/Extension/DictionaryExtensions.cs +279 -279
  82. package/Runtime/Core/Extension/DirectionExtensions.cs +213 -213
  83. package/Runtime/Core/Extension/EnumExtensions.cs +37 -37
  84. package/Runtime/Core/Extension/EnumExtensions.cs.meta +2 -2
  85. package/Runtime/Core/Extension/HashSetExtensions.cs +12 -12
  86. package/Runtime/Core/Extension/IEnumerableExtensions.cs +122 -122
  87. package/Runtime/Core/Extension/IListExtensions.cs +146 -106
  88. package/Runtime/Core/Extension/LoggingExtensions.cs +264 -258
  89. package/Runtime/Core/Extension/RandomExtensions.cs +109 -109
  90. package/Runtime/Core/Extension/SerializedPropertyExtensions.cs +157 -157
  91. package/Runtime/Core/Extension/StringExtensions.cs +180 -151
  92. package/Runtime/Core/Extension/UnityExtensions.cs +1608 -1608
  93. package/Runtime/Core/Helper/ArrayConverter.cs +39 -39
  94. package/Runtime/Core/Helper/ArrayConverter.cs.meta +2 -2
  95. package/Runtime/Core/Helper/AssignUtilities.cs +14 -14
  96. package/Runtime/Core/Helper/AssignUtilities.cs.meta +11 -11
  97. package/Runtime/Core/Helper/DirectoryHelper.cs +132 -0
  98. package/Runtime/Core/Helper/DirectoryHelper.cs.meta +3 -0
  99. package/Runtime/Core/Helper/Enumerables.cs +17 -17
  100. package/Runtime/Core/Helper/FormattingHelpers.cs +32 -32
  101. package/Runtime/Core/Helper/Geometry.cs +43 -43
  102. package/Runtime/Core/Helper/Helpers.cs +722 -722
  103. package/Runtime/Core/Helper/Helpers.cs.meta +11 -11
  104. package/Runtime/Core/Helper/IterationHelpers.cs +32 -32
  105. package/Runtime/Core/Helper/IterationHelpers.cs.meta +11 -11
  106. package/Runtime/Core/Helper/LifetimeHelpers.cs +13 -13
  107. package/Runtime/Core/Helper/Objects.cs +769 -769
  108. package/Runtime/Core/Helper/Partials/LogHelpers.cs +13 -13
  109. package/Runtime/Core/Helper/Partials/LogHelpers.cs.meta +2 -2
  110. package/Runtime/Core/Helper/Partials/MathHelpers.cs +30 -30
  111. package/Runtime/Core/Helper/Partials/MathHelpers.cs.meta +2 -2
  112. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +388 -388
  113. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs.meta +2 -2
  114. package/Runtime/Core/Helper/Partials/TransformHelpers.cs +189 -189
  115. package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +2 -2
  116. package/Runtime/Core/Helper/Partials.meta +2 -2
  117. package/Runtime/Core/Helper/ReflectionHelpers.cs +452 -452
  118. package/Runtime/Core/Helper/ReflectionHelpers.cs.meta +2 -2
  119. package/Runtime/Core/Helper/SceneHelper.cs +209 -209
  120. package/Runtime/Core/Helper/SpriteHelpers.cs +41 -41
  121. package/Runtime/Core/Helper/SpriteHelpers.cs.meta +11 -11
  122. package/Runtime/Core/Helper/StringInList.cs +31 -31
  123. package/Runtime/Core/Helper/StringInList.cs.meta +11 -11
  124. package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs +82 -82
  125. package/Runtime/Core/Helper/WallMath.cs +166 -166
  126. package/Runtime/Core/Math/Line.cs +55 -55
  127. package/Runtime/Core/Math/Parabola.cs +47 -47
  128. package/Runtime/Core/Math/PointPolygonCheck.cs +36 -36
  129. package/Runtime/Core/Math/PointPolygonCheck.cs.meta +11 -11
  130. package/Runtime/Core/Math/Range.cs +92 -92
  131. package/Runtime/Core/Math/XXHash.cs +310 -310
  132. package/Runtime/Core/Math/XXHash.cs.meta +11 -11
  133. package/Runtime/Core/Model/Direction.cs +43 -43
  134. package/Runtime/Core/OneOf/FastOneOf.cs +152 -152
  135. package/Runtime/Core/OneOf/None.cs +4 -4
  136. package/Runtime/Core/Random/AbstractRandom.cs +585 -585
  137. package/Runtime/Core/Random/DotNetRandom.cs +54 -54
  138. package/Runtime/Core/Random/DotNetRandom.cs.meta +2 -2
  139. package/Runtime/Core/Random/IRandom.cs +161 -161
  140. package/Runtime/Core/Random/LinearCongruentialGenerator.cs +49 -49
  141. package/Runtime/Core/Random/NativePcgRandom.cs +97 -97
  142. package/Runtime/Core/Random/PRNG.cs +7 -7
  143. package/Runtime/Core/Random/PRNG.cs.meta +2 -2
  144. package/Runtime/Core/Random/PcgRandom.cs +149 -149
  145. package/Runtime/Core/Random/PerlinNoise.cs +369 -369
  146. package/Runtime/Core/Random/PerlinNoise.cs.meta +2 -2
  147. package/Runtime/Core/Random/RandomState.cs +131 -131
  148. package/Runtime/Core/Random/RandomUtilities.cs +26 -26
  149. package/Runtime/Core/Random/RandomUtilities.cs.meta +11 -11
  150. package/Runtime/Core/Random/RomuDuo.cs +116 -116
  151. package/Runtime/Core/Random/RomuDuo.cs.meta +2 -2
  152. package/Runtime/Core/Random/SplitMix64.cs +94 -94
  153. package/Runtime/Core/Random/SplitMix64.cs.meta +2 -2
  154. package/Runtime/Core/Random/SquirrelRandom.cs +84 -84
  155. package/Runtime/Core/Random/SystemRandom.cs +162 -162
  156. package/Runtime/Core/Random/ThreadLocalRandom.cs +12 -12
  157. package/Runtime/Core/Random/UnityRandom.cs +57 -57
  158. package/Runtime/Core/Random/UnityRandom.cs.meta +11 -11
  159. package/Runtime/Core/Random/WyRandom.cs +121 -121
  160. package/Runtime/Core/Random/WyRandom.cs.meta +2 -2
  161. package/Runtime/Core/Random/XorShiftRandom.cs +52 -52
  162. package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -11
  163. package/Runtime/Core/Random/XorShiroRandom.cs +119 -119
  164. package/Runtime/Core/Random/XorShiroRandom.cs.meta +2 -2
  165. package/Runtime/Core/Serialization/JsonConverters/ColorConverter.cs +88 -88
  166. package/Runtime/Core/Serialization/JsonConverters/GameObjectConverter.cs +37 -37
  167. package/Runtime/Core/Serialization/JsonConverters/Matrix4x4Converter.cs +218 -218
  168. package/Runtime/Core/Serialization/JsonConverters/TypeConverter.cs +28 -28
  169. package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +74 -74
  170. package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +81 -81
  171. package/Runtime/Core/Serialization/JsonConverters/Vector4Converter.cs +88 -88
  172. package/Runtime/Core/Serialization/Serializer.cs +195 -195
  173. package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +113 -113
  174. package/Runtime/Protobuf-Net/System.Buffers.dll.meta +33 -33
  175. package/Runtime/Protobuf-Net/System.Collections.Immutable.dll.meta +33 -33
  176. package/Runtime/Protobuf-Net/System.Collections.Immutable.xml +5379 -5379
  177. package/Runtime/Protobuf-Net/System.Collections.Immutable.xml.meta +7 -7
  178. package/Runtime/Protobuf-Net/System.Numerics.Vectors.dll.meta +33 -33
  179. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll.meta +33 -33
  180. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml +290 -290
  181. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml.meta +7 -7
  182. package/Runtime/Protobuf-Net/protobuf-net.Core.dll.meta +33 -33
  183. package/Runtime/Protobuf-Net/protobuf-net.dll.meta +33 -33
  184. package/Runtime/UI/LayeredImage.cs +364 -364
  185. package/Runtime/UI/LayeredImage.cs.meta +2 -2
  186. package/Runtime/UI.meta +2 -2
  187. package/Runtime/Utils/AnimationEventEqualityComparer.cs +161 -161
  188. package/Runtime/Utils/AnimatorEnumStateMachine.cs +88 -88
  189. package/Runtime/Utils/Buffers.cs +33 -33
  190. package/Runtime/Utils/CenterPointOffset.cs +30 -30
  191. package/Runtime/Utils/CenterPointOffset.cs.meta +2 -2
  192. package/Runtime/Utils/CircleLineRenderer.cs +134 -134
  193. package/Runtime/Utils/CoroutineHandler.cs +4 -4
  194. package/Runtime/Utils/CoroutineHandler.cs.meta +2 -2
  195. package/Runtime/Utils/DeferredDisposalResult.cs +23 -23
  196. package/Runtime/Utils/MatchColliderToSprite.cs +94 -94
  197. package/Runtime/Utils/MatchColliderToSprite.cs.meta +2 -2
  198. package/Runtime/Utils/Oscillator.cs +27 -27
  199. package/Runtime/Utils/RuntimeSingleton.cs +71 -69
  200. package/Runtime/Utils/RuntimeSingleton.cs.meta +11 -11
  201. package/Runtime/Utils/SetTextureImportData.cs +69 -69
  202. package/Runtime/Utils/SpriteRendererMetadata.cs +374 -374
  203. package/Runtime/Utils/SpriteRendererMetadata.cs.meta +2 -2
  204. package/Runtime/Utils/SpriteRendererSyncer.cs +100 -100
  205. package/Runtime/Utils/SpriteRendererSyncer.cs.meta +2 -2
  206. package/Runtime/Utils/StartTracker.cs +15 -0
  207. package/Runtime/Utils/StartTracker.cs.meta +3 -0
  208. package/Runtime/Utils/TextureScale.cs +179 -179
  209. package/Runtime/Utils/TextureScale.cs.meta +2 -2
  210. package/Runtime/Utils/UnityObjectNameComparer.cs +33 -0
  211. package/Runtime/Utils/UnityObjectNameComparer.cs.meta +3 -0
  212. package/Runtime/WallstopStudios.UnityHelpers.asmdef +13 -13
  213. package/Tests/Runtime/Attributes/ChildComponentTests.cs +81 -81
  214. package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs +28 -28
  215. package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs +28 -28
  216. package/Tests/Runtime/Attributes/ParentComponentTests.cs +68 -68
  217. package/Tests/Runtime/Components/RelationalComponentTesterComplex.cs +34 -34
  218. package/Tests/Runtime/Components/RelationalComponentTesterComplex.cs.meta +2 -2
  219. package/Tests/Runtime/Components/RelationalComponentsTesterSimple.cs +40 -40
  220. package/Tests/Runtime/Components.meta +2 -2
  221. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs +14 -14
  222. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs.meta +11 -11
  223. package/Tests/Runtime/DataStructures/CyclicBufferTests.cs +324 -324
  224. package/Tests/Runtime/DataStructures/QuadTreeTests.cs +14 -14
  225. package/Tests/Runtime/DataStructures/QuadTreeTests.cs.meta +11 -11
  226. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs +130 -130
  227. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs.meta +11 -11
  228. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs +14 -14
  229. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs.meta +11 -11
  230. package/Tests/Runtime/DataStructures.meta +8 -8
  231. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs +439 -439
  232. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs.meta +2 -2
  233. package/Tests/Runtime/Extensions/EnumExtensionTests.cs +128 -128
  234. package/Tests/Runtime/Extensions/EnumExtensionTests.cs.meta +2 -2
  235. package/Tests/Runtime/Extensions/IListExtensionTests.cs +104 -104
  236. package/Tests/Runtime/Extensions/RandomExtensionTests.cs +27 -27
  237. package/Tests/Runtime/Extensions/RandomExtensionTests.cs.meta +2 -2
  238. package/Tests/Runtime/Extensions/StringExtensionTests.cs +31 -31
  239. package/Tests/Runtime/Extensions/StringExtensionTests.cs.meta +2 -2
  240. package/Tests/Runtime/Extensions.meta +2 -2
  241. package/Tests/Runtime/Helper/ArrayConverterTests.cs +19 -19
  242. package/Tests/Runtime/Helper/ArrayConverterTests.cs.meta +2 -2
  243. package/Tests/Runtime/Helper/FormattingHelperTests.cs +129 -129
  244. package/Tests/Runtime/Helper/FormattingHelperTests.cs.meta +2 -2
  245. package/Tests/Runtime/Helper/ObjectHelperTests.cs +402 -402
  246. package/Tests/Runtime/Helper/ObjectHelperTests.cs.meta +2 -2
  247. package/Tests/Runtime/Helper/ReflectionHelperTests.cs +536 -536
  248. package/Tests/Runtime/Helper/SceneHelperTests.cs +94 -94
  249. package/Tests/Runtime/Helper/WallMathTests.cs +233 -233
  250. package/Tests/Runtime/Helper/WallMathTests.cs.meta +2 -2
  251. package/Tests/Runtime/Helper.meta +2 -2
  252. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs +14 -14
  253. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs.meta +11 -11
  254. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs +14 -14
  255. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs.meta +11 -11
  256. package/Tests/Runtime/Performance/RandomPerformanceTests.cs +180 -157
  257. package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -11
  258. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +61 -61
  259. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +2 -2
  260. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs +154 -154
  261. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs.meta +11 -11
  262. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs +14 -14
  263. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs.meta +11 -11
  264. package/Tests/Runtime/Performance.meta +8 -8
  265. package/Tests/Runtime/Random/DotNetRandomTests.cs +9 -9
  266. package/Tests/Runtime/Random/DotNetRandomTests.cs.meta +2 -2
  267. package/Tests/Runtime/Random/LinearCongruentialGeneratorTests.cs +12 -12
  268. package/Tests/Runtime/Random/PcgRandomTests.cs +9 -9
  269. package/Tests/Runtime/Random/PcgRandomTests.cs.meta +11 -11
  270. package/Tests/Runtime/Random/RandomTestBase.cs +787 -787
  271. package/Tests/Runtime/Random/RandomTestBase.cs.meta +11 -11
  272. package/Tests/Runtime/Random/RomuDuoRandomTests.cs +9 -9
  273. package/Tests/Runtime/Random/RomuDuoRandomTests.cs.meta +2 -2
  274. package/Tests/Runtime/Random/SplitMix64RandomTests.cs +9 -9
  275. package/Tests/Runtime/Random/SplitMix64RandomTests.cs.meta +2 -2
  276. package/Tests/Runtime/Random/SquirrelRandomTests.cs +14 -14
  277. package/Tests/Runtime/Random/SquirrelRandomTests.cs.meta +11 -11
  278. package/Tests/Runtime/Random/SystemRandomTests.cs +10 -10
  279. package/Tests/Runtime/Random/SystemRandomTests.cs.meta +11 -11
  280. package/Tests/Runtime/Random/UnityRandomTests.cs +9 -9
  281. package/Tests/Runtime/Random/UnityRandomTests.cs.meta +11 -11
  282. package/Tests/Runtime/Random/WyRandomTests.cs +9 -9
  283. package/Tests/Runtime/Random/WyRandomTests.cs.meta +2 -2
  284. package/Tests/Runtime/Random/XorShiftRandomTests.cs +9 -9
  285. package/Tests/Runtime/Random/XorShiftRandomTests.cs.meta +11 -11
  286. package/Tests/Runtime/Random/XorShiroRandomTests.cs +9 -9
  287. package/Tests/Runtime/Random/XorShiroRandomTests.cs.meta +2 -2
  288. package/Tests/Runtime/Random.meta +8 -8
  289. package/Tests/Runtime/Serialization/JsonSerializationTest.cs +156 -156
  290. package/Tests/Runtime/Serialization/JsonSerializationTest.cs.meta +2 -2
  291. package/Tests/Runtime/Serialization.meta +2 -2
  292. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs +399 -399
  293. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs.meta +2 -2
  294. package/Tests/Runtime/Utils.meta +2 -2
  295. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef +22 -22
  296. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef.meta +7 -7
  297. package/Tests/Runtime.meta +8 -8
  298. package/package.json +38 -38
@@ -1,151 +1,180 @@
1
- namespace UnityHelpers.Core.Extension
2
- {
3
- using System.Collections.Generic;
4
- using System.Text;
5
- using Serialization;
6
-
7
- public static class StringExtensions
8
- {
9
- private static readonly HashSet<char> PascalCaseSeparators = new()
10
- {
11
- '_',
12
- ' ',
13
- '\r',
14
- '\n',
15
- '\t',
16
- '.',
17
- '\'',
18
- '"',
19
- };
20
-
21
- public static string Center(this string input, int length)
22
- {
23
- if (input == null || length <= input.Length)
24
- {
25
- return input;
26
- }
27
-
28
- return input.PadLeft((length - input.Length) / 2 + input.Length).PadRight(length);
29
- }
30
-
31
- public static byte[] GetBytes(this string input)
32
- {
33
- return Encoding.Default.GetBytes(input);
34
- }
35
-
36
- public static string GetString(this byte[] bytes)
37
- {
38
- return Encoding.Default.GetString(bytes);
39
- }
40
-
41
- public static string ToJson<T>(this T value)
42
- {
43
- return Serializer.JsonStringify(value);
44
- }
45
-
46
- public static string ToPascalCase(this string value, string separator = "")
47
- {
48
- int startIndex = 0;
49
- StringBuilder stringBuilder = new();
50
- bool appendedAnySeparator = false;
51
- for (int i = 0; i < value.Length; ++i)
52
- {
53
- while (
54
- startIndex < value.Length && PascalCaseSeparators.Contains(value[startIndex])
55
- )
56
- {
57
- ++startIndex;
58
- }
59
-
60
- if (
61
- startIndex < i
62
- && char.IsLower(value[i - 1])
63
- && (char.IsUpper(value[i]) || PascalCaseSeparators.Contains(value[i]))
64
- )
65
- {
66
- _ = stringBuilder.Append(char.ToUpper(value[startIndex]));
67
- if (1 < i - startIndex)
68
- {
69
- for (int j = startIndex + 1; j < i; ++j)
70
- {
71
- char current = value[j];
72
- if (PascalCaseSeparators.Contains(current))
73
- {
74
- continue;
75
- }
76
-
77
- _ = stringBuilder.Append(char.ToLower(current));
78
- }
79
- }
80
-
81
- if (!string.IsNullOrEmpty(separator))
82
- {
83
- appendedAnySeparator = true;
84
- _ = stringBuilder.Append(separator);
85
- }
86
-
87
- startIndex = i;
88
- continue;
89
- }
90
-
91
- if (
92
- startIndex + 1 < i
93
- && char.IsLower(value[i])
94
- && (char.IsUpper(value[i - 1]) || PascalCaseSeparators.Contains(value[i - 1]))
95
- )
96
- {
97
- _ = stringBuilder.Append(char.ToUpper(value[startIndex]));
98
- if (1 < i - 1 - startIndex)
99
- {
100
- for (int j = startIndex + 1; j < i; ++j)
101
- {
102
- char current = value[j];
103
- if (PascalCaseSeparators.Contains(current))
104
- {
105
- continue;
106
- }
107
-
108
- _ = stringBuilder.Append(char.ToLower(current));
109
- }
110
- }
111
-
112
- if (!string.IsNullOrEmpty(separator))
113
- {
114
- appendedAnySeparator = true;
115
- _ = stringBuilder.Append(separator);
116
- }
117
-
118
- startIndex = i - 1;
119
- }
120
- }
121
-
122
- if (startIndex < value.Length)
123
- {
124
- _ = stringBuilder.Append(char.ToUpper(value[startIndex]));
125
- if (startIndex + 1 < value.Length)
126
- {
127
- for (int j = startIndex + 1; j < value.Length; ++j)
128
- {
129
- char current = value[j];
130
- if (PascalCaseSeparators.Contains(current))
131
- {
132
- continue;
133
- }
134
-
135
- _ = stringBuilder.Append(char.ToLower(current));
136
- }
137
- }
138
- }
139
- else if (
140
- appendedAnySeparator
141
- && !string.IsNullOrEmpty(separator)
142
- && separator.Length <= stringBuilder.Length
143
- )
144
- {
145
- stringBuilder.Remove(stringBuilder.Length - separator.Length, separator.Length);
146
- }
147
-
148
- return stringBuilder.ToString();
149
- }
150
- }
151
- }
1
+ namespace UnityHelpers.Core.Extension
2
+ {
3
+ using System.Collections.Generic;
4
+ using System.Text;
5
+ using System.Threading;
6
+ using Serialization;
7
+
8
+ public static class StringExtensions
9
+ {
10
+ private static ThreadLocal<StringBuilder> StringBuilderCache = new(
11
+ () => new StringBuilder()
12
+ );
13
+
14
+ private static readonly HashSet<char> PascalCaseSeparators = new()
15
+ {
16
+ '_',
17
+ ' ',
18
+ '\r',
19
+ '\n',
20
+ '\t',
21
+ '.',
22
+ '\'',
23
+ '"',
24
+ };
25
+
26
+ public static string Center(this string input, int length)
27
+ {
28
+ if (input == null || length <= input.Length)
29
+ {
30
+ return input;
31
+ }
32
+
33
+ return input.PadLeft((length - input.Length) / 2 + input.Length).PadRight(length);
34
+ }
35
+
36
+ public static byte[] GetBytes(this string input)
37
+ {
38
+ return Encoding.Default.GetBytes(input);
39
+ }
40
+
41
+ public static string GetString(this byte[] bytes)
42
+ {
43
+ return Encoding.Default.GetString(bytes);
44
+ }
45
+
46
+ public static string ToJson<T>(this T value)
47
+ {
48
+ return Serializer.JsonStringify(value);
49
+ }
50
+
51
+ public static string ToPascalCase(this string value, string separator = "")
52
+ {
53
+ int startIndex = 0;
54
+ StringBuilder stringBuilder = StringBuilderCache.Value;
55
+ stringBuilder.Clear();
56
+ bool appendedAnySeparator = false;
57
+ for (int i = 0; i < value.Length; ++i)
58
+ {
59
+ while (
60
+ startIndex < value.Length && PascalCaseSeparators.Contains(value[startIndex])
61
+ )
62
+ {
63
+ ++startIndex;
64
+ }
65
+
66
+ if (
67
+ startIndex < i
68
+ && char.IsLower(value[i - 1])
69
+ && (char.IsUpper(value[i]) || PascalCaseSeparators.Contains(value[i]))
70
+ )
71
+ {
72
+ _ = stringBuilder.Append(char.ToUpper(value[startIndex]));
73
+ if (1 < i - startIndex)
74
+ {
75
+ for (int j = startIndex + 1; j < i; ++j)
76
+ {
77
+ char current = value[j];
78
+ if (PascalCaseSeparators.Contains(current))
79
+ {
80
+ continue;
81
+ }
82
+
83
+ _ = stringBuilder.Append(char.ToLower(current));
84
+ }
85
+ }
86
+
87
+ if (!string.IsNullOrEmpty(separator))
88
+ {
89
+ appendedAnySeparator = true;
90
+ _ = stringBuilder.Append(separator);
91
+ }
92
+
93
+ startIndex = i;
94
+ continue;
95
+ }
96
+
97
+ if (
98
+ startIndex + 1 < i
99
+ && char.IsLower(value[i])
100
+ && (char.IsUpper(value[i - 1]) || PascalCaseSeparators.Contains(value[i - 1]))
101
+ )
102
+ {
103
+ _ = stringBuilder.Append(char.ToUpper(value[startIndex]));
104
+ if (1 < i - 1 - startIndex)
105
+ {
106
+ for (int j = startIndex + 1; j < i; ++j)
107
+ {
108
+ char current = value[j];
109
+ if (PascalCaseSeparators.Contains(current))
110
+ {
111
+ continue;
112
+ }
113
+
114
+ _ = stringBuilder.Append(char.ToLower(current));
115
+ }
116
+ }
117
+
118
+ if (!string.IsNullOrEmpty(separator))
119
+ {
120
+ appendedAnySeparator = true;
121
+ _ = stringBuilder.Append(separator);
122
+ }
123
+
124
+ startIndex = i - 1;
125
+ }
126
+ }
127
+
128
+ if (startIndex < value.Length)
129
+ {
130
+ _ = stringBuilder.Append(char.ToUpper(value[startIndex]));
131
+ if (startIndex + 1 < value.Length)
132
+ {
133
+ for (int j = startIndex + 1; j < value.Length; ++j)
134
+ {
135
+ char current = value[j];
136
+ if (PascalCaseSeparators.Contains(current))
137
+ {
138
+ continue;
139
+ }
140
+
141
+ _ = stringBuilder.Append(char.ToLower(current));
142
+ }
143
+ }
144
+ }
145
+ else if (
146
+ appendedAnySeparator
147
+ && !string.IsNullOrEmpty(separator)
148
+ && separator.Length <= stringBuilder.Length
149
+ )
150
+ {
151
+ stringBuilder.Remove(stringBuilder.Length - separator.Length, separator.Length);
152
+ }
153
+
154
+ return stringBuilder.ToString();
155
+ }
156
+
157
+ public static bool NeedsLowerInvariantConversion(this string input)
158
+ {
159
+ foreach (char inputCharacter in input)
160
+ {
161
+ if (char.ToLowerInvariant(inputCharacter) != inputCharacter)
162
+ {
163
+ return true;
164
+ }
165
+ }
166
+
167
+ return false;
168
+ }
169
+
170
+ public static bool NeedsTrim(this string input)
171
+ {
172
+ if (string.IsNullOrEmpty(input))
173
+ {
174
+ return false;
175
+ }
176
+
177
+ return char.IsWhiteSpace(input[0]) || char.IsWhiteSpace(input[^1]);
178
+ }
179
+ }
180
+ }