com.wallstop-studios.unity-helpers 2.0.0-rc26 → 2.0.0-rc30

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 (266) hide show
  1. package/.gitattributes +63 -63
  2. package/.github/workflows/npm-publish.yml +60 -0
  3. package/.github/workflows/unity-package.yml +87 -0
  4. package/Editor/AnimationCopier.cs +158 -158
  5. package/Editor/AnimationCopier.cs.meta +2 -2
  6. package/Editor/AnimationCreator.cs +262 -262
  7. package/Editor/AnimationCreator.cs.meta +11 -11
  8. package/Editor/AnimationEventEditor.cs +887 -887
  9. package/Editor/AnimatorControllerCopier.cs +162 -162
  10. package/Editor/AnimatorControllerCopier.cs.meta +2 -2
  11. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs +34 -34
  12. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs.meta +2 -2
  13. package/Editor/CustomEditors.meta +2 -2
  14. package/Editor/EnsureTextureSizeWizard.cs +110 -110
  15. package/Editor/EnsureTextureSizeWizard.cs.meta +2 -2
  16. package/Editor/PrefabCheckWizard.cs +165 -165
  17. package/Editor/PrefabCheckWizard.cs.meta +11 -11
  18. package/Editor/SpriteSettingsApplier.cs +168 -168
  19. package/Editor/SpriteSettingsApplier.cs.meta +2 -2
  20. package/Editor/StringInListeDrawer.cs +56 -56
  21. package/Editor/TextureResizerWizard.cs +181 -181
  22. package/Editor/TextureResizerWizard.cs.meta +2 -2
  23. package/Editor/TextureSettingsApplier.cs +171 -171
  24. package/Editor/TextureSettingsApplier.cs.meta +2 -2
  25. package/Editor/Utils/EditorUtilities.cs +22 -22
  26. package/Editor/Utils/EditorUtilities.cs.meta +11 -11
  27. package/Editor/Utils/ReadOnlyPropertyDrawer.cs +26 -26
  28. package/Editor/Utils/ReadOnlyPropertyDrawer.cs.meta +11 -11
  29. package/Editor/Utils.meta +8 -8
  30. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef +17 -17
  31. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef.meta +7 -7
  32. package/LICENSE +21 -21
  33. package/LICENSE.md +6 -6
  34. package/LICENSE.meta +7 -7
  35. package/README.md +117 -99
  36. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll.meta +33 -33
  37. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml +223 -223
  38. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml.meta +7 -7
  39. package/Runtime/Binaries/System.Text.Encodings.Web.dll.meta +33 -33
  40. package/Runtime/Binaries/System.Text.Encodings.Web.xml +935 -935
  41. package/Runtime/Binaries/System.Text.Encodings.Web.xml.meta +7 -7
  42. package/Runtime/Binaries/System.Text.Json.dll.meta +33 -33
  43. package/Runtime/Binaries/System.Text.Json.xml +4829 -4829
  44. package/Runtime/Binaries/System.Text.Json.xml.meta +7 -7
  45. package/Runtime/Binaries.meta +8 -8
  46. package/Runtime/Core/Attributes/AnimationEventAttribute.cs +131 -131
  47. package/Runtime/Core/Attributes/ChildComponentAttribute.cs +189 -183
  48. package/Runtime/Core/Attributes/KSerializableAttribute.cs +19 -19
  49. package/Runtime/Core/Attributes/NotNullAttribute.cs +32 -32
  50. package/Runtime/Core/Attributes/ParentComponent.cs +184 -178
  51. package/Runtime/Core/Attributes/ReadOnlyAttribute.cs +6 -6
  52. package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +14 -14
  53. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +119 -111
  54. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs.meta +11 -11
  55. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs +101 -101
  56. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs.meta +11 -11
  57. package/Runtime/Core/Attributes.meta +8 -8
  58. package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs +92 -92
  59. package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs +185 -185
  60. package/Runtime/Core/DataStructure/Adapters/KGuid.cs +305 -305
  61. package/Runtime/Core/DataStructure/Adapters/KVector2.cs +80 -80
  62. package/Runtime/Core/DataStructure/Circle.cs +50 -50
  63. package/Runtime/Core/DataStructure/CyclicBuffer.cs +155 -155
  64. package/Runtime/Core/DataStructure/ISpatialTree.cs +60 -60
  65. package/Runtime/Core/DataStructure/ISpatialTree.cs.meta +11 -11
  66. package/Runtime/Core/DataStructure/KDTree.cs +290 -290
  67. package/Runtime/Core/DataStructure/KDTree.cs.meta +11 -11
  68. package/Runtime/Core/DataStructure/QuadTree.cs +279 -279
  69. package/Runtime/Core/DataStructure/RTree.cs +336 -336
  70. package/Runtime/Core/DataStructure/RTree.cs.meta +11 -11
  71. package/Runtime/Core/DataStructure/StringWrapper.cs +91 -91
  72. package/Runtime/Core/DataStructure/TimedCache.cs +51 -51
  73. package/Runtime/Core/Extension/AnimatorExtensions.cs +25 -25
  74. package/Runtime/Core/Extension/CircleExtensions.cs +25 -25
  75. package/Runtime/Core/Extension/ColorExtensions.cs +338 -338
  76. package/Runtime/Core/Extension/DictionaryExtensions.cs +251 -251
  77. package/Runtime/Core/Extension/DirectionExtensions.cs +213 -213
  78. package/Runtime/Core/Extension/HashSetExtensions.cs +12 -12
  79. package/Runtime/Core/Extension/IEnumerableExtensions.cs +122 -122
  80. package/Runtime/Core/Extension/IListExtensions.cs +89 -89
  81. package/Runtime/Core/Extension/LoggingExtensions.cs +258 -258
  82. package/Runtime/Core/Extension/RandomExtensions.cs +109 -109
  83. package/Runtime/Core/Extension/StringExtensions.cs +151 -151
  84. package/Runtime/Core/Extension/UnityExtensions.cs +1607 -1607
  85. package/Runtime/Core/Helper/ArrayConverter.cs +39 -39
  86. package/Runtime/Core/Helper/ArrayConverter.cs.meta +2 -2
  87. package/Runtime/Core/Helper/AssignUtilities.cs +14 -14
  88. package/Runtime/Core/Helper/AssignUtilities.cs.meta +11 -11
  89. package/Runtime/Core/Helper/Enumerables.cs +17 -17
  90. package/Runtime/Core/Helper/Geometry.cs +43 -43
  91. package/Runtime/Core/Helper/Helpers.cs +722 -722
  92. package/Runtime/Core/Helper/Helpers.cs.meta +11 -11
  93. package/Runtime/Core/Helper/IterationHelpers.cs +32 -32
  94. package/Runtime/Core/Helper/IterationHelpers.cs.meta +11 -11
  95. package/Runtime/Core/Helper/LifetimeHelpers.cs +13 -13
  96. package/Runtime/Core/Helper/Objects.cs +767 -767
  97. package/Runtime/Core/Helper/Partials/LogHelpers.cs +13 -13
  98. package/Runtime/Core/Helper/Partials/LogHelpers.cs.meta +2 -2
  99. package/Runtime/Core/Helper/Partials/MathHelpers.cs +30 -30
  100. package/Runtime/Core/Helper/Partials/MathHelpers.cs.meta +2 -2
  101. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +388 -388
  102. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs.meta +2 -2
  103. package/Runtime/Core/Helper/Partials/TransformHelpers.cs +167 -167
  104. package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +2 -2
  105. package/Runtime/Core/Helper/Partials.meta +2 -2
  106. package/Runtime/Core/Helper/ReflectionHelpers.cs +152 -0
  107. package/Runtime/Core/Helper/ReflectionHelpers.cs.meta +3 -0
  108. package/Runtime/Core/Helper/SpriteHelpers.cs +86 -86
  109. package/Runtime/Core/Helper/SpriteHelpers.cs.meta +11 -11
  110. package/Runtime/Core/Helper/StringInList.cs +31 -31
  111. package/Runtime/Core/Helper/StringInList.cs.meta +11 -11
  112. package/Runtime/Core/Helper/WallMath.cs +166 -166
  113. package/Runtime/Core/Math/Line.cs +55 -55
  114. package/Runtime/Core/Math/Parabola.cs +47 -47
  115. package/Runtime/Core/Math/PointPolygonCheck.cs +36 -36
  116. package/Runtime/Core/Math/PointPolygonCheck.cs.meta +11 -11
  117. package/Runtime/Core/Math/Range.cs +92 -92
  118. package/Runtime/Core/Math/XXHash.cs +310 -310
  119. package/Runtime/Core/Math/XXHash.cs.meta +11 -11
  120. package/Runtime/Core/Model/Direction.cs +43 -43
  121. package/Runtime/Core/OneOf/FastOneOf.cs +152 -152
  122. package/Runtime/Core/OneOf/None.cs +4 -4
  123. package/Runtime/Core/Random/AbstractRandom.cs +561 -561
  124. package/Runtime/Core/Random/DotNetRandom.cs +52 -52
  125. package/Runtime/Core/Random/DotNetRandom.cs.meta +2 -2
  126. package/Runtime/Core/Random/IRandom.cs +160 -160
  127. package/Runtime/Core/Random/NativePcgRandom.cs +97 -97
  128. package/Runtime/Core/Random/PRNG.cs +7 -7
  129. package/Runtime/Core/Random/PRNG.cs.meta +2 -2
  130. package/Runtime/Core/Random/PcgRandom.cs +149 -149
  131. package/Runtime/Core/Random/PerlinNoise.cs +369 -369
  132. package/Runtime/Core/Random/PerlinNoise.cs.meta +2 -2
  133. package/Runtime/Core/Random/RandomState.cs +131 -131
  134. package/Runtime/Core/Random/RandomUtilities.cs +26 -26
  135. package/Runtime/Core/Random/RandomUtilities.cs.meta +11 -11
  136. package/Runtime/Core/Random/RomuDuo.cs +116 -116
  137. package/Runtime/Core/Random/RomuDuo.cs.meta +2 -2
  138. package/Runtime/Core/Random/SplitMix64.cs +94 -94
  139. package/Runtime/Core/Random/SplitMix64.cs.meta +2 -2
  140. package/Runtime/Core/Random/SquirrelRandom.cs +84 -84
  141. package/Runtime/Core/Random/SystemRandom.cs +162 -162
  142. package/Runtime/Core/Random/ThreadLocalRandom.cs +12 -12
  143. package/Runtime/Core/Random/UnityRandom.cs +57 -57
  144. package/Runtime/Core/Random/UnityRandom.cs.meta +11 -11
  145. package/Runtime/Core/Random/WyRandom.cs +121 -121
  146. package/Runtime/Core/Random/WyRandom.cs.meta +2 -2
  147. package/Runtime/Core/Random/XorShiftRandom.cs +47 -47
  148. package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -11
  149. package/Runtime/Core/Random/XorShiroRandom.cs +117 -117
  150. package/Runtime/Core/Random/XorShiroRandom.cs.meta +2 -2
  151. package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +74 -74
  152. package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +81 -81
  153. package/Runtime/Core/Serialization/Serializer.cs +184 -184
  154. package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +107 -107
  155. package/Runtime/Protobuf-Net/System.Buffers.dll.meta +33 -33
  156. package/Runtime/Protobuf-Net/System.Collections.Immutable.dll.meta +33 -33
  157. package/Runtime/Protobuf-Net/System.Collections.Immutable.xml +5379 -5379
  158. package/Runtime/Protobuf-Net/System.Collections.Immutable.xml.meta +7 -7
  159. package/Runtime/Protobuf-Net/System.Numerics.Vectors.dll.meta +33 -33
  160. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll.meta +33 -33
  161. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml +290 -290
  162. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml.meta +7 -7
  163. package/Runtime/Protobuf-Net/protobuf-net.Core.dll.meta +33 -33
  164. package/Runtime/Protobuf-Net/protobuf-net.dll.meta +33 -33
  165. package/Runtime/UI/LayeredImage.cs +364 -364
  166. package/Runtime/UI/LayeredImage.cs.meta +2 -2
  167. package/Runtime/UI.meta +2 -2
  168. package/Runtime/Utils/AnimationEventEqualityComparer.cs +161 -161
  169. package/Runtime/Utils/AnimatorEnumStateMachine.cs +88 -88
  170. package/Runtime/Utils/Buffers.cs +32 -32
  171. package/Runtime/Utils/CenterPointOffset.cs +30 -30
  172. package/Runtime/Utils/CenterPointOffset.cs.meta +2 -2
  173. package/Runtime/Utils/CircleLineRenderer.cs +134 -134
  174. package/Runtime/Utils/CoroutineHandler.cs +4 -4
  175. package/Runtime/Utils/CoroutineHandler.cs.meta +2 -2
  176. package/Runtime/Utils/MatchColliderToSprite.cs +94 -94
  177. package/Runtime/Utils/MatchColliderToSprite.cs.meta +2 -2
  178. package/Runtime/Utils/Oscillator.cs +27 -27
  179. package/Runtime/Utils/RuntimeSingleton.cs +57 -57
  180. package/Runtime/Utils/RuntimeSingleton.cs.meta +11 -11
  181. package/Runtime/Utils/SetTextureImportData.cs +69 -69
  182. package/Runtime/Utils/SpriteRendererMetadata.cs +312 -312
  183. package/Runtime/Utils/SpriteRendererMetadata.cs.meta +2 -2
  184. package/Runtime/Utils/SpriteRendererSyncer.cs +100 -100
  185. package/Runtime/Utils/SpriteRendererSyncer.cs.meta +2 -2
  186. package/Runtime/Utils/TextureScale.cs +179 -179
  187. package/Runtime/Utils/TextureScale.cs.meta +2 -2
  188. package/Runtime/WallstopStudios.UnityHelpers.asmdef +13 -13
  189. package/Tests/Runtime/Attributes/ChildComponentTests.cs +81 -81
  190. package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs +28 -28
  191. package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs +28 -28
  192. package/Tests/Runtime/Attributes/ParentComponentTests.cs +68 -68
  193. package/Tests/Runtime/Components/RelationalComponentTester.cs +34 -0
  194. package/Tests/Runtime/Components/RelationalComponentTester.cs.meta +3 -0
  195. package/Tests/Runtime/Components.meta +3 -0
  196. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs +14 -14
  197. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs.meta +11 -11
  198. package/Tests/Runtime/DataStructures/CyclicBufferTests.cs +324 -324
  199. package/Tests/Runtime/DataStructures/QuadTreeTests.cs +14 -14
  200. package/Tests/Runtime/DataStructures/QuadTreeTests.cs.meta +11 -11
  201. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs +130 -130
  202. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs.meta +11 -11
  203. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs +14 -14
  204. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs.meta +11 -11
  205. package/Tests/Runtime/DataStructures.meta +8 -8
  206. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs +439 -439
  207. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs.meta +2 -2
  208. package/Tests/Runtime/Extensions/IListExtensionTests.cs +76 -76
  209. package/Tests/Runtime/Extensions/RandomExtensionTests.cs +27 -27
  210. package/Tests/Runtime/Extensions/RandomExtensionTests.cs.meta +2 -2
  211. package/Tests/Runtime/Extensions/StringExtensionTests.cs +31 -31
  212. package/Tests/Runtime/Extensions/StringExtensionTests.cs.meta +2 -2
  213. package/Tests/Runtime/Extensions.meta +2 -2
  214. package/Tests/Runtime/Helper/ArrayConverterTests.cs +19 -19
  215. package/Tests/Runtime/Helper/ArrayConverterTests.cs.meta +2 -2
  216. package/Tests/Runtime/Helper/ObjectHelperTests.cs +402 -402
  217. package/Tests/Runtime/Helper/ObjectHelperTests.cs.meta +2 -2
  218. package/Tests/Runtime/Helper/WallMathTests.cs +233 -233
  219. package/Tests/Runtime/Helper/WallMathTests.cs.meta +2 -2
  220. package/Tests/Runtime/Helper.meta +2 -2
  221. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs +14 -14
  222. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs.meta +11 -11
  223. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs +14 -14
  224. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs.meta +11 -11
  225. package/Tests/Runtime/Performance/RandomPerformanceTests.cs +139 -139
  226. package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -11
  227. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +37 -0
  228. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +3 -0
  229. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs +154 -154
  230. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs.meta +11 -11
  231. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs +14 -14
  232. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs.meta +11 -11
  233. package/Tests/Runtime/Performance.meta +8 -8
  234. package/Tests/Runtime/Random/DotNetRandomTests.cs +9 -9
  235. package/Tests/Runtime/Random/DotNetRandomTests.cs.meta +2 -2
  236. package/Tests/Runtime/Random/PcgRandomTests.cs +9 -9
  237. package/Tests/Runtime/Random/PcgRandomTests.cs.meta +11 -11
  238. package/Tests/Runtime/Random/RandomTestBase.cs +787 -787
  239. package/Tests/Runtime/Random/RandomTestBase.cs.meta +11 -11
  240. package/Tests/Runtime/Random/RomuDuoRandomTests.cs +9 -9
  241. package/Tests/Runtime/Random/RomuDuoRandomTests.cs.meta +2 -2
  242. package/Tests/Runtime/Random/SplitMix64RandomTests.cs +9 -9
  243. package/Tests/Runtime/Random/SplitMix64RandomTests.cs.meta +2 -2
  244. package/Tests/Runtime/Random/SquirrelRandomTests.cs +14 -14
  245. package/Tests/Runtime/Random/SquirrelRandomTests.cs.meta +11 -11
  246. package/Tests/Runtime/Random/SystemRandomTests.cs +10 -10
  247. package/Tests/Runtime/Random/SystemRandomTests.cs.meta +11 -11
  248. package/Tests/Runtime/Random/UnityRandomTests.cs +9 -9
  249. package/Tests/Runtime/Random/UnityRandomTests.cs.meta +11 -11
  250. package/Tests/Runtime/Random/WyRandomTests.cs +9 -9
  251. package/Tests/Runtime/Random/WyRandomTests.cs.meta +2 -2
  252. package/Tests/Runtime/Random/XorShiftRandomTests.cs +9 -9
  253. package/Tests/Runtime/Random/XorShiftRandomTests.cs.meta +11 -11
  254. package/Tests/Runtime/Random/XorShiroRandomTests.cs +9 -9
  255. package/Tests/Runtime/Random/XorShiroRandomTests.cs.meta +2 -2
  256. package/Tests/Runtime/Random.meta +8 -8
  257. package/Tests/Runtime/Serialization/JsonSerializationTest.cs +84 -84
  258. package/Tests/Runtime/Serialization/JsonSerializationTest.cs.meta +2 -2
  259. package/Tests/Runtime/Serialization.meta +2 -2
  260. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs +399 -399
  261. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs.meta +2 -2
  262. package/Tests/Runtime/Utils.meta +2 -2
  263. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef +22 -22
  264. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef.meta +7 -7
  265. package/Tests/Runtime.meta +8 -8
  266. package/package.json +38 -38
@@ -1,134 +1,134 @@
1
- namespace UnityHelpers.Utils
2
- {
3
- using Core.Attributes;
4
- using Core.Extension;
5
- using Core.Helper;
6
- using Core.Random;
7
- using UnityEngine;
8
-
9
- [RequireComponent(typeof(LineRenderer))]
10
- [RequireComponent(typeof(CircleCollider2D))]
11
- [DisallowMultipleComponent]
12
- public sealed class CircleLineRenderer : MonoBehaviour
13
- {
14
- public float minLineWidth = 0.005f;
15
- public float maxLineWidth = 0.02f;
16
- public int numSegments = 4;
17
- public int baseSegments = 4;
18
- public float updateRateSeconds = 0.1f;
19
- public Color color = Color.grey;
20
-
21
- public Vector3 Offset
22
- {
23
- get => _offset;
24
- set => transform.localPosition = _offset = value;
25
- }
26
-
27
- [SiblingComponent]
28
- private CircleCollider2D _collider;
29
-
30
- [SiblingComponent]
31
- private LineRenderer[] _lineRenderers;
32
-
33
- private Vector3 _offset;
34
-
35
- private Coroutine _update;
36
-
37
- private void Awake()
38
- {
39
- this.AssignSiblingComponents();
40
- }
41
-
42
- private void OnEnable()
43
- {
44
- if (_update != null)
45
- {
46
- StopCoroutine(_update);
47
- }
48
- _update = this.StartFunctionAsCoroutine(Render, updateRateSeconds);
49
- }
50
-
51
- private void OnDisable()
52
- {
53
- if (_update != null)
54
- {
55
- StopCoroutine(_update);
56
- _update = null;
57
- }
58
- }
59
-
60
- private void OnValidate()
61
- {
62
- if (numSegments <= 2)
63
- {
64
- this.LogWarn("Invalid number of segments {0}.", numSegments);
65
- }
66
-
67
- if (updateRateSeconds <= 0)
68
- {
69
- this.LogWarn("Invalid update rate {0}.", updateRateSeconds);
70
- }
71
-
72
- if (maxLineWidth < minLineWidth)
73
- {
74
- this.LogWarn(
75
- "MaxLineWidth {0} smaller than MinLineWidth {1}.",
76
- maxLineWidth,
77
- minLineWidth
78
- );
79
- }
80
- }
81
-
82
- private void Update()
83
- {
84
- foreach (LineRenderer lineRenderer in _lineRenderers)
85
- {
86
- lineRenderer.enabled = _collider.enabled;
87
- }
88
- }
89
-
90
- private void Render()
91
- {
92
- foreach (LineRenderer lineRenderer in _lineRenderers)
93
- {
94
- if (!lineRenderer.enabled)
95
- {
96
- lineRenderer.positionCount = 0;
97
- return;
98
- }
99
-
100
- lineRenderer.startColor = color;
101
- lineRenderer.endColor = color;
102
- lineRenderer.loop = true;
103
- lineRenderer.positionCount = numSegments;
104
-
105
- // ReSharper disable once CompareOfFloatsByEqualityOperator
106
- float lineWidth =
107
- minLineWidth == maxLineWidth
108
- ? minLineWidth
109
- : PRNG.Instance.NextFloat(minLineWidth, maxLineWidth);
110
-
111
- lineRenderer.startWidth = lineWidth;
112
- lineRenderer.endWidth = lineWidth;
113
- lineRenderer.useWorldSpace = false; // All below positions are local space
114
- float distanceMultiplier = _collider.radius;
115
-
116
- float angle = 360f / numSegments;
117
- float offsetRadians = PRNG.Instance.NextFloat(angle);
118
- float currentOffset = offsetRadians;
119
- Vector3[] positions = new Vector3[numSegments];
120
- for (int i = 0; i < numSegments; ++i)
121
- {
122
- positions[i] =
123
- new Vector3(
124
- Mathf.Cos(Mathf.Deg2Rad * currentOffset),
125
- Mathf.Sin(Mathf.Deg2Rad * currentOffset)
126
- ) * distanceMultiplier;
127
- currentOffset += angle % 360f;
128
- }
129
-
130
- lineRenderer.SetPositions(positions);
131
- }
132
- }
133
- }
134
- }
1
+ namespace UnityHelpers.Utils
2
+ {
3
+ using Core.Attributes;
4
+ using Core.Extension;
5
+ using Core.Helper;
6
+ using Core.Random;
7
+ using UnityEngine;
8
+
9
+ [RequireComponent(typeof(LineRenderer))]
10
+ [RequireComponent(typeof(CircleCollider2D))]
11
+ [DisallowMultipleComponent]
12
+ public sealed class CircleLineRenderer : MonoBehaviour
13
+ {
14
+ public float minLineWidth = 0.005f;
15
+ public float maxLineWidth = 0.02f;
16
+ public int numSegments = 4;
17
+ public int baseSegments = 4;
18
+ public float updateRateSeconds = 0.1f;
19
+ public Color color = Color.grey;
20
+
21
+ public Vector3 Offset
22
+ {
23
+ get => _offset;
24
+ set => transform.localPosition = _offset = value;
25
+ }
26
+
27
+ [SiblingComponent]
28
+ private CircleCollider2D _collider;
29
+
30
+ [SiblingComponent]
31
+ private LineRenderer[] _lineRenderers;
32
+
33
+ private Vector3 _offset;
34
+
35
+ private Coroutine _update;
36
+
37
+ private void Awake()
38
+ {
39
+ this.AssignSiblingComponents();
40
+ }
41
+
42
+ private void OnEnable()
43
+ {
44
+ if (_update != null)
45
+ {
46
+ StopCoroutine(_update);
47
+ }
48
+ _update = this.StartFunctionAsCoroutine(Render, updateRateSeconds);
49
+ }
50
+
51
+ private void OnDisable()
52
+ {
53
+ if (_update != null)
54
+ {
55
+ StopCoroutine(_update);
56
+ _update = null;
57
+ }
58
+ }
59
+
60
+ private void OnValidate()
61
+ {
62
+ if (numSegments <= 2)
63
+ {
64
+ this.LogWarn("Invalid number of segments {0}.", numSegments);
65
+ }
66
+
67
+ if (updateRateSeconds <= 0)
68
+ {
69
+ this.LogWarn("Invalid update rate {0}.", updateRateSeconds);
70
+ }
71
+
72
+ if (maxLineWidth < minLineWidth)
73
+ {
74
+ this.LogWarn(
75
+ "MaxLineWidth {0} smaller than MinLineWidth {1}.",
76
+ maxLineWidth,
77
+ minLineWidth
78
+ );
79
+ }
80
+ }
81
+
82
+ private void Update()
83
+ {
84
+ foreach (LineRenderer lineRenderer in _lineRenderers)
85
+ {
86
+ lineRenderer.enabled = _collider.enabled;
87
+ }
88
+ }
89
+
90
+ private void Render()
91
+ {
92
+ foreach (LineRenderer lineRenderer in _lineRenderers)
93
+ {
94
+ if (!lineRenderer.enabled)
95
+ {
96
+ lineRenderer.positionCount = 0;
97
+ return;
98
+ }
99
+
100
+ lineRenderer.startColor = color;
101
+ lineRenderer.endColor = color;
102
+ lineRenderer.loop = true;
103
+ lineRenderer.positionCount = numSegments;
104
+
105
+ // ReSharper disable once CompareOfFloatsByEqualityOperator
106
+ float lineWidth =
107
+ minLineWidth == maxLineWidth
108
+ ? minLineWidth
109
+ : PRNG.Instance.NextFloat(minLineWidth, maxLineWidth);
110
+
111
+ lineRenderer.startWidth = lineWidth;
112
+ lineRenderer.endWidth = lineWidth;
113
+ lineRenderer.useWorldSpace = false; // All below positions are local space
114
+ float distanceMultiplier = _collider.radius;
115
+
116
+ float angle = 360f / numSegments;
117
+ float offsetRadians = PRNG.Instance.NextFloat(angle);
118
+ float currentOffset = offsetRadians;
119
+ Vector3[] positions = new Vector3[numSegments];
120
+ for (int i = 0; i < numSegments; ++i)
121
+ {
122
+ positions[i] =
123
+ new Vector3(
124
+ Mathf.Cos(Mathf.Deg2Rad * currentOffset),
125
+ Mathf.Sin(Mathf.Deg2Rad * currentOffset)
126
+ ) * distanceMultiplier;
127
+ currentOffset += angle % 360f;
128
+ }
129
+
130
+ lineRenderer.SetPositions(positions);
131
+ }
132
+ }
133
+ }
134
+ }
@@ -1,4 +1,4 @@
1
- namespace UnityHelpers.Utils
2
- {
3
- public sealed class CoroutineHandler : RuntimeSingleton<CoroutineHandler> { }
4
- }
1
+ namespace UnityHelpers.Utils
2
+ {
3
+ public sealed class CoroutineHandler : RuntimeSingleton<CoroutineHandler> { }
4
+ }
@@ -1,3 +1,3 @@
1
- fileFormatVersion: 2
2
- guid: ba52cce99edd4592999c269422e4f20a
1
+ fileFormatVersion: 2
2
+ guid: ba52cce99edd4592999c269422e4f20a
3
3
  timeCreated: 1720740992
@@ -1,94 +1,94 @@
1
- namespace UnityHelpers.Utils
2
- {
3
- using System;
4
- using System.Collections.Generic;
5
- using UnityEngine;
6
- using UnityEngine.Serialization;
7
- using UnityEngine.UI;
8
-
9
- [DisallowMultipleComponent]
10
- public sealed class MatchColliderToSprite : MonoBehaviour
11
- {
12
- public Func<Sprite> spriteOverrideProducer;
13
-
14
- [FormerlySerializedAs("_spriteRenderer")]
15
- public SpriteRenderer spriteRenderer;
16
-
17
- [FormerlySerializedAs("_image")]
18
- public Image image;
19
-
20
- [FormerlySerializedAs("_collider")]
21
- public PolygonCollider2D polygonCollider;
22
-
23
- private Sprite _lastHandled;
24
-
25
- private void Awake()
26
- {
27
- OnValidate();
28
- }
29
-
30
- private void Update()
31
- {
32
- if (spriteOverrideProducer != null && _lastHandled == spriteOverrideProducer())
33
- {
34
- return;
35
- }
36
-
37
- if (spriteRenderer != null && _lastHandled == spriteRenderer.sprite)
38
- {
39
- return;
40
- }
41
-
42
- if (image != null && _lastHandled == image.sprite)
43
- {
44
- return;
45
- }
46
-
47
- OnValidate();
48
- }
49
-
50
- public void OnValidate()
51
- {
52
- if (polygonCollider == null && !TryGetComponent(out polygonCollider))
53
- {
54
- return;
55
- }
56
-
57
- Sprite sprite;
58
- if (spriteOverrideProducer != null)
59
- {
60
- sprite = spriteOverrideProducer();
61
- }
62
- else if (spriteRenderer != null || TryGetComponent(out spriteRenderer))
63
- {
64
- sprite = spriteRenderer.sprite;
65
- }
66
- else if (image != null || TryGetComponent(out image))
67
- {
68
- sprite = image.sprite;
69
- }
70
- else
71
- {
72
- sprite = null;
73
- }
74
-
75
- _lastHandled = sprite;
76
- polygonCollider.points = Array.Empty<Vector2>();
77
- if (_lastHandled == null)
78
- {
79
- polygonCollider.pathCount = 0;
80
- return;
81
- }
82
-
83
- int physicsShapes = _lastHandled.GetPhysicsShapeCount();
84
- polygonCollider.pathCount = physicsShapes;
85
- List<Vector2> buffer = Buffers<Vector2>.List;
86
- for (int i = 0; i < physicsShapes; ++i)
87
- {
88
- buffer.Clear();
89
- _ = _lastHandled.GetPhysicsShape(i, buffer);
90
- polygonCollider.SetPath(i, buffer);
91
- }
92
- }
93
- }
94
- }
1
+ namespace UnityHelpers.Utils
2
+ {
3
+ using System;
4
+ using System.Collections.Generic;
5
+ using UnityEngine;
6
+ using UnityEngine.Serialization;
7
+ using UnityEngine.UI;
8
+
9
+ [DisallowMultipleComponent]
10
+ public sealed class MatchColliderToSprite : MonoBehaviour
11
+ {
12
+ public Func<Sprite> spriteOverrideProducer;
13
+
14
+ [FormerlySerializedAs("_spriteRenderer")]
15
+ public SpriteRenderer spriteRenderer;
16
+
17
+ [FormerlySerializedAs("_image")]
18
+ public Image image;
19
+
20
+ [FormerlySerializedAs("_collider")]
21
+ public PolygonCollider2D polygonCollider;
22
+
23
+ private Sprite _lastHandled;
24
+
25
+ private void Awake()
26
+ {
27
+ OnValidate();
28
+ }
29
+
30
+ private void Update()
31
+ {
32
+ if (spriteOverrideProducer != null && _lastHandled == spriteOverrideProducer())
33
+ {
34
+ return;
35
+ }
36
+
37
+ if (spriteRenderer != null && _lastHandled == spriteRenderer.sprite)
38
+ {
39
+ return;
40
+ }
41
+
42
+ if (image != null && _lastHandled == image.sprite)
43
+ {
44
+ return;
45
+ }
46
+
47
+ OnValidate();
48
+ }
49
+
50
+ public void OnValidate()
51
+ {
52
+ if (polygonCollider == null && !TryGetComponent(out polygonCollider))
53
+ {
54
+ return;
55
+ }
56
+
57
+ Sprite sprite;
58
+ if (spriteOverrideProducer != null)
59
+ {
60
+ sprite = spriteOverrideProducer();
61
+ }
62
+ else if (spriteRenderer != null || TryGetComponent(out spriteRenderer))
63
+ {
64
+ sprite = spriteRenderer.sprite;
65
+ }
66
+ else if (image != null || TryGetComponent(out image))
67
+ {
68
+ sprite = image.sprite;
69
+ }
70
+ else
71
+ {
72
+ sprite = null;
73
+ }
74
+
75
+ _lastHandled = sprite;
76
+ polygonCollider.points = Array.Empty<Vector2>();
77
+ if (_lastHandled == null)
78
+ {
79
+ polygonCollider.pathCount = 0;
80
+ return;
81
+ }
82
+
83
+ int physicsShapes = _lastHandled.GetPhysicsShapeCount();
84
+ polygonCollider.pathCount = physicsShapes;
85
+ List<Vector2> buffer = Buffers<Vector2>.List;
86
+ for (int i = 0; i < physicsShapes; ++i)
87
+ {
88
+ buffer.Clear();
89
+ _ = _lastHandled.GetPhysicsShape(i, buffer);
90
+ polygonCollider.SetPath(i, buffer);
91
+ }
92
+ }
93
+ }
94
+ }
@@ -1,3 +1,3 @@
1
- fileFormatVersion: 2
2
- guid: 90f375924f7247ab87a73467faae06b7
1
+ fileFormatVersion: 2
2
+ guid: 90f375924f7247ab87a73467faae06b7
3
3
  timeCreated: 1720738383
@@ -1,27 +1,27 @@
1
- namespace UnityHelpers.Utils
2
- {
3
- using UnityEngine;
4
-
5
- [DisallowMultipleComponent]
6
- public sealed class Oscillator : MonoBehaviour
7
- {
8
- public float speed = 1f;
9
- public float width = 1f;
10
- public float height = 1f;
11
-
12
- private Vector3 _initialLocalPosition;
13
-
14
- private void Awake()
15
- {
16
- _initialLocalPosition = transform.localPosition;
17
- }
18
-
19
- private void Update()
20
- {
21
- float time = Time.time;
22
- transform.localPosition =
23
- _initialLocalPosition
24
- + new Vector3(Mathf.Cos(time * speed) * width, Mathf.Sin(time * speed) * height);
25
- }
26
- }
27
- }
1
+ namespace UnityHelpers.Utils
2
+ {
3
+ using UnityEngine;
4
+
5
+ [DisallowMultipleComponent]
6
+ public sealed class Oscillator : MonoBehaviour
7
+ {
8
+ public float speed = 1f;
9
+ public float width = 1f;
10
+ public float height = 1f;
11
+
12
+ private Vector3 _initialLocalPosition;
13
+
14
+ private void Awake()
15
+ {
16
+ _initialLocalPosition = transform.localPosition;
17
+ }
18
+
19
+ private void Update()
20
+ {
21
+ float time = Time.time;
22
+ transform.localPosition =
23
+ _initialLocalPosition
24
+ + new Vector3(Mathf.Cos(time * speed) * width, Mathf.Sin(time * speed) * height);
25
+ }
26
+ }
27
+ }
@@ -1,57 +1,57 @@
1
- namespace UnityHelpers.Utils
2
- {
3
- using System;
4
- using Core.Extension;
5
- using Core.Helper;
6
- using UnityEngine;
7
-
8
- [DisallowMultipleComponent]
9
- public abstract class RuntimeSingleton<T> : MonoBehaviour
10
- where T : RuntimeSingleton<T>
11
- {
12
- public static bool HasInstance => _instance != null;
13
-
14
- protected static T _instance;
15
-
16
- protected virtual bool Preserve => true;
17
-
18
- public static T Instance
19
- {
20
- get
21
- {
22
- if (_instance != null)
23
- {
24
- return _instance;
25
- }
26
-
27
- Type type = typeof(T);
28
- GameObject instance = new($"{type.Name}-Singleton", type);
29
- if (instance.TryGetComponent(out _instance) && _instance.Preserve)
30
- {
31
- DontDestroyOnLoad(instance);
32
- }
33
-
34
- return _instance;
35
- }
36
- }
37
-
38
- protected virtual void Awake()
39
- {
40
- if (_instance == null)
41
- {
42
- _instance = this as T;
43
- }
44
- }
45
-
46
- protected virtual void Start()
47
- {
48
- if (_instance != null && _instance != this)
49
- {
50
- this.LogError(
51
- $"Double singleton detected, {_instance.name} conflicts with {name}."
52
- );
53
- gameObject.Destroy();
54
- }
55
- }
56
- }
57
- }
1
+ namespace UnityHelpers.Utils
2
+ {
3
+ using System;
4
+ using Core.Extension;
5
+ using Core.Helper;
6
+ using UnityEngine;
7
+
8
+ [DisallowMultipleComponent]
9
+ public abstract class RuntimeSingleton<T> : MonoBehaviour
10
+ where T : RuntimeSingleton<T>
11
+ {
12
+ public static bool HasInstance => _instance != null;
13
+
14
+ protected static T _instance;
15
+
16
+ protected virtual bool Preserve => true;
17
+
18
+ public static T Instance
19
+ {
20
+ get
21
+ {
22
+ if (_instance != null)
23
+ {
24
+ return _instance;
25
+ }
26
+
27
+ Type type = typeof(T);
28
+ GameObject instance = new($"{type.Name}-Singleton", type);
29
+ if (instance.TryGetComponent(out _instance) && _instance.Preserve)
30
+ {
31
+ DontDestroyOnLoad(instance);
32
+ }
33
+
34
+ return _instance;
35
+ }
36
+ }
37
+
38
+ protected virtual void Awake()
39
+ {
40
+ if (_instance == null)
41
+ {
42
+ _instance = this as T;
43
+ }
44
+ }
45
+
46
+ protected virtual void Start()
47
+ {
48
+ if (_instance != null && _instance != this)
49
+ {
50
+ this.LogError(
51
+ $"Double singleton detected, {_instance.name} conflicts with {name}."
52
+ );
53
+ gameObject.Destroy();
54
+ }
55
+ }
56
+ }
57
+ }
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: cbebf3402056afd46a0e23363875c813
3
- MonoImporter:
4
- externalObjects: {}
5
- serializedVersion: 2
6
- defaultReferences: []
7
- executionOrder: 0
8
- icon: {instanceID: 0}
9
- userData:
10
- assetBundleName:
11
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: cbebf3402056afd46a0e23363875c813
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant: