com.wallstop-studios.unity-helpers 2.0.0-rc73.1 → 2.0.0-rc73.10
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.
- package/Editor/AnimationCopier.cs +58 -50
- package/Editor/AnimationCreator.cs +17 -24
- package/Editor/AnimationEventEditor.cs +11 -23
- package/Editor/FitTextureSizeWindow.cs +9 -9
- package/Editor/PrefabChecker.cs +12 -18
- package/Editor/SpriteAtlasGenerator.cs +47 -66
- package/Editor/SpriteCropper.cs +157 -131
- package/Editor/SpriteSettingsApplier.cs +5 -3
- package/Editor/Utils/GUIIndentScope.cs +20 -0
- package/Editor/Utils/GUIIndentScope.cs.meta +3 -0
- package/Runtime/Core/DataStructure/Circle.cs +1 -1
- package/Runtime/Core/DataStructure/QuadTree.cs +4 -4
- package/Runtime/Core/Extension/ColorExtensions.cs +5 -5
- package/Runtime/Core/Extension/IEnumerableExtensions.cs +1 -1
- package/Runtime/Core/Extension/UnityExtensions.cs +14 -14
- package/Runtime/Core/Helper/Helpers.cs +9 -9
- package/Runtime/Core/Helper/Logging/UnityLogTagFormatter.cs +31 -8
- package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +2 -2
- package/Runtime/Core/Helper/PathHelper.cs +15 -0
- package/Runtime/Core/Helper/PathHelper.cs.meta +3 -0
- package/Runtime/Core/Random/DotNetRandom.cs +1 -1
- package/Runtime/Core/Random/SplitMix64.cs +1 -1
- package/Runtime/Core/Random/SquirrelRandom.cs +7 -7
- package/Runtime/Core/Random/ThreadLocalRandom.cs +1 -1
- package/Runtime/Core/Random/WyRandom.cs +1 -1
- package/Runtime/Tags/AttributeEffect.cs +1 -0
- package/Runtime/Tags/EffectHandler.cs +1 -1
- package/Runtime/UI/LayeredImage.cs +309 -161
- package/Runtime/Utils/AnimatorEnumStateMachine.cs +1 -1
- package/Runtime/Utils/SetTextureImportData.cs +1 -1
- package/Runtime/Utils/TextureScale.cs +4 -4
- package/Styles/Elements/Progress/ArcedProgressBar.cs +345 -0
- package/Styles/Elements/Progress/ArcedProgressBar.cs.meta +3 -0
- package/Styles/Elements/Progress/CircularProgressBar.cs +307 -0
- package/Styles/Elements/Progress/CircularProgressBar.cs.meta +3 -0
- package/Styles/Elements/Progress/GlitchProgressBar.cs +416 -0
- package/Styles/Elements/Progress/GlitchProgressBar.cs.meta +3 -0
- package/Styles/Elements/Progress/LiquidProgressBar.cs +632 -0
- package/Styles/Elements/Progress/LiquidProgressBar.cs.meta +3 -0
- package/Styles/Elements/Progress/MarchingAntsProgressBar.cs +722 -0
- package/Styles/Elements/Progress/MarchingAntsProgressBar.cs.meta +3 -0
- package/Styles/Elements/Progress/RegularProgressBar.cs +405 -0
- package/Styles/Elements/Progress/RegularProgressBar.cs.meta +3 -0
- package/Styles/Elements/Progress/WigglyProgressBar.cs +837 -0
- package/Styles/Elements/Progress/WigglyProgressBar.cs.meta +3 -0
- package/Styles/Elements/Progress.meta +3 -0
- package/Styles/Elements.meta +3 -0
- package/Styles/USS/ArcedProgressBar.uss +19 -0
- package/Styles/USS/ArcedProgressBar.uss.meta +3 -0
- package/Styles/USS/CirclularProgressBar.uss +18 -0
- package/Styles/USS/CirclularProgressBar.uss.meta +3 -0
- package/Styles/USS/RegularProgressBar.uss +33 -0
- package/Styles/USS/RegularProgressBar.uss.meta +3 -0
- package/Styles/USS/WigglyProgressBar.uss +17 -0
- package/Styles/USS/WigglyProgressBar.uss.meta +3 -0
- package/Styles/USS.meta +3 -0
- package/Styles/WallstopStudios.UnityHelpers.Styles.asmdef +17 -0
- package/Styles/WallstopStudios.UnityHelpers.Styles.asmdef.meta +7 -0
- package/Styles.meta +3 -0
- package/package.json +10 -1
|
@@ -10,6 +10,7 @@ namespace WallstopStudios.UnityHelpers.Editor
|
|
|
10
10
|
using System.Linq;
|
|
11
11
|
using UnityEditor;
|
|
12
12
|
using UnityEngine;
|
|
13
|
+
using Utils;
|
|
13
14
|
using Object = UnityEngine.Object;
|
|
14
15
|
|
|
15
16
|
[Serializable]
|
|
@@ -203,9 +204,10 @@ namespace WallstopStudios.UnityHelpers.Editor
|
|
|
203
204
|
valuePropHeight
|
|
204
205
|
);
|
|
205
206
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
207
|
+
using (new GUIIndentScope())
|
|
208
|
+
{
|
|
209
|
+
EditorGUI.PropertyField(valueRect, valueProp, GUIContent.none, true);
|
|
210
|
+
}
|
|
209
211
|
|
|
210
212
|
currentRect.y += valueRect.height + EditorGUIUtility.standardVerticalSpacing;
|
|
211
213
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
namespace WallstopStudios.UnityHelpers.Editor.Utils
|
|
2
|
+
{
|
|
3
|
+
#if UNITY_EDITOR
|
|
4
|
+
using System;
|
|
5
|
+
using UnityEditor;
|
|
6
|
+
|
|
7
|
+
public sealed class GUIIndentScope : IDisposable
|
|
8
|
+
{
|
|
9
|
+
public GUIIndentScope()
|
|
10
|
+
{
|
|
11
|
+
EditorGUI.indentLevel++;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
public void Dispose()
|
|
15
|
+
{
|
|
16
|
+
EditorGUI.indentLevel--;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
#endif
|
|
20
|
+
}
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
|
|
46
46
|
Bounds[] quadrants =
|
|
47
47
|
{
|
|
48
|
-
new
|
|
48
|
+
new(
|
|
49
49
|
new Vector3(
|
|
50
50
|
boundary.center.x - halfQuadrantSize.x,
|
|
51
51
|
boundary.center.y + halfQuadrantSize.y,
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
),
|
|
54
54
|
quadrantSize
|
|
55
55
|
),
|
|
56
|
-
new
|
|
56
|
+
new(
|
|
57
57
|
new Vector3(
|
|
58
58
|
boundary.center.x + halfQuadrantSize.x,
|
|
59
59
|
boundary.center.y + halfQuadrantSize.y,
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
),
|
|
62
62
|
quadrantSize
|
|
63
63
|
),
|
|
64
|
-
new
|
|
64
|
+
new(
|
|
65
65
|
new Vector3(
|
|
66
66
|
boundary.center.x + halfQuadrantSize.x,
|
|
67
67
|
boundary.center.y - halfQuadrantSize.y,
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
),
|
|
70
70
|
quadrantSize
|
|
71
71
|
),
|
|
72
|
-
new
|
|
72
|
+
new(
|
|
73
73
|
new Vector3(
|
|
74
74
|
boundary.center.x - halfQuadrantSize.x,
|
|
75
75
|
boundary.center.y - halfQuadrantSize.y,
|
|
@@ -534,14 +534,14 @@
|
|
|
534
534
|
rgb.b > 0.04045 ? Mathf.Pow((rgb.b + 0.055f) / 1.055f, 2.4f) : rgb.b / 12.92f;
|
|
535
535
|
|
|
536
536
|
double x = (r * 0.4124 + g * 0.3576 + b * 0.1805) / 0.95047;
|
|
537
|
-
double y =
|
|
537
|
+
double y = r * 0.2126 + g * 0.7152 + b * 0.0722;
|
|
538
538
|
double z = (r * 0.0193 + g * 0.1192 + b * 0.9505) / 1.08883;
|
|
539
539
|
|
|
540
|
-
x = x > 0.008856 ? Mathf.Pow((float)x, 1f / 3f) :
|
|
541
|
-
y = y > 0.008856 ? Mathf.Pow((float)y, 1f / 3f) :
|
|
542
|
-
z = z > 0.008856 ? Mathf.Pow((float)z, 1f / 3f) :
|
|
540
|
+
x = x > 0.008856 ? Mathf.Pow((float)x, 1f / 3f) : 7.787 * x + 16f / 116f;
|
|
541
|
+
y = y > 0.008856 ? Mathf.Pow((float)y, 1f / 3f) : 7.787 * y + 16f / 116f;
|
|
542
|
+
z = z > 0.008856 ? Mathf.Pow((float)z, 1f / 3f) : 7.787 * z + 16f / 116f;
|
|
543
543
|
|
|
544
|
-
return new LABColor(
|
|
544
|
+
return new LABColor(116 * y - 16, 500 * (x - y), 200 * (y - z));
|
|
545
545
|
}
|
|
546
546
|
|
|
547
547
|
private static Color LABToRGB(double l, double a, double b)
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
|
|
79
79
|
public static IEnumerable<IEnumerable<T>> Partition<T>(this IEnumerable<T> items, int size)
|
|
80
80
|
{
|
|
81
|
-
using
|
|
81
|
+
using IEnumerator<T> enumerator = items.GetEnumerator();
|
|
82
82
|
bool hasNext = enumerator.MoveNext();
|
|
83
83
|
|
|
84
84
|
IEnumerable<T> NextPartitionOf()
|
|
@@ -126,9 +126,9 @@
|
|
|
126
126
|
xMin,
|
|
127
127
|
yMin,
|
|
128
128
|
zMin,
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
129
|
+
xMax - xMin + 1,
|
|
130
|
+
yMax - yMin + 1,
|
|
131
|
+
zMax - zMin + 1
|
|
132
132
|
);
|
|
133
133
|
}
|
|
134
134
|
|
|
@@ -160,9 +160,9 @@
|
|
|
160
160
|
xMin,
|
|
161
161
|
yMin,
|
|
162
162
|
zMin,
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
163
|
+
xMax - xMin + 1,
|
|
164
|
+
yMax - yMin + 1,
|
|
165
|
+
zMax - zMin + 1
|
|
166
166
|
);
|
|
167
167
|
}
|
|
168
168
|
|
|
@@ -584,8 +584,8 @@
|
|
|
584
584
|
public float LargestAngle(FastVector3Int point)
|
|
585
585
|
{
|
|
586
586
|
Vector2 worldPoint = _grid.CellToWorld(point);
|
|
587
|
-
float angleFrom = Vector2.Angle(
|
|
588
|
-
float angleTo = Vector2.Angle(
|
|
587
|
+
float angleFrom = Vector2.Angle(toWorld - fromWorld, worldPoint - fromWorld);
|
|
588
|
+
float angleTo = Vector2.Angle(fromWorld - toWorld, worldPoint - toWorld);
|
|
589
589
|
return Math.Max(angleFrom, angleTo);
|
|
590
590
|
}
|
|
591
591
|
}
|
|
@@ -1126,7 +1126,7 @@
|
|
|
1126
1126
|
}
|
|
1127
1127
|
|
|
1128
1128
|
if (
|
|
1129
|
-
|
|
1129
|
+
newVector.x < position.x == position.x <= oldVector.x
|
|
1130
1130
|
&& (position.y - (long)lhs.y) * (rhs.x - lhs.x)
|
|
1131
1131
|
< (rhs.y - (long)lhs.y) * (position.x - lhs.x)
|
|
1132
1132
|
)
|
|
@@ -1274,7 +1274,7 @@
|
|
|
1274
1274
|
yield break;
|
|
1275
1275
|
}
|
|
1276
1276
|
|
|
1277
|
-
scaleFactor *=
|
|
1277
|
+
scaleFactor *= 4 / 3f;
|
|
1278
1278
|
}
|
|
1279
1279
|
}
|
|
1280
1280
|
|
|
@@ -1416,8 +1416,8 @@
|
|
|
1416
1416
|
float ty = v.y;
|
|
1417
1417
|
|
|
1418
1418
|
Vector2 rotatedVector;
|
|
1419
|
-
rotatedVector.x =
|
|
1420
|
-
rotatedVector.y =
|
|
1419
|
+
rotatedVector.x = cos * tx - sin * ty;
|
|
1420
|
+
rotatedVector.y = sin * tx + cos * ty;
|
|
1421
1421
|
|
|
1422
1422
|
return rotatedVector;
|
|
1423
1423
|
}
|
|
@@ -1564,12 +1564,12 @@
|
|
|
1564
1564
|
|
|
1565
1565
|
public static bool IsOnEdge2D(this FastVector3Int position, BoundsInt bounds)
|
|
1566
1566
|
{
|
|
1567
|
-
if (bounds.xMin == position.x ||
|
|
1567
|
+
if (bounds.xMin == position.x || bounds.xMax - 1 == position.x)
|
|
1568
1568
|
{
|
|
1569
1569
|
return bounds.yMin <= position.y && position.y < bounds.yMax;
|
|
1570
1570
|
}
|
|
1571
1571
|
|
|
1572
|
-
if (bounds.yMin == position.y ||
|
|
1572
|
+
if (bounds.yMin == position.y || bounds.yMax - 1 == position.y)
|
|
1573
1573
|
{
|
|
1574
1574
|
return bounds.xMin <= position.x && position.x < bounds.xMax;
|
|
1575
1575
|
}
|
|
@@ -47,9 +47,9 @@
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
float a =
|
|
50
|
-
|
|
51
|
-
+
|
|
52
|
-
-
|
|
50
|
+
targetVelocity.x * targetVelocity.x
|
|
51
|
+
+ targetVelocity.y * targetVelocity.y
|
|
52
|
+
- projectileSpeed * projectileSpeed;
|
|
53
53
|
|
|
54
54
|
float b =
|
|
55
55
|
2
|
|
@@ -59,10 +59,10 @@
|
|
|
59
59
|
);
|
|
60
60
|
|
|
61
61
|
float c =
|
|
62
|
-
(
|
|
63
|
-
+ (
|
|
62
|
+
(target.x - launchLocation.x) * (target.x - launchLocation.x)
|
|
63
|
+
+ (target.y - launchLocation.y) * (target.y - launchLocation.y);
|
|
64
64
|
|
|
65
|
-
float disc = b * b -
|
|
65
|
+
float disc = b * b - 4 * a * c;
|
|
66
66
|
if (disc < 0)
|
|
67
67
|
{
|
|
68
68
|
return target;
|
|
@@ -72,8 +72,8 @@
|
|
|
72
72
|
float t2 = (-1 * b - Mathf.Sqrt(disc)) / (2 * a);
|
|
73
73
|
float t = Mathf.Max(t1, t2); // let us take the larger time value
|
|
74
74
|
|
|
75
|
-
float aimX = target.x +
|
|
76
|
-
float aimY = target.y +
|
|
75
|
+
float aimX = target.x + targetVelocity.x * t;
|
|
76
|
+
float aimY = target.y + targetVelocity.y * t;
|
|
77
77
|
|
|
78
78
|
if (float.IsNaN(aimX) || float.IsNaN(aimY))
|
|
79
79
|
{
|
|
@@ -283,7 +283,7 @@
|
|
|
283
283
|
// optional delay execution from happening on 0, 1, 2, ... n-1 to 1, 2, ... n
|
|
284
284
|
if (
|
|
285
285
|
totalExecuted < totalCount
|
|
286
|
-
&& (
|
|
286
|
+
&& (totalExecuted + (delay ? 1f : 0f)) / totalCount <= percent
|
|
287
287
|
)
|
|
288
288
|
{
|
|
289
289
|
action();
|
|
@@ -137,11 +137,9 @@
|
|
|
137
137
|
const string sizeCheck = "size=";
|
|
138
138
|
AddDecoration(
|
|
139
139
|
format =>
|
|
140
|
-
(
|
|
141
|
-
format.
|
|
142
|
-
|
|
143
|
-
|| int.TryParse(format, out _)
|
|
144
|
-
),
|
|
140
|
+
format.StartsWith(sizeCheck, StringComparison.OrdinalIgnoreCase)
|
|
141
|
+
&& int.TryParse(format.Substring(sizeCheck.Length), out _)
|
|
142
|
+
|| int.TryParse(format, out _),
|
|
145
143
|
format: (format, value) =>
|
|
146
144
|
{
|
|
147
145
|
if (!int.TryParse(format, out int size))
|
|
@@ -373,11 +371,26 @@
|
|
|
373
371
|
)
|
|
374
372
|
{
|
|
375
373
|
bool stopLooping = false;
|
|
376
|
-
foreach (
|
|
374
|
+
foreach (
|
|
375
|
+
KeyValuePair<
|
|
376
|
+
int,
|
|
377
|
+
List<(
|
|
378
|
+
string tag,
|
|
379
|
+
bool editorOnly,
|
|
380
|
+
Func<string, bool> predicate,
|
|
381
|
+
Func<string, object, string> formatter
|
|
382
|
+
)>
|
|
383
|
+
> entry in _matchingDecorations
|
|
384
|
+
)
|
|
377
385
|
{
|
|
378
386
|
for (int i = 0; i < entry.Value.Count; i++)
|
|
379
387
|
{
|
|
380
|
-
|
|
388
|
+
(
|
|
389
|
+
string tag,
|
|
390
|
+
bool editorOnly,
|
|
391
|
+
Func<string, bool> predicate,
|
|
392
|
+
Func<string, object, string> formatter
|
|
393
|
+
) existingDecoration = entry.Value[i];
|
|
381
394
|
if (
|
|
382
395
|
!string.Equals(
|
|
383
396
|
existingDecoration.tag,
|
|
@@ -459,7 +472,17 @@
|
|
|
459
472
|
) decoration
|
|
460
473
|
)
|
|
461
474
|
{
|
|
462
|
-
foreach (
|
|
475
|
+
foreach (
|
|
476
|
+
KeyValuePair<
|
|
477
|
+
int,
|
|
478
|
+
List<(
|
|
479
|
+
string tag,
|
|
480
|
+
bool editorOnly,
|
|
481
|
+
Func<string, bool> predicate,
|
|
482
|
+
Func<string, object, string> formatter
|
|
483
|
+
)>
|
|
484
|
+
> entry in _matchingDecorations
|
|
485
|
+
)
|
|
463
486
|
{
|
|
464
487
|
for (int i = 0; i < entry.Value.Count; ++i)
|
|
465
488
|
{
|
|
@@ -156,7 +156,7 @@
|
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
-
Transform transform =
|
|
159
|
+
Transform transform = component as Transform ?? component.transform;
|
|
160
160
|
if (transform == null)
|
|
161
161
|
{
|
|
162
162
|
return;
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
behavior.enabled = enabled;
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
-
Transform transform =
|
|
190
|
+
Transform transform = component as Transform ?? component.transform;
|
|
191
191
|
if (transform == null)
|
|
192
192
|
{
|
|
193
193
|
return;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
using System.Runtime.CompilerServices;
|
|
2
|
+
|
|
3
|
+
[assembly: InternalsVisibleTo(assemblyName: "WallstopStudios.UnityHelpers.Styles")]
|
|
4
|
+
[assembly: InternalsVisibleTo(assemblyName: "WallstopStudios.UnityHelpers.Editor")]
|
|
5
|
+
|
|
6
|
+
namespace WallstopStudios.UnityHelpers.Core.Helper
|
|
7
|
+
{
|
|
8
|
+
internal static class PathHelper
|
|
9
|
+
{
|
|
10
|
+
public static string SanitizePath(this string path)
|
|
11
|
+
{
|
|
12
|
+
return path?.Replace('\\', '/');
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
public static DotNetRandom Instance => ThreadLocalRandom<DotNetRandom>.Instance;
|
|
12
12
|
|
|
13
13
|
public override RandomState InternalState =>
|
|
14
|
-
new
|
|
14
|
+
new(unchecked((ulong)_seed), state2: _numberGenerated);
|
|
15
15
|
|
|
16
16
|
private ulong _numberGenerated;
|
|
17
17
|
private int _seed;
|
|
@@ -54,11 +54,11 @@
|
|
|
54
54
|
private static uint NextUintInternal(ref uint seed)
|
|
55
55
|
{
|
|
56
56
|
seed *= BitNoise1;
|
|
57
|
-
seed ^=
|
|
57
|
+
seed ^= seed >> 8;
|
|
58
58
|
seed += BitNoise2;
|
|
59
|
-
seed ^=
|
|
59
|
+
seed ^= seed << 8;
|
|
60
60
|
seed *= BitNoise3;
|
|
61
|
-
seed ^=
|
|
61
|
+
seed ^= seed >> 8;
|
|
62
62
|
return seed;
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -68,17 +68,17 @@
|
|
|
68
68
|
uint result = unchecked((uint)x);
|
|
69
69
|
result *= BitNoise1;
|
|
70
70
|
result += seed;
|
|
71
|
-
result ^=
|
|
71
|
+
result ^= result >> 8;
|
|
72
72
|
result += BitNoise2;
|
|
73
|
-
result ^=
|
|
73
|
+
result ^= result << 8;
|
|
74
74
|
result *= BitNoise3;
|
|
75
|
-
result ^=
|
|
75
|
+
result ^= result >> 8;
|
|
76
76
|
return (result >> 8) * MagicFloat;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
private static float NextNoise(int x, int y, uint seed)
|
|
80
80
|
{
|
|
81
|
-
return NextNoise(x +
|
|
81
|
+
return NextNoise(x + LargePrime * y, seed);
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
public static class ThreadLocalRandom<T>
|
|
6
6
|
where T : IRandom, new()
|
|
7
7
|
{
|
|
8
|
-
private static readonly ThreadLocal<T> RandomCache = new
|
|
8
|
+
private static readonly ThreadLocal<T> RandomCache = new(() => new T());
|
|
9
9
|
|
|
10
10
|
public static T Instance => RandomCache.Value;
|
|
11
11
|
}
|
|
@@ -297,7 +297,7 @@
|
|
|
297
297
|
if (cosmeticEffectData.RequiresInstancing)
|
|
298
298
|
{
|
|
299
299
|
this.LogWarn(
|
|
300
|
-
$"Double-deregistration detected for handle {handle:json}. Existing handles: [{
|
|
300
|
+
$"Double-deregistration detected for handle {handle:json}. Existing handles: [{string.Join(",", _instancedCosmeticEffects.Keys)}]."
|
|
301
301
|
);
|
|
302
302
|
continue;
|
|
303
303
|
}
|