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,100 +1,100 @@
1
- namespace UnityHelpers.Utils
2
- {
3
- using System;
4
- using Core.Attributes;
5
- using UnityEngine;
6
- using UnityEngine.Serialization;
7
-
8
- [DisallowMultipleComponent]
9
- public sealed class SpriteRendererSync : MonoBehaviour
10
- {
11
- public int? DynamicSortingOrderOverride { get; set; }
12
-
13
- public SpriteRenderer DynamicToMatch
14
- {
15
- get => GetDynamicSpriteRenderer();
16
- set => _cachedSpriteRenderer = value;
17
- }
18
-
19
- [FormerlySerializedAs("_toMatch")]
20
- public SpriteRenderer toMatch;
21
-
22
- [FormerlySerializedAs("_matchColor")]
23
- public bool matchColor;
24
-
25
- [FormerlySerializedAs("_matchMaterial")]
26
- public bool matchMaterial;
27
-
28
- public bool matchSortingLayer = true;
29
-
30
- public bool matchOrderInLayer = true;
31
-
32
- public Func<SpriteRenderer> dynamicToMatch;
33
-
34
- [SerializeField]
35
- [SiblingComponent]
36
- private SpriteRenderer _spriteRenderer;
37
-
38
- private SpriteRenderer _cachedSpriteRenderer;
39
-
40
- private void Awake()
41
- {
42
- if (_spriteRenderer == null)
43
- {
44
- this.AssignSiblingComponents();
45
- }
46
- }
47
-
48
- private void LateUpdate()
49
- {
50
- SpriteRenderer localToMatch =
51
- dynamicToMatch != null ? GetDynamicSpriteRenderer() : toMatch;
52
- if (localToMatch == null)
53
- {
54
- _spriteRenderer.sprite = null;
55
- return;
56
- }
57
-
58
- _spriteRenderer.sprite = localToMatch.sprite;
59
- _spriteRenderer.enabled = localToMatch.enabled;
60
- _spriteRenderer.flipX = localToMatch.flipX;
61
- _spriteRenderer.flipY = localToMatch.flipY;
62
- if (matchColor)
63
- {
64
- _spriteRenderer.color = localToMatch.color;
65
- }
66
-
67
- if (matchMaterial)
68
- {
69
- _spriteRenderer.material = localToMatch.material;
70
- }
71
-
72
- if (matchSortingLayer)
73
- {
74
- _spriteRenderer.sortingLayerName = localToMatch.sortingLayerName;
75
- }
76
-
77
- if (matchOrderInLayer)
78
- {
79
- _spriteRenderer.sortingOrder =
80
- DynamicSortingOrderOverride ?? localToMatch.sortingOrder;
81
- }
82
-
83
- _spriteRenderer.size = localToMatch.size;
84
- _spriteRenderer.spriteSortPoint = localToMatch.spriteSortPoint;
85
- _spriteRenderer.drawMode = localToMatch.drawMode;
86
- _spriteRenderer.tileMode = localToMatch.tileMode;
87
- }
88
-
89
- private SpriteRenderer GetDynamicSpriteRenderer()
90
- {
91
- if (_cachedSpriteRenderer != null && _cachedSpriteRenderer.gameObject.activeSelf)
92
- {
93
- return _cachedSpriteRenderer;
94
- }
95
-
96
- _cachedSpriteRenderer = dynamicToMatch();
97
- return _cachedSpriteRenderer;
98
- }
99
- }
100
- }
1
+ namespace UnityHelpers.Utils
2
+ {
3
+ using System;
4
+ using Core.Attributes;
5
+ using UnityEngine;
6
+ using UnityEngine.Serialization;
7
+
8
+ [DisallowMultipleComponent]
9
+ public sealed class SpriteRendererSync : MonoBehaviour
10
+ {
11
+ public int? DynamicSortingOrderOverride { get; set; }
12
+
13
+ public SpriteRenderer DynamicToMatch
14
+ {
15
+ get => GetDynamicSpriteRenderer();
16
+ set => _cachedSpriteRenderer = value;
17
+ }
18
+
19
+ [FormerlySerializedAs("_toMatch")]
20
+ public SpriteRenderer toMatch;
21
+
22
+ [FormerlySerializedAs("_matchColor")]
23
+ public bool matchColor;
24
+
25
+ [FormerlySerializedAs("_matchMaterial")]
26
+ public bool matchMaterial;
27
+
28
+ public bool matchSortingLayer = true;
29
+
30
+ public bool matchOrderInLayer = true;
31
+
32
+ public Func<SpriteRenderer> dynamicToMatch;
33
+
34
+ [SerializeField]
35
+ [SiblingComponent]
36
+ private SpriteRenderer _spriteRenderer;
37
+
38
+ private SpriteRenderer _cachedSpriteRenderer;
39
+
40
+ private void Awake()
41
+ {
42
+ if (_spriteRenderer == null)
43
+ {
44
+ this.AssignSiblingComponents();
45
+ }
46
+ }
47
+
48
+ private void LateUpdate()
49
+ {
50
+ SpriteRenderer localToMatch =
51
+ dynamicToMatch != null ? GetDynamicSpriteRenderer() : toMatch;
52
+ if (localToMatch == null)
53
+ {
54
+ _spriteRenderer.sprite = null;
55
+ return;
56
+ }
57
+
58
+ _spriteRenderer.sprite = localToMatch.sprite;
59
+ _spriteRenderer.enabled = localToMatch.enabled;
60
+ _spriteRenderer.flipX = localToMatch.flipX;
61
+ _spriteRenderer.flipY = localToMatch.flipY;
62
+ if (matchColor)
63
+ {
64
+ _spriteRenderer.color = localToMatch.color;
65
+ }
66
+
67
+ if (matchMaterial)
68
+ {
69
+ _spriteRenderer.material = localToMatch.material;
70
+ }
71
+
72
+ if (matchSortingLayer)
73
+ {
74
+ _spriteRenderer.sortingLayerName = localToMatch.sortingLayerName;
75
+ }
76
+
77
+ if (matchOrderInLayer)
78
+ {
79
+ _spriteRenderer.sortingOrder =
80
+ DynamicSortingOrderOverride ?? localToMatch.sortingOrder;
81
+ }
82
+
83
+ _spriteRenderer.size = localToMatch.size;
84
+ _spriteRenderer.spriteSortPoint = localToMatch.spriteSortPoint;
85
+ _spriteRenderer.drawMode = localToMatch.drawMode;
86
+ _spriteRenderer.tileMode = localToMatch.tileMode;
87
+ }
88
+
89
+ private SpriteRenderer GetDynamicSpriteRenderer()
90
+ {
91
+ if (_cachedSpriteRenderer != null && _cachedSpriteRenderer.gameObject.activeSelf)
92
+ {
93
+ return _cachedSpriteRenderer;
94
+ }
95
+
96
+ _cachedSpriteRenderer = dynamicToMatch();
97
+ return _cachedSpriteRenderer;
98
+ }
99
+ }
100
+ }
@@ -1,3 +1,3 @@
1
- fileFormatVersion: 2
2
- guid: ec3a379f59bc407f92daaab2a3d4e089
1
+ fileFormatVersion: 2
2
+ guid: ec3a379f59bc407f92daaab2a3d4e089
3
3
  timeCreated: 1720400998
@@ -1,179 +1,179 @@
1
- namespace UnityHelpers.Utils
2
- {
3
- using System.Threading;
4
- using UnityEngine;
5
-
6
- // https://answers.unity.com/questions/348163/resize-texture2d-comes-out-grey.html
7
- // http://wiki.unity3d.com/index.php/TextureScale
8
- public static class TextureScale
9
- {
10
- private sealed class ThreadData
11
- {
12
- public readonly int start;
13
- public readonly int end;
14
-
15
- public ThreadData(int s, int e)
16
- {
17
- start = s;
18
- end = e;
19
- }
20
- }
21
-
22
- private static Color[] texColors;
23
- private static Color[] newColors;
24
- private static int w;
25
- private static float ratioX;
26
- private static float ratioY;
27
- private static int w2;
28
- private static int finishCount;
29
- private static Mutex mutex;
30
-
31
- public static void Point(Texture2D tex, int newWidth, int newHeight)
32
- {
33
- ThreadedScale(tex, newWidth, newHeight, false);
34
- }
35
-
36
- public static void Bilinear(Texture2D tex, int newWidth, int newHeight)
37
- {
38
- ThreadedScale(tex, newWidth, newHeight, true);
39
- }
40
-
41
- private static void ThreadedScale(
42
- Texture2D tex,
43
- int newWidth,
44
- int newHeight,
45
- bool useBilinear
46
- )
47
- {
48
- texColors = tex.GetPixels();
49
- newColors = new Color[newWidth * newHeight];
50
- if (useBilinear)
51
- {
52
- ratioX = 1.0f / ((float)newWidth / (tex.width - 1));
53
- ratioY = 1.0f / ((float)newHeight / (tex.height - 1));
54
- }
55
- else
56
- {
57
- ratioX = ((float)tex.width) / newWidth;
58
- ratioY = ((float)tex.height) / newHeight;
59
- }
60
-
61
- w = tex.width;
62
- w2 = newWidth;
63
- int cores = Mathf.Min(SystemInfo.processorCount, newHeight);
64
- int slice = newHeight / cores;
65
-
66
- finishCount = 0;
67
- mutex ??= new Mutex(false);
68
- if (1 < cores)
69
- {
70
- int i;
71
- ThreadData threadData;
72
- for (i = 0; i < cores - 1; i++)
73
- {
74
- threadData = new ThreadData(slice * i, slice * (i + 1));
75
- ParameterizedThreadStart ts = useBilinear ? BilinearScale : PointScale;
76
- Thread thread = new(ts);
77
- thread.Start(threadData);
78
- }
79
-
80
- threadData = new ThreadData(slice * i, newHeight);
81
- if (useBilinear)
82
- {
83
- BilinearScale(threadData);
84
- }
85
- else
86
- {
87
- PointScale(threadData);
88
- }
89
-
90
- while (finishCount < cores)
91
- {
92
- Thread.Sleep(1);
93
- }
94
- }
95
- else
96
- {
97
- ThreadData threadData = new(0, newHeight);
98
- if (useBilinear)
99
- {
100
- BilinearScale(threadData);
101
- }
102
- else
103
- {
104
- PointScale(threadData);
105
- }
106
- }
107
-
108
- _ = tex.Reinitialize(newWidth, newHeight);
109
- tex.SetPixels(newColors);
110
- tex.Apply();
111
-
112
- texColors = null;
113
- newColors = null;
114
- }
115
-
116
- private static void BilinearScale(System.Object obj)
117
- {
118
- ThreadData threadData = (ThreadData)obj;
119
- for (int y = threadData.start; y < threadData.end; y++)
120
- {
121
- int yFloor = (int)Mathf.Floor(y * ratioY);
122
- int y1 = yFloor * w;
123
- int y2 = (yFloor + 1) * w;
124
- int yw = y * w2;
125
-
126
- for (var x = 0; x < w2; x++)
127
- {
128
- int xFloor = (int)Mathf.Floor(x * ratioX);
129
- float xLerp = x * ratioX - xFloor;
130
- newColors[yw + x] = ColorLerpUnclamped(
131
- ColorLerpUnclamped(
132
- texColors[y1 + xFloor],
133
- texColors[y1 + xFloor + 1],
134
- xLerp
135
- ),
136
- ColorLerpUnclamped(
137
- texColors[y2 + xFloor],
138
- texColors[y2 + xFloor + 1],
139
- xLerp
140
- ),
141
- y * ratioY - yFloor
142
- );
143
- }
144
- }
145
-
146
- _ = mutex.WaitOne();
147
- finishCount++;
148
- mutex.ReleaseMutex();
149
- }
150
-
151
- private static void PointScale(System.Object obj)
152
- {
153
- ThreadData threadData = (ThreadData)obj;
154
- for (int y = threadData.start; y < threadData.end; y++)
155
- {
156
- int thisY = (int)(ratioY * y) * w;
157
- int yw = y * w2;
158
- for (var x = 0; x < w2; x++)
159
- {
160
- newColors[yw + x] = texColors[(int)(thisY + ratioX * x)];
161
- }
162
- }
163
-
164
- _ = mutex.WaitOne();
165
- finishCount++;
166
- mutex.ReleaseMutex();
167
- }
168
-
169
- private static Color ColorLerpUnclamped(Color c1, Color c2, float value)
170
- {
171
- return new Color(
172
- c1.r + (c2.r - c1.r) * value,
173
- c1.g + (c2.g - c1.g) * value,
174
- c1.b + (c2.b - c1.b) * value,
175
- c1.a + (c2.a - c1.a) * value
176
- );
177
- }
178
- }
179
- }
1
+ namespace UnityHelpers.Utils
2
+ {
3
+ using System.Threading;
4
+ using UnityEngine;
5
+
6
+ // https://answers.unity.com/questions/348163/resize-texture2d-comes-out-grey.html
7
+ // http://wiki.unity3d.com/index.php/TextureScale
8
+ public static class TextureScale
9
+ {
10
+ private sealed class ThreadData
11
+ {
12
+ public readonly int start;
13
+ public readonly int end;
14
+
15
+ public ThreadData(int s, int e)
16
+ {
17
+ start = s;
18
+ end = e;
19
+ }
20
+ }
21
+
22
+ private static Color[] texColors;
23
+ private static Color[] newColors;
24
+ private static int w;
25
+ private static float ratioX;
26
+ private static float ratioY;
27
+ private static int w2;
28
+ private static int finishCount;
29
+ private static Mutex mutex;
30
+
31
+ public static void Point(Texture2D tex, int newWidth, int newHeight)
32
+ {
33
+ ThreadedScale(tex, newWidth, newHeight, false);
34
+ }
35
+
36
+ public static void Bilinear(Texture2D tex, int newWidth, int newHeight)
37
+ {
38
+ ThreadedScale(tex, newWidth, newHeight, true);
39
+ }
40
+
41
+ private static void ThreadedScale(
42
+ Texture2D tex,
43
+ int newWidth,
44
+ int newHeight,
45
+ bool useBilinear
46
+ )
47
+ {
48
+ texColors = tex.GetPixels();
49
+ newColors = new Color[newWidth * newHeight];
50
+ if (useBilinear)
51
+ {
52
+ ratioX = 1.0f / ((float)newWidth / (tex.width - 1));
53
+ ratioY = 1.0f / ((float)newHeight / (tex.height - 1));
54
+ }
55
+ else
56
+ {
57
+ ratioX = ((float)tex.width) / newWidth;
58
+ ratioY = ((float)tex.height) / newHeight;
59
+ }
60
+
61
+ w = tex.width;
62
+ w2 = newWidth;
63
+ int cores = Mathf.Min(SystemInfo.processorCount, newHeight);
64
+ int slice = newHeight / cores;
65
+
66
+ finishCount = 0;
67
+ mutex ??= new Mutex(false);
68
+ if (1 < cores)
69
+ {
70
+ int i;
71
+ ThreadData threadData;
72
+ for (i = 0; i < cores - 1; i++)
73
+ {
74
+ threadData = new ThreadData(slice * i, slice * (i + 1));
75
+ ParameterizedThreadStart ts = useBilinear ? BilinearScale : PointScale;
76
+ Thread thread = new(ts);
77
+ thread.Start(threadData);
78
+ }
79
+
80
+ threadData = new ThreadData(slice * i, newHeight);
81
+ if (useBilinear)
82
+ {
83
+ BilinearScale(threadData);
84
+ }
85
+ else
86
+ {
87
+ PointScale(threadData);
88
+ }
89
+
90
+ while (finishCount < cores)
91
+ {
92
+ Thread.Sleep(1);
93
+ }
94
+ }
95
+ else
96
+ {
97
+ ThreadData threadData = new(0, newHeight);
98
+ if (useBilinear)
99
+ {
100
+ BilinearScale(threadData);
101
+ }
102
+ else
103
+ {
104
+ PointScale(threadData);
105
+ }
106
+ }
107
+
108
+ _ = tex.Reinitialize(newWidth, newHeight);
109
+ tex.SetPixels(newColors);
110
+ tex.Apply();
111
+
112
+ texColors = null;
113
+ newColors = null;
114
+ }
115
+
116
+ private static void BilinearScale(System.Object obj)
117
+ {
118
+ ThreadData threadData = (ThreadData)obj;
119
+ for (int y = threadData.start; y < threadData.end; y++)
120
+ {
121
+ int yFloor = (int)Mathf.Floor(y * ratioY);
122
+ int y1 = yFloor * w;
123
+ int y2 = (yFloor + 1) * w;
124
+ int yw = y * w2;
125
+
126
+ for (var x = 0; x < w2; x++)
127
+ {
128
+ int xFloor = (int)Mathf.Floor(x * ratioX);
129
+ float xLerp = x * ratioX - xFloor;
130
+ newColors[yw + x] = ColorLerpUnclamped(
131
+ ColorLerpUnclamped(
132
+ texColors[y1 + xFloor],
133
+ texColors[y1 + xFloor + 1],
134
+ xLerp
135
+ ),
136
+ ColorLerpUnclamped(
137
+ texColors[y2 + xFloor],
138
+ texColors[y2 + xFloor + 1],
139
+ xLerp
140
+ ),
141
+ y * ratioY - yFloor
142
+ );
143
+ }
144
+ }
145
+
146
+ _ = mutex.WaitOne();
147
+ finishCount++;
148
+ mutex.ReleaseMutex();
149
+ }
150
+
151
+ private static void PointScale(System.Object obj)
152
+ {
153
+ ThreadData threadData = (ThreadData)obj;
154
+ for (int y = threadData.start; y < threadData.end; y++)
155
+ {
156
+ int thisY = (int)(ratioY * y) * w;
157
+ int yw = y * w2;
158
+ for (var x = 0; x < w2; x++)
159
+ {
160
+ newColors[yw + x] = texColors[(int)(thisY + ratioX * x)];
161
+ }
162
+ }
163
+
164
+ _ = mutex.WaitOne();
165
+ finishCount++;
166
+ mutex.ReleaseMutex();
167
+ }
168
+
169
+ private static Color ColorLerpUnclamped(Color c1, Color c2, float value)
170
+ {
171
+ return new Color(
172
+ c1.r + (c2.r - c1.r) * value,
173
+ c1.g + (c2.g - c1.g) * value,
174
+ c1.b + (c2.b - c1.b) * value,
175
+ c1.a + (c2.a - c1.a) * value
176
+ );
177
+ }
178
+ }
179
+ }
@@ -1,3 +1,3 @@
1
- fileFormatVersion: 2
2
- guid: 985292b70519406bafda70e5ab4e06ce
1
+ fileFormatVersion: 2
2
+ guid: 985292b70519406bafda70e5ab4e06ce
3
3
  timeCreated: 1720667849
@@ -1,14 +1,14 @@
1
- {
2
- "name": "WallstopStudios.UnityHelpers",
3
- "rootNamespace": "UnityHelpers",
4
- "references": [],
5
- "includePlatforms": [],
6
- "excludePlatforms": [],
7
- "allowUnsafeCode": true,
8
- "overrideReferences": false,
9
- "precompiledReferences": [],
10
- "autoReferenced": true,
11
- "defineConstraints": [],
12
- "versionDefines": [],
13
- "noEngineReferences": false
1
+ {
2
+ "name": "WallstopStudios.UnityHelpers",
3
+ "rootNamespace": "UnityHelpers",
4
+ "references": [],
5
+ "includePlatforms": [],
6
+ "excludePlatforms": [],
7
+ "allowUnsafeCode": true,
8
+ "overrideReferences": false,
9
+ "precompiledReferences": [],
10
+ "autoReferenced": true,
11
+ "defineConstraints": [],
12
+ "versionDefines": [],
13
+ "noEngineReferences": false
14
14
  }