com.wallstop-studios.unity-helpers 1.0.0-rc4
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/.gitattributes +63 -0
- package/CHANGELOG.md +0 -0
- package/CHANGELOG.md.meta +7 -0
- package/Editor/AnimationCreator.cs +218 -0
- package/Editor/AnimationCreator.cs.meta +11 -0
- package/Editor/AnimationEventEditor.cs +742 -0
- package/Editor/AnimationEventEditor.cs.meta +11 -0
- package/Editor/PrefabCheckWizard.cs +140 -0
- package/Editor/PrefabCheckWizard.cs.meta +11 -0
- package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef +16 -0
- package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef.meta +7 -0
- package/Editor.meta +8 -0
- package/LICENSE +21 -0
- package/LICENSE.md +7 -0
- package/LICENSE.md.meta +7 -0
- package/LICENSE.meta +7 -0
- package/README.md +2 -0
- package/README.md.meta +7 -0
- package/Runtime/Core/Attributes/AnimationEventAttribute.cs +102 -0
- package/Runtime/Core/Attributes/AnimationEventAttribute.cs.meta +11 -0
- package/Runtime/Core/Attributes/AutomaticallyFindAttribute.cs +43 -0
- package/Runtime/Core/Attributes/AutomaticallyFindAttribute.cs.meta +11 -0
- package/Runtime/Core/Attributes/ChildComponentAttribute.cs +85 -0
- package/Runtime/Core/Attributes/ChildComponentAttribute.cs.meta +11 -0
- package/Runtime/Core/Attributes/KSerializableAttribute.cs +23 -0
- package/Runtime/Core/Attributes/KSerializableAttribute.cs.meta +11 -0
- package/Runtime/Core/Attributes/NotNullAttribute.cs +33 -0
- package/Runtime/Core/Attributes/NotNullAttribute.cs.meta +11 -0
- package/Runtime/Core/Attributes/ParentComponent.cs +85 -0
- package/Runtime/Core/Attributes/ParentComponent.cs.meta +11 -0
- package/Runtime/Core/Attributes/ReadOnlyAttribute.cs +8 -0
- package/Runtime/Core/Attributes/ReadOnlyAttribute.cs.meta +11 -0
- package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +14 -0
- package/Runtime/Core/Attributes/RelationalComponentExtensions.cs.meta +11 -0
- package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +89 -0
- package/Runtime/Core/Attributes/SiblingComponentAttribute.cs.meta +11 -0
- package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs +66 -0
- package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs.meta +11 -0
- package/Runtime/Core/Attributes.meta +8 -0
- package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs +91 -0
- package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs.meta +11 -0
- package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs +180 -0
- package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs.meta +11 -0
- package/Runtime/Core/DataStructure/Adapters/KGuid.cs +274 -0
- package/Runtime/Core/DataStructure/Adapters/KGuid.cs.meta +11 -0
- package/Runtime/Core/DataStructure/Adapters/KVector2.cs +79 -0
- package/Runtime/Core/DataStructure/Adapters/KVector2.cs.meta +11 -0
- package/Runtime/Core/DataStructure/Adapters.meta +8 -0
- package/Runtime/Core/DataStructure/Circle.cs +50 -0
- package/Runtime/Core/DataStructure/Circle.cs.meta +11 -0
- package/Runtime/Core/DataStructure/CyclicBuffer.cs +130 -0
- package/Runtime/Core/DataStructure/CyclicBuffer.cs.meta +11 -0
- package/Runtime/Core/DataStructure/ISpatialTree.cs +58 -0
- package/Runtime/Core/DataStructure/ISpatialTree.cs.meta +11 -0
- package/Runtime/Core/DataStructure/KDTree.cs +186 -0
- package/Runtime/Core/DataStructure/KDTree.cs.meta +11 -0
- package/Runtime/Core/DataStructure/QuadTree.cs +184 -0
- package/Runtime/Core/DataStructure/QuadTree.cs.meta +11 -0
- package/Runtime/Core/DataStructure/RTree.cs +247 -0
- package/Runtime/Core/DataStructure/RTree.cs.meta +11 -0
- package/Runtime/Core/DataStructure/StringWrapper.cs +90 -0
- package/Runtime/Core/DataStructure/StringWrapper.cs.meta +11 -0
- package/Runtime/Core/DataStructure/TimedCache.cs +50 -0
- package/Runtime/Core/DataStructure/TimedCache.cs.meta +11 -0
- package/Runtime/Core/DataStructure.meta +8 -0
- package/Runtime/Core/Extension/AnimatorExtensions.cs +25 -0
- package/Runtime/Core/Extension/AnimatorExtensions.cs.meta +11 -0
- package/Runtime/Core/Extension/CircleExtensions.cs +25 -0
- package/Runtime/Core/Extension/CircleExtensions.cs.meta +11 -0
- package/Runtime/Core/Extension/ColorExtensions.cs +72 -0
- package/Runtime/Core/Extension/ColorExtensions.cs.meta +11 -0
- package/Runtime/Core/Extension/DictionaryExtensions.cs +173 -0
- package/Runtime/Core/Extension/DictionaryExtensions.cs.meta +11 -0
- package/Runtime/Core/Extension/DirectionExtensions.cs +210 -0
- package/Runtime/Core/Extension/DirectionExtensions.cs.meta +11 -0
- package/Runtime/Core/Extension/HashSetExtensions.cs +12 -0
- package/Runtime/Core/Extension/HashSetExtensions.cs.meta +11 -0
- package/Runtime/Core/Extension/IEnumerableExtensions.cs +109 -0
- package/Runtime/Core/Extension/IEnumerableExtensions.cs.meta +11 -0
- package/Runtime/Core/Extension/IListExtensions.cs +49 -0
- package/Runtime/Core/Extension/IListExtensions.cs.meta +11 -0
- package/Runtime/Core/Extension/LoggingExtensions.cs +196 -0
- package/Runtime/Core/Extension/LoggingExtensions.cs.meta +11 -0
- package/Runtime/Core/Extension/RandomExtensions.cs +110 -0
- package/Runtime/Core/Extension/RandomExtensions.cs.meta +11 -0
- package/Runtime/Core/Extension/StringExtensions.cs +76 -0
- package/Runtime/Core/Extension/StringExtensions.cs.meta +11 -0
- package/Runtime/Core/Extension/UnityExtensions.cs +1409 -0
- package/Runtime/Core/Extension/UnityExtensions.cs.meta +11 -0
- package/Runtime/Core/Extension.meta +8 -0
- package/Runtime/Core/Helper/AssignUtilities.cs +14 -0
- package/Runtime/Core/Helper/AssignUtilities.cs.meta +11 -0
- package/Runtime/Core/Helper/Enumerables.cs +17 -0
- package/Runtime/Core/Helper/Enumerables.cs.meta +11 -0
- package/Runtime/Core/Helper/Geometry.cs +26 -0
- package/Runtime/Core/Helper/Geometry.cs.meta +11 -0
- package/Runtime/Core/Helper/Helpers.cs +1092 -0
- package/Runtime/Core/Helper/Helpers.cs.meta +11 -0
- package/Runtime/Core/Helper/IterationHelpers.cs +32 -0
- package/Runtime/Core/Helper/IterationHelpers.cs.meta +11 -0
- package/Runtime/Core/Helper/LifetimeHelpers.cs +12 -0
- package/Runtime/Core/Helper/LifetimeHelpers.cs.meta +11 -0
- package/Runtime/Core/Helper/Objects.cs +447 -0
- package/Runtime/Core/Helper/Objects.cs.meta +11 -0
- package/Runtime/Core/Helper/SpriteHelpers.cs +53 -0
- package/Runtime/Core/Helper/SpriteHelpers.cs.meta +11 -0
- package/Runtime/Core/Helper/StringInList.cs +31 -0
- package/Runtime/Core/Helper/StringInList.cs.meta +11 -0
- package/Runtime/Core/Helper/WallMath.cs +75 -0
- package/Runtime/Core/Helper/WallMath.cs.meta +11 -0
- package/Runtime/Core/Helper.meta +8 -0
- package/Runtime/Core/Math/Line.cs +51 -0
- package/Runtime/Core/Math/Line.cs.meta +11 -0
- package/Runtime/Core/Math/Parabola.cs +44 -0
- package/Runtime/Core/Math/Parabola.cs.meta +11 -0
- package/Runtime/Core/Math/PointPolygonCheck.cs +25 -0
- package/Runtime/Core/Math/PointPolygonCheck.cs.meta +11 -0
- package/Runtime/Core/Math/Range.cs +56 -0
- package/Runtime/Core/Math/Range.cs.meta +11 -0
- package/Runtime/Core/Math/XXHash.cs +308 -0
- package/Runtime/Core/Math/XXHash.cs.meta +11 -0
- package/Runtime/Core/Math.meta +8 -0
- package/Runtime/Core/Model/Direction.cs +26 -0
- package/Runtime/Core/Model/Direction.cs.meta +11 -0
- package/Runtime/Core/Model.meta +8 -0
- package/Runtime/Core/OneOf/FastOneOf.cs +145 -0
- package/Runtime/Core/OneOf/FastOneOf.cs.meta +11 -0
- package/Runtime/Core/OneOf/None.cs +6 -0
- package/Runtime/Core/OneOf/None.cs.meta +11 -0
- package/Runtime/Core/OneOf.meta +8 -0
- package/Runtime/Core/Random/AbstractRandom.cs +537 -0
- package/Runtime/Core/Random/AbstractRandom.cs.meta +11 -0
- package/Runtime/Core/Random/IRandom.cs +141 -0
- package/Runtime/Core/Random/IRandom.cs.meta +11 -0
- package/Runtime/Core/Random/NativePcgRandom.cs +97 -0
- package/Runtime/Core/Random/NativePcgRandom.cs.meta +11 -0
- package/Runtime/Core/Random/PcgRandom.cs +142 -0
- package/Runtime/Core/Random/PcgRandom.cs.meta +11 -0
- package/Runtime/Core/Random/RandomState.cs +92 -0
- package/Runtime/Core/Random/RandomState.cs.meta +11 -0
- package/Runtime/Core/Random/RandomUtilities.cs +26 -0
- package/Runtime/Core/Random/RandomUtilities.cs.meta +11 -0
- package/Runtime/Core/Random/SquirrelRandom.cs +82 -0
- package/Runtime/Core/Random/SquirrelRandom.cs.meta +11 -0
- package/Runtime/Core/Random/SystemRandom.cs +110 -0
- package/Runtime/Core/Random/SystemRandom.cs.meta +11 -0
- package/Runtime/Core/Random/ThreadLocalRandom.cs +11 -0
- package/Runtime/Core/Random/ThreadLocalRandom.cs.meta +11 -0
- package/Runtime/Core/Random/UnityRandom.cs +24 -0
- package/Runtime/Core/Random/UnityRandom.cs.meta +11 -0
- package/Runtime/Core/Random/XorShiftRandom.cs +45 -0
- package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -0
- package/Runtime/Core/Random.meta +8 -0
- package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +32 -0
- package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs.meta +11 -0
- package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +32 -0
- package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs.meta +11 -0
- package/Runtime/Core/Serialization/JsonConverters.meta +8 -0
- package/Runtime/Core/Serialization/Serializer.cs +125 -0
- package/Runtime/Core/Serialization/Serializer.cs.meta +11 -0
- package/Runtime/Core/Serialization.meta +8 -0
- package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +102 -0
- package/Runtime/Core/Threading/SingleThreadedThreadPool.cs.meta +11 -0
- package/Runtime/Core/Threading.meta +8 -0
- package/Runtime/Core.meta +8 -0
- package/Runtime/Protobuf-Net/System.Buffers.dll +0 -0
- package/Runtime/Protobuf-Net/System.Buffers.dll.meta +33 -0
- package/Runtime/Protobuf-Net/System.Collections.Immutable.dll +0 -0
- package/Runtime/Protobuf-Net/System.Collections.Immutable.dll.meta +33 -0
- package/Runtime/Protobuf-Net/System.Numerics.Vectors.dll +0 -0
- package/Runtime/Protobuf-Net/System.Numerics.Vectors.dll.meta +33 -0
- package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll +0 -0
- package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll.meta +33 -0
- package/Runtime/Protobuf-Net/protobuf-net.Core.dll +0 -0
- package/Runtime/Protobuf-Net/protobuf-net.Core.dll.meta +33 -0
- package/Runtime/Protobuf-Net/protobuf-net.dll +0 -0
- package/Runtime/Protobuf-Net/protobuf-net.dll.meta +33 -0
- package/Runtime/Protobuf-Net.meta +8 -0
- package/Runtime/Utils/AnimationEventEqualityComparer.cs +149 -0
- package/Runtime/Utils/AnimationEventEqualityComparer.cs.meta +11 -0
- package/Runtime/Utils/AnimatorEnumStateMachine.cs +80 -0
- package/Runtime/Utils/AnimatorEnumStateMachine.cs.meta +11 -0
- package/Runtime/Utils/Buffers.cs +32 -0
- package/Runtime/Utils/Buffers.cs.meta +11 -0
- package/Runtime/Utils/CircleLineRenderer.cs +122 -0
- package/Runtime/Utils/CircleLineRenderer.cs.meta +11 -0
- package/Runtime/Utils/Oscillator.cs +25 -0
- package/Runtime/Utils/Oscillator.cs.meta +11 -0
- package/Runtime/Utils/SetTextureImportData.cs +67 -0
- package/Runtime/Utils/SetTextureImportData.cs.meta +11 -0
- package/Runtime/Utils.meta +8 -0
- package/Runtime/WallstopStudios.UnityHelpers.asmdef +14 -0
- package/Runtime/WallstopStudios.UnityHelpers.asmdef.meta +7 -0
- package/Runtime.meta +8 -0
- package/Tests/Editor/WallstopStudios.UnityHelpers.Tests.Editor.asmdef +17 -0
- package/Tests/Editor/WallstopStudios.UnityHelpers.Tests.Editor.asmdef.meta +7 -0
- package/Tests/Editor.meta +8 -0
- package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs +14 -0
- package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs.meta +11 -0
- package/Tests/Runtime/DataStructures/QuadTreeTests.cs +14 -0
- package/Tests/Runtime/DataStructures/QuadTreeTests.cs.meta +11 -0
- package/Tests/Runtime/DataStructures/SpatialTreeTests.cs +106 -0
- package/Tests/Runtime/DataStructures/SpatialTreeTests.cs.meta +11 -0
- package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs +14 -0
- package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs.meta +11 -0
- package/Tests/Runtime/DataStructures.meta +8 -0
- package/Tests/Runtime/Performance/KDTreePerformanceTests.cs +14 -0
- package/Tests/Runtime/Performance/KDTreePerformanceTests.cs.meta +11 -0
- package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs +14 -0
- package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs.meta +11 -0
- package/Tests/Runtime/Performance/RandomPerformanceTests.cs +76 -0
- package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -0
- package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs +141 -0
- package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs.meta +11 -0
- package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs +14 -0
- package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs.meta +11 -0
- package/Tests/Runtime/Performance.meta +8 -0
- package/Tests/Runtime/Random/PcgRandomTests.cs +9 -0
- package/Tests/Runtime/Random/PcgRandomTests.cs.meta +11 -0
- package/Tests/Runtime/Random/RandomTestBase.cs +117 -0
- package/Tests/Runtime/Random/RandomTestBase.cs.meta +11 -0
- package/Tests/Runtime/Random/SquirrelRandomTests.cs +9 -0
- package/Tests/Runtime/Random/SquirrelRandomTests.cs.meta +11 -0
- package/Tests/Runtime/Random/SystemRandomTests.cs +10 -0
- package/Tests/Runtime/Random/SystemRandomTests.cs.meta +11 -0
- package/Tests/Runtime/Random/UnityRandomTests.cs +9 -0
- package/Tests/Runtime/Random/UnityRandomTests.cs.meta +11 -0
- package/Tests/Runtime/Random/XorShiftRandomTests.cs +9 -0
- package/Tests/Runtime/Random/XorShiftRandomTests.cs.meta +11 -0
- package/Tests/Runtime/Random.meta +8 -0
- package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef +22 -0
- package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef.meta +7 -0
- package/Tests/Runtime.meta +8 -0
- package/Tests.meta +8 -0
- package/Third Party Notices.md +1 -0
- package/Third Party Notices.md.meta +7 -0
- package/package.json +35 -0
- package/package.json.meta +7 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
namespace UnityHelpers.Core.Helper
|
|
2
|
+
{
|
|
3
|
+
using System.Collections.Generic;
|
|
4
|
+
|
|
5
|
+
public static class IterationHelpers
|
|
6
|
+
{
|
|
7
|
+
public static IEnumerable<(int, int)> IndexOver<T>(this T[,] array)
|
|
8
|
+
{
|
|
9
|
+
for (int i = 0; i < array.GetLength(0); i++)
|
|
10
|
+
{
|
|
11
|
+
for (int j = 0; j < array.GetLength(1); j++)
|
|
12
|
+
{
|
|
13
|
+
yield return (i, j);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
public static IEnumerable<(int, int, int)> IndexOver<T>(this T[,,] array)
|
|
19
|
+
{
|
|
20
|
+
for (int i = 0; i < array.GetLength(0); i++)
|
|
21
|
+
{
|
|
22
|
+
for (int j = 0; j < array.GetLength(1); j++)
|
|
23
|
+
{
|
|
24
|
+
for (int k = 0; k < array.GetLength(2); k++)
|
|
25
|
+
{
|
|
26
|
+
yield return (i, j, k);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
namespace UnityHelpers.Core.Helper
|
|
2
|
+
{
|
|
3
|
+
using Object = UnityEngine.Object;
|
|
4
|
+
|
|
5
|
+
public static class LifetimeHelpers
|
|
6
|
+
{
|
|
7
|
+
public static void Destroy<T>(this T source, float? afterTime = null) where T : Object
|
|
8
|
+
{
|
|
9
|
+
source.SmartDestroy(afterTime);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
namespace UnityHelpers.Core.Helper
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
using System.Collections;
|
|
5
|
+
using System.Runtime.CompilerServices;
|
|
6
|
+
using Object = System.Object;
|
|
7
|
+
|
|
8
|
+
public static class Objects
|
|
9
|
+
{
|
|
10
|
+
private const int HashBase = 839;
|
|
11
|
+
private const int HashMultiplier = 4021;
|
|
12
|
+
|
|
13
|
+
public static T FromWeakReference<T>(WeakReference weakReference) where T : class
|
|
14
|
+
{
|
|
15
|
+
object empty = weakReference.Target;
|
|
16
|
+
return (T)empty;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public static bool Null(UnityEngine.Object instance)
|
|
20
|
+
{
|
|
21
|
+
return instance == null;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public static bool Null(Object instance)
|
|
25
|
+
{
|
|
26
|
+
return instance == null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public static bool NotNull(UnityEngine.Object instance)
|
|
30
|
+
{
|
|
31
|
+
return instance != null;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public static bool NotNull(Object instance)
|
|
35
|
+
{
|
|
36
|
+
return instance != null;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
40
|
+
public static int NullSafeHashCode<T>(T param)
|
|
41
|
+
{
|
|
42
|
+
Type type = typeof(T);
|
|
43
|
+
if (type.IsValueType)
|
|
44
|
+
{
|
|
45
|
+
return param.GetHashCode();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return param == null ? type.GetHashCode() : param.GetHashCode();
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
52
|
+
public static int ValueTypeHashCode<T1>(T1 param1) where T1 : unmanaged
|
|
53
|
+
{
|
|
54
|
+
unchecked
|
|
55
|
+
{
|
|
56
|
+
return HashBase * HashMultiplier + param1.GetHashCode();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
61
|
+
public static int ValueTypeHashCode<T1, T2>(T1 param1, T2 param2)
|
|
62
|
+
where T1 : unmanaged
|
|
63
|
+
where T2 : unmanaged
|
|
64
|
+
{
|
|
65
|
+
unchecked
|
|
66
|
+
{
|
|
67
|
+
return ValueTypeHashCode(param1) * HashMultiplier + param2.GetHashCode();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
72
|
+
public static int ValueTypeHashCode<T1, T2, T3>(T1 param1, T2 param2, T3 param3)
|
|
73
|
+
where T1 : unmanaged where T2 : unmanaged where T3 : unmanaged
|
|
74
|
+
{
|
|
75
|
+
unchecked
|
|
76
|
+
{
|
|
77
|
+
return ValueTypeHashCode(param1, param2) * HashMultiplier + param3.GetHashCode();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
82
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4>(T1 param1, T2 param2, T3 param3, T4 param4)
|
|
83
|
+
where T1 : unmanaged
|
|
84
|
+
where T2 : unmanaged
|
|
85
|
+
where T3 : unmanaged
|
|
86
|
+
where T4 : unmanaged
|
|
87
|
+
{
|
|
88
|
+
unchecked
|
|
89
|
+
{
|
|
90
|
+
return ValueTypeHashCode(param1, param2, param3) * HashMultiplier + param4.GetHashCode();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
95
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5>(T1 param1, T2 param2, T3 param3, T4 param4, T5 param5)
|
|
96
|
+
where T1 : unmanaged
|
|
97
|
+
where T2 : unmanaged
|
|
98
|
+
where T3 : unmanaged
|
|
99
|
+
where T4 : unmanaged
|
|
100
|
+
where T5 : unmanaged
|
|
101
|
+
{
|
|
102
|
+
unchecked
|
|
103
|
+
{
|
|
104
|
+
return ValueTypeHashCode(param1, param2, param3, param4) * HashMultiplier + param5.GetHashCode();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
109
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6>(T1 param1, T2 param2, T3 param3, T4 param4,
|
|
110
|
+
T5 param5, T6 param6)
|
|
111
|
+
where T1 : unmanaged
|
|
112
|
+
where T2 : unmanaged
|
|
113
|
+
where T3 : unmanaged
|
|
114
|
+
where T4 : unmanaged
|
|
115
|
+
where T5 : unmanaged
|
|
116
|
+
where T6 : unmanaged
|
|
117
|
+
{
|
|
118
|
+
unchecked
|
|
119
|
+
{
|
|
120
|
+
return ValueTypeHashCode(param1, param2, param3, param4, param5) *
|
|
121
|
+
HashMultiplier + param6.GetHashCode();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
126
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7>(T1 param1, T2 param2, T3 param3, T4 param4,
|
|
127
|
+
T5 param5, T6 param6, T7 param7)
|
|
128
|
+
where T1 : unmanaged
|
|
129
|
+
where T2 : unmanaged
|
|
130
|
+
where T3 : unmanaged
|
|
131
|
+
where T4 : unmanaged
|
|
132
|
+
where T5 : unmanaged
|
|
133
|
+
where T6 : unmanaged
|
|
134
|
+
where T7 : unmanaged
|
|
135
|
+
{
|
|
136
|
+
unchecked
|
|
137
|
+
{
|
|
138
|
+
return ValueTypeHashCode(param1, param2, param3, param4, param5, param6) *
|
|
139
|
+
HashMultiplier + param7.GetHashCode();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
144
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8>(T1 param1, T2 param2, T3 param3, T4 param4,
|
|
145
|
+
T5 param5, T6 param6, T7 param7, T8 param8)
|
|
146
|
+
where T1 : unmanaged
|
|
147
|
+
where T2 : unmanaged
|
|
148
|
+
where T3 : unmanaged
|
|
149
|
+
where T4 : unmanaged
|
|
150
|
+
where T5 : unmanaged
|
|
151
|
+
where T6 : unmanaged
|
|
152
|
+
where T7 : unmanaged
|
|
153
|
+
where T8 : unmanaged
|
|
154
|
+
{
|
|
155
|
+
unchecked
|
|
156
|
+
{
|
|
157
|
+
return ValueTypeHashCode(param1, param2, param3, param4, param5, param6, param7) *
|
|
158
|
+
HashMultiplier + param8.GetHashCode();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
163
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9>(T1 param1, T2 param2, T3 param3, T4 param4,
|
|
164
|
+
T5 param5, T6 param6, T7 param7, T8 param8, T9 param9)
|
|
165
|
+
where T1 : unmanaged
|
|
166
|
+
where T2 : unmanaged
|
|
167
|
+
where T3 : unmanaged
|
|
168
|
+
where T4 : unmanaged
|
|
169
|
+
where T5 : unmanaged
|
|
170
|
+
where T6 : unmanaged
|
|
171
|
+
where T7 : unmanaged
|
|
172
|
+
where T8 : unmanaged
|
|
173
|
+
where T9 : unmanaged
|
|
174
|
+
{
|
|
175
|
+
unchecked
|
|
176
|
+
{
|
|
177
|
+
return ValueTypeHashCode(param1, param2, param3, param4, param5, param6, param7, param8) *
|
|
178
|
+
HashMultiplier + param9.GetHashCode();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
183
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(T1 param1, T2 param2, T3 param3, T4 param4,
|
|
184
|
+
T5 param5, T6 param6, T7 param7, T8 param8, T9 param9, T10 param10)
|
|
185
|
+
where T1 : unmanaged
|
|
186
|
+
where T2 : unmanaged
|
|
187
|
+
where T3 : unmanaged
|
|
188
|
+
where T4 : unmanaged
|
|
189
|
+
where T5 : unmanaged
|
|
190
|
+
where T6 : unmanaged
|
|
191
|
+
where T7 : unmanaged
|
|
192
|
+
where T8 : unmanaged
|
|
193
|
+
where T9 : unmanaged
|
|
194
|
+
where T10: unmanaged
|
|
195
|
+
{
|
|
196
|
+
unchecked
|
|
197
|
+
{
|
|
198
|
+
return ValueTypeHashCode(param1, param2, param3, param4, param5, param6, param7, param8, param9) *
|
|
199
|
+
HashMultiplier + param10.GetHashCode();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
204
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(T1 param1, T2 param2, T3 param3, T4 param4,
|
|
205
|
+
T5 param5, T6 param6, T7 param7, T8 param8, T9 param9, T10 param10, T11 param11)
|
|
206
|
+
where T1 : unmanaged
|
|
207
|
+
where T2 : unmanaged
|
|
208
|
+
where T3 : unmanaged
|
|
209
|
+
where T4 : unmanaged
|
|
210
|
+
where T5 : unmanaged
|
|
211
|
+
where T6 : unmanaged
|
|
212
|
+
where T7 : unmanaged
|
|
213
|
+
where T8 : unmanaged
|
|
214
|
+
where T9 : unmanaged
|
|
215
|
+
where T10 : unmanaged
|
|
216
|
+
where T11 : unmanaged
|
|
217
|
+
{
|
|
218
|
+
unchecked
|
|
219
|
+
{
|
|
220
|
+
return ValueTypeHashCode(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10) *
|
|
221
|
+
HashMultiplier + param11.GetHashCode();
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
226
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(T1 param1, T2 param2, T3 param3, T4 param4,
|
|
227
|
+
T5 param5, T6 param6, T7 param7, T8 param8, T9 param9, T10 param10, T11 param11, T12 param12)
|
|
228
|
+
where T1 : unmanaged
|
|
229
|
+
where T2 : unmanaged
|
|
230
|
+
where T3 : unmanaged
|
|
231
|
+
where T4 : unmanaged
|
|
232
|
+
where T5 : unmanaged
|
|
233
|
+
where T6 : unmanaged
|
|
234
|
+
where T7 : unmanaged
|
|
235
|
+
where T8 : unmanaged
|
|
236
|
+
where T9 : unmanaged
|
|
237
|
+
where T10 : unmanaged
|
|
238
|
+
where T11 : unmanaged
|
|
239
|
+
where T12 : unmanaged
|
|
240
|
+
{
|
|
241
|
+
unchecked
|
|
242
|
+
{
|
|
243
|
+
return ValueTypeHashCode(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11) *
|
|
244
|
+
HashMultiplier + param12.GetHashCode();
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
249
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(T1 param1, T2 param2, T3 param3, T4 param4,
|
|
250
|
+
T5 param5, T6 param6, T7 param7, T8 param8, T9 param9, T10 param10, T11 param11, T12 param12, T13 param13)
|
|
251
|
+
where T1 : unmanaged
|
|
252
|
+
where T2 : unmanaged
|
|
253
|
+
where T3 : unmanaged
|
|
254
|
+
where T4 : unmanaged
|
|
255
|
+
where T5 : unmanaged
|
|
256
|
+
where T6 : unmanaged
|
|
257
|
+
where T7 : unmanaged
|
|
258
|
+
where T8 : unmanaged
|
|
259
|
+
where T9 : unmanaged
|
|
260
|
+
where T10 : unmanaged
|
|
261
|
+
where T11 : unmanaged
|
|
262
|
+
where T12 : unmanaged
|
|
263
|
+
where T13 : unmanaged
|
|
264
|
+
{
|
|
265
|
+
unchecked
|
|
266
|
+
{
|
|
267
|
+
return ValueTypeHashCode(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12) *
|
|
268
|
+
HashMultiplier + param13.GetHashCode();
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
273
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(T1 param1, T2 param2, T3 param3, T4 param4,
|
|
274
|
+
T5 param5, T6 param6, T7 param7, T8 param8, T9 param9, T10 param10, T11 param11, T12 param12, T13 param13, T14 param14)
|
|
275
|
+
where T1 : unmanaged
|
|
276
|
+
where T2 : unmanaged
|
|
277
|
+
where T3 : unmanaged
|
|
278
|
+
where T4 : unmanaged
|
|
279
|
+
where T5 : unmanaged
|
|
280
|
+
where T6 : unmanaged
|
|
281
|
+
where T7 : unmanaged
|
|
282
|
+
where T8 : unmanaged
|
|
283
|
+
where T9 : unmanaged
|
|
284
|
+
where T10 : unmanaged
|
|
285
|
+
where T11 : unmanaged
|
|
286
|
+
where T12 : unmanaged
|
|
287
|
+
where T13 : unmanaged
|
|
288
|
+
where T14 : unmanaged
|
|
289
|
+
{
|
|
290
|
+
unchecked
|
|
291
|
+
{
|
|
292
|
+
return ValueTypeHashCode(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13) *
|
|
293
|
+
HashMultiplier + param14.GetHashCode();
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
298
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(T1 param1, T2 param2, T3 param3, T4 param4,
|
|
299
|
+
T5 param5, T6 param6, T7 param7, T8 param8, T9 param9, T10 param10, T11 param11, T12 param12, T13 param13, T14 param14, T15 param15)
|
|
300
|
+
where T1 : unmanaged
|
|
301
|
+
where T2 : unmanaged
|
|
302
|
+
where T3 : unmanaged
|
|
303
|
+
where T4 : unmanaged
|
|
304
|
+
where T5 : unmanaged
|
|
305
|
+
where T6 : unmanaged
|
|
306
|
+
where T7 : unmanaged
|
|
307
|
+
where T8 : unmanaged
|
|
308
|
+
where T9 : unmanaged
|
|
309
|
+
where T10 : unmanaged
|
|
310
|
+
where T11 : unmanaged
|
|
311
|
+
where T12 : unmanaged
|
|
312
|
+
where T13 : unmanaged
|
|
313
|
+
where T14 : unmanaged
|
|
314
|
+
where T15 : unmanaged
|
|
315
|
+
{
|
|
316
|
+
unchecked
|
|
317
|
+
{
|
|
318
|
+
return ValueTypeHashCode(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14) *
|
|
319
|
+
HashMultiplier + param15.GetHashCode();
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
324
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(T1 param1, T2 param2, T3 param3, T4 param4,
|
|
325
|
+
T5 param5, T6 param6, T7 param7, T8 param8, T9 param9, T10 param10, T11 param11, T12 param12, T13 param13, T14 param14, T15 param15, T16 param16)
|
|
326
|
+
where T1 : unmanaged
|
|
327
|
+
where T2 : unmanaged
|
|
328
|
+
where T3 : unmanaged
|
|
329
|
+
where T4 : unmanaged
|
|
330
|
+
where T5 : unmanaged
|
|
331
|
+
where T6 : unmanaged
|
|
332
|
+
where T7 : unmanaged
|
|
333
|
+
where T8 : unmanaged
|
|
334
|
+
where T9 : unmanaged
|
|
335
|
+
where T10 : unmanaged
|
|
336
|
+
where T11 : unmanaged
|
|
337
|
+
where T12 : unmanaged
|
|
338
|
+
where T13 : unmanaged
|
|
339
|
+
where T14 : unmanaged
|
|
340
|
+
where T15 : unmanaged
|
|
341
|
+
where T16 : unmanaged
|
|
342
|
+
{
|
|
343
|
+
unchecked
|
|
344
|
+
{
|
|
345
|
+
return ValueTypeHashCode(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15) *
|
|
346
|
+
HashMultiplier + param16.GetHashCode();
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
351
|
+
public static int HashCode<T1>(T1 param1)
|
|
352
|
+
{
|
|
353
|
+
unchecked
|
|
354
|
+
{
|
|
355
|
+
return HashBase * NullSafeHashCode(param1);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
360
|
+
public static int HashCode<T1, T2>(T1 param1, T2 param2)
|
|
361
|
+
{
|
|
362
|
+
unchecked
|
|
363
|
+
{
|
|
364
|
+
return HashCode(param1) * HashMultiplier + NullSafeHashCode(param2);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
369
|
+
public static int HashCode<T1, T2, T3>(T1 param1, T2 param2, T3 param3)
|
|
370
|
+
{
|
|
371
|
+
unchecked
|
|
372
|
+
{
|
|
373
|
+
return HashCode(param1, param2) * HashMultiplier + NullSafeHashCode(param3);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
378
|
+
public static int HashCode<T1, T2, T3, T4>(T1 param1, T2 param2, T3 param3, T4 param4)
|
|
379
|
+
{
|
|
380
|
+
unchecked
|
|
381
|
+
{
|
|
382
|
+
return HashCode(param1, param2, param3) * HashMultiplier + NullSafeHashCode(param4);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
387
|
+
public static int HashCode<T1, T2, T3, T4, T5>(T1 param1, T2 param2, T3 param3, T4 param4, T5 param5)
|
|
388
|
+
{
|
|
389
|
+
unchecked
|
|
390
|
+
{
|
|
391
|
+
return HashCode(param1, param2, param3, param4) * HashMultiplier + NullSafeHashCode(param5);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
396
|
+
public static int HashCode<T1, T2, T3, T4, T5, T6>(T1 param1, T2 param2, T3 param3, T4 param4, T5 param5,
|
|
397
|
+
T6 param6)
|
|
398
|
+
{
|
|
399
|
+
unchecked
|
|
400
|
+
{
|
|
401
|
+
return HashCode(param1, param2, param3, param4, param5) * HashMultiplier + NullSafeHashCode(param6);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
406
|
+
public static int HashCode<T1, T2, T3, T4, T5, T6, T7>(T1 param1, T2 param2, T3 param3, T4 param4, T5 param5,
|
|
407
|
+
T6 param6, T7 param7)
|
|
408
|
+
{
|
|
409
|
+
unchecked
|
|
410
|
+
{
|
|
411
|
+
return HashCode(param1, param2, param3, param4, param5, param6) *
|
|
412
|
+
HashMultiplier + NullSafeHashCode(param7);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
417
|
+
public static int HashCode<T1, T2, T3, T4, T5, T6, T7, T8>(T1 param1, T2 param2, T3 param3, T4 param4, T5 param5,
|
|
418
|
+
T6 param6, T7 param7, T8 param8)
|
|
419
|
+
{
|
|
420
|
+
unchecked
|
|
421
|
+
{
|
|
422
|
+
return HashCode(param1, param2, param3, param4, param5, param6, param7) *
|
|
423
|
+
HashMultiplier + NullSafeHashCode(param8);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
428
|
+
public static int EnumerableHashCode(IEnumerable enumerable)
|
|
429
|
+
{
|
|
430
|
+
if (ReferenceEquals(enumerable, null))
|
|
431
|
+
{
|
|
432
|
+
return 0;
|
|
433
|
+
}
|
|
434
|
+
unchecked
|
|
435
|
+
{
|
|
436
|
+
int hash = HashBase;
|
|
437
|
+
IEnumerator walker = enumerable.GetEnumerator();
|
|
438
|
+
while (walker.MoveNext())
|
|
439
|
+
{
|
|
440
|
+
hash = hash * HashMultiplier + NullSafeHashCode(walker.Current);
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
return hash;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
namespace UnityHelpers.Core.Helper
|
|
2
|
+
{
|
|
3
|
+
using UnityEditor;
|
|
4
|
+
using UnityEngine;
|
|
5
|
+
using Utils;
|
|
6
|
+
|
|
7
|
+
public static class SpriteHelpers
|
|
8
|
+
{
|
|
9
|
+
public static void SetSpritePivot(string fullSpritePath, Vector2 pivot)
|
|
10
|
+
{
|
|
11
|
+
#if UNITY_EDITOR
|
|
12
|
+
SetSpritePivot(AssetImporter.GetAtPath(fullSpritePath) as TextureImporter, pivot);
|
|
13
|
+
#endif
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public static void SetSpritePivot(Sprite sprite, Vector2 pivot)
|
|
17
|
+
{
|
|
18
|
+
#if UNITY_EDITOR
|
|
19
|
+
SetSpritePivot(AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(sprite)) as TextureImporter, pivot);
|
|
20
|
+
#endif
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
#if UNITY_EDITOR
|
|
24
|
+
public static void SetSpritePivot(TextureImporter textureImporter, Vector2 pivot)
|
|
25
|
+
{
|
|
26
|
+
if (textureImporter == null)
|
|
27
|
+
{
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
TextureImporterSettings textureImportSettings = new TextureImporterSettings();
|
|
32
|
+
textureImporter.ReadTextureSettings(textureImportSettings);
|
|
33
|
+
textureImportSettings.spriteAlignment = (int) SpriteAlignment.Custom;
|
|
34
|
+
textureImportSettings.wrapMode = TextureWrapMode.Clamp;
|
|
35
|
+
textureImportSettings.filterMode = FilterMode.Trilinear;
|
|
36
|
+
textureImporter.SetTextureSettings(textureImportSettings);
|
|
37
|
+
|
|
38
|
+
TextureImporterPlatformSettings importerSettings = new TextureImporterPlatformSettings
|
|
39
|
+
{
|
|
40
|
+
resizeAlgorithm = TextureResizeAlgorithm.Bilinear,
|
|
41
|
+
maxTextureSize = SetTextureImportData.RegularTextureSize,
|
|
42
|
+
textureCompression = TextureImporterCompression.Compressed,
|
|
43
|
+
format = TextureImporterFormat.Automatic
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
textureImporter.SetPlatformTextureSettings(importerSettings);
|
|
47
|
+
textureImporter.isReadable = true;
|
|
48
|
+
textureImporter.spritePivot = pivot;
|
|
49
|
+
textureImporter.SaveAndReimport();
|
|
50
|
+
}
|
|
51
|
+
#endif
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
namespace UnityHelpers.Core.Helper
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
using System.Reflection;
|
|
5
|
+
using UnityEngine;
|
|
6
|
+
|
|
7
|
+
public sealed class StringInList : PropertyAttribute
|
|
8
|
+
{
|
|
9
|
+
public delegate string[] GetStringList();
|
|
10
|
+
|
|
11
|
+
public StringInList(params string[] list)
|
|
12
|
+
{
|
|
13
|
+
List = list;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public StringInList(Type type, string methodName)
|
|
17
|
+
{
|
|
18
|
+
MethodInfo method = type.GetMethod(methodName);
|
|
19
|
+
if (method != null)
|
|
20
|
+
{
|
|
21
|
+
List = method.Invoke(null, null) as string[];
|
|
22
|
+
}
|
|
23
|
+
else
|
|
24
|
+
{
|
|
25
|
+
Debug.LogError("NO SUCH METHOD " + methodName + " FOR " + type);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public string[] List { get; private set; }
|
|
30
|
+
}
|
|
31
|
+
}
|