com.wallstop-studios.unity-helpers 2.0.0-rc57 → 2.0.0-rc58
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/.config/dotnet-tools.json +9 -9
- package/.editorconfig +184 -184
- package/.gitattributes +63 -63
- package/.github/workflows/npm-publish.yml +66 -66
- package/.pre-commit-config.yaml +21 -21
- package/Editor/AnimationCopier.cs +181 -181
- package/Editor/AnimationCopier.cs.meta +2 -2
- package/Editor/AnimationCreator.cs +253 -253
- package/Editor/AnimationCreator.cs.meta +11 -11
- package/Editor/AnimationEventEditor.cs +887 -887
- package/Editor/AnimatorControllerCopier.cs +162 -162
- package/Editor/AnimatorControllerCopier.cs.meta +2 -2
- package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs +34 -34
- package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs.meta +2 -2
- package/Editor/CustomEditors.meta +2 -2
- package/Editor/FitTextureSizeWizard.cs +147 -147
- package/Editor/FitTextureSizeWizard.cs.meta +2 -2
- package/Editor/PrefabCheckWizard.cs +170 -170
- package/Editor/PrefabCheckWizard.cs.meta +11 -11
- package/Editor/SpriteSettingsApplier.cs +272 -272
- package/Editor/SpriteSettingsApplier.cs.meta +2 -2
- package/Editor/StringInListeDrawer.cs +56 -56
- package/Editor/TextureResizerWizard.cs +181 -181
- package/Editor/TextureResizerWizard.cs.meta +2 -2
- package/Editor/TextureSettingsApplier.cs +178 -178
- package/Editor/TextureSettingsApplier.cs.meta +2 -2
- package/Editor/Utils/DxReadOnlyPropertyDrawer.cs +26 -26
- package/Editor/Utils/DxReadOnlyPropertyDrawer.cs.meta +11 -11
- package/Editor/Utils/EditorUtilities.cs +22 -22
- package/Editor/Utils/EditorUtilities.cs.meta +11 -11
- package/Editor/Utils.meta +8 -8
- package/Editor/WShowIfPropertyDrawer.cs +63 -63
- package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef +17 -17
- package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef.meta +7 -7
- package/LICENSE +21 -21
- package/LICENSE.md +6 -6
- package/LICENSE.meta +7 -7
- package/README.md +177 -177
- package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll.meta +33 -33
- package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml +223 -223
- package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml.meta +7 -7
- package/Runtime/Binaries/System.Text.Encodings.Web.dll.meta +33 -33
- package/Runtime/Binaries/System.Text.Encodings.Web.xml +935 -935
- package/Runtime/Binaries/System.Text.Encodings.Web.xml.meta +7 -7
- package/Runtime/Binaries/System.Text.Json.dll.meta +33 -33
- package/Runtime/Binaries/System.Text.Json.xml +4829 -4829
- package/Runtime/Binaries/System.Text.Json.xml.meta +7 -7
- package/Runtime/Binaries.meta +8 -8
- package/Runtime/Core/Attributes/AnimationEventAttribute.cs +131 -131
- package/Runtime/Core/Attributes/ChildComponentAttribute.cs +209 -209
- package/Runtime/Core/Attributes/DxReadOnlyAttribute.cs +6 -6
- package/Runtime/Core/Attributes/KSerializableAttribute.cs +19 -19
- package/Runtime/Core/Attributes/NotNullAttribute.cs +32 -32
- package/Runtime/Core/Attributes/ParentComponent.cs +185 -185
- package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +14 -14
- package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +117 -117
- package/Runtime/Core/Attributes/SiblingComponentAttribute.cs.meta +11 -11
- package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs +101 -101
- package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs.meta +11 -11
- package/Runtime/Core/Attributes/WShowIfAttribute.cs +16 -16
- package/Runtime/Core/Attributes.meta +8 -8
- package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs +92 -92
- package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs +185 -185
- package/Runtime/Core/DataStructure/Adapters/KGuid.cs +305 -305
- package/Runtime/Core/DataStructure/Adapters/KVector2.cs +80 -80
- package/Runtime/Core/DataStructure/Circle.cs +50 -50
- package/Runtime/Core/DataStructure/CyclicBuffer.cs +153 -153
- package/Runtime/Core/DataStructure/ISpatialTree.cs +60 -60
- package/Runtime/Core/DataStructure/ISpatialTree.cs.meta +11 -11
- package/Runtime/Core/DataStructure/KDTree.cs +292 -292
- package/Runtime/Core/DataStructure/KDTree.cs.meta +11 -11
- package/Runtime/Core/DataStructure/QuadTree.cs +287 -287
- package/Runtime/Core/DataStructure/RTree.cs +346 -346
- package/Runtime/Core/DataStructure/RTree.cs.meta +11 -11
- package/Runtime/Core/DataStructure/StringWrapper.cs +91 -91
- package/Runtime/Core/DataStructure/TimedCache.cs +66 -66
- package/Runtime/Core/Extension/AnimatorExtensions.cs +25 -25
- package/Runtime/Core/Extension/AsyncOperationExtensions.cs +110 -110
- package/Runtime/Core/Extension/CircleExtensions.cs +25 -25
- package/Runtime/Core/Extension/ColorExtensions.cs +629 -629
- package/Runtime/Core/Extension/DictionaryExtensions.cs +279 -279
- package/Runtime/Core/Extension/DirectionExtensions.cs +213 -213
- package/Runtime/Core/Extension/EnumExtensions.cs +37 -37
- package/Runtime/Core/Extension/EnumExtensions.cs.meta +2 -2
- package/Runtime/Core/Extension/HashSetExtensions.cs +12 -12
- package/Runtime/Core/Extension/IEnumerableExtensions.cs +122 -122
- package/Runtime/Core/Extension/IListExtensions.cs +106 -106
- package/Runtime/Core/Extension/LoggingExtensions.cs +258 -258
- package/Runtime/Core/Extension/RandomExtensions.cs +109 -109
- package/Runtime/Core/Extension/SerializedPropertyExtensions.cs +157 -157
- package/Runtime/Core/Extension/StringExtensions.cs +151 -151
- package/Runtime/Core/Extension/UnityExtensions.cs +1608 -1608
- package/Runtime/Core/Helper/ArrayConverter.cs +39 -39
- package/Runtime/Core/Helper/ArrayConverter.cs.meta +2 -2
- package/Runtime/Core/Helper/AssignUtilities.cs +14 -14
- package/Runtime/Core/Helper/AssignUtilities.cs.meta +11 -11
- package/Runtime/Core/Helper/Enumerables.cs +17 -17
- package/Runtime/Core/Helper/FormattingHelpers.cs +32 -32
- package/Runtime/Core/Helper/Geometry.cs +43 -43
- package/Runtime/Core/Helper/Helpers.cs +722 -722
- package/Runtime/Core/Helper/Helpers.cs.meta +11 -11
- package/Runtime/Core/Helper/IterationHelpers.cs +32 -32
- package/Runtime/Core/Helper/IterationHelpers.cs.meta +11 -11
- package/Runtime/Core/Helper/LifetimeHelpers.cs +13 -13
- package/Runtime/Core/Helper/Objects.cs +769 -769
- package/Runtime/Core/Helper/Partials/LogHelpers.cs +13 -13
- package/Runtime/Core/Helper/Partials/LogHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials/MathHelpers.cs +30 -30
- package/Runtime/Core/Helper/Partials/MathHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +388 -388
- package/Runtime/Core/Helper/Partials/ObjectHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials/TransformHelpers.cs +189 -189
- package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials.meta +2 -2
- package/Runtime/Core/Helper/ReflectionHelpers.cs +452 -452
- package/Runtime/Core/Helper/ReflectionHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/SceneHelper.cs +209 -213
- package/Runtime/Core/Helper/SpriteHelpers.cs +41 -41
- package/Runtime/Core/Helper/SpriteHelpers.cs.meta +11 -11
- package/Runtime/Core/Helper/StringInList.cs +31 -31
- package/Runtime/Core/Helper/StringInList.cs.meta +11 -11
- package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs +82 -82
- package/Runtime/Core/Helper/WallMath.cs +166 -166
- package/Runtime/Core/Math/Line.cs +55 -55
- package/Runtime/Core/Math/Parabola.cs +47 -47
- package/Runtime/Core/Math/PointPolygonCheck.cs +36 -36
- package/Runtime/Core/Math/PointPolygonCheck.cs.meta +11 -11
- package/Runtime/Core/Math/Range.cs +92 -92
- package/Runtime/Core/Math/XXHash.cs +310 -310
- package/Runtime/Core/Math/XXHash.cs.meta +11 -11
- package/Runtime/Core/Model/Direction.cs +43 -43
- package/Runtime/Core/OneOf/FastOneOf.cs +152 -152
- package/Runtime/Core/OneOf/None.cs +4 -4
- package/Runtime/Core/Random/AbstractRandom.cs +585 -585
- package/Runtime/Core/Random/DotNetRandom.cs +54 -54
- package/Runtime/Core/Random/DotNetRandom.cs.meta +2 -2
- package/Runtime/Core/Random/IRandom.cs +161 -161
- package/Runtime/Core/Random/LinearCongruentialGenerator.cs +49 -49
- package/Runtime/Core/Random/NativePcgRandom.cs +97 -97
- package/Runtime/Core/Random/PRNG.cs +7 -7
- package/Runtime/Core/Random/PRNG.cs.meta +2 -2
- package/Runtime/Core/Random/PcgRandom.cs +149 -149
- package/Runtime/Core/Random/PerlinNoise.cs +369 -369
- package/Runtime/Core/Random/PerlinNoise.cs.meta +2 -2
- package/Runtime/Core/Random/RandomState.cs +131 -131
- package/Runtime/Core/Random/RandomUtilities.cs +26 -26
- package/Runtime/Core/Random/RandomUtilities.cs.meta +11 -11
- package/Runtime/Core/Random/RomuDuo.cs +116 -116
- package/Runtime/Core/Random/RomuDuo.cs.meta +2 -2
- package/Runtime/Core/Random/SplitMix64.cs +94 -94
- package/Runtime/Core/Random/SplitMix64.cs.meta +2 -2
- package/Runtime/Core/Random/SquirrelRandom.cs +84 -84
- package/Runtime/Core/Random/SystemRandom.cs +162 -162
- package/Runtime/Core/Random/ThreadLocalRandom.cs +12 -12
- package/Runtime/Core/Random/UnityRandom.cs +57 -57
- package/Runtime/Core/Random/UnityRandom.cs.meta +11 -11
- package/Runtime/Core/Random/WyRandom.cs +121 -121
- package/Runtime/Core/Random/WyRandom.cs.meta +2 -2
- package/Runtime/Core/Random/XorShiftRandom.cs +52 -52
- package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -11
- package/Runtime/Core/Random/XorShiroRandom.cs +119 -119
- package/Runtime/Core/Random/XorShiroRandom.cs.meta +2 -2
- package/Runtime/Core/Serialization/JsonConverters/ColorConverter.cs +88 -88
- package/Runtime/Core/Serialization/JsonConverters/GameObjectConverter.cs +37 -37
- package/Runtime/Core/Serialization/JsonConverters/Matrix4x4Converter.cs +218 -218
- package/Runtime/Core/Serialization/JsonConverters/TypeConverter.cs +28 -28
- package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +74 -74
- package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +81 -81
- package/Runtime/Core/Serialization/JsonConverters/Vector4Converter.cs +88 -88
- package/Runtime/Core/Serialization/Serializer.cs +195 -195
- package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +113 -113
- package/Runtime/Protobuf-Net/System.Buffers.dll.meta +33 -33
- package/Runtime/Protobuf-Net/System.Collections.Immutable.dll.meta +33 -33
- package/Runtime/Protobuf-Net/System.Collections.Immutable.xml +5379 -5379
- package/Runtime/Protobuf-Net/System.Collections.Immutable.xml.meta +7 -7
- package/Runtime/Protobuf-Net/System.Numerics.Vectors.dll.meta +33 -33
- package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll.meta +33 -33
- package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml +290 -290
- package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml.meta +7 -7
- package/Runtime/Protobuf-Net/protobuf-net.Core.dll.meta +33 -33
- package/Runtime/Protobuf-Net/protobuf-net.dll.meta +33 -33
- package/Runtime/UI/LayeredImage.cs +364 -364
- package/Runtime/UI/LayeredImage.cs.meta +2 -2
- package/Runtime/UI.meta +2 -2
- package/Runtime/Utils/AnimationEventEqualityComparer.cs +161 -161
- package/Runtime/Utils/AnimatorEnumStateMachine.cs +88 -88
- package/Runtime/Utils/Buffers.cs +33 -33
- package/Runtime/Utils/CenterPointOffset.cs +30 -30
- package/Runtime/Utils/CenterPointOffset.cs.meta +2 -2
- package/Runtime/Utils/CircleLineRenderer.cs +134 -134
- package/Runtime/Utils/CoroutineHandler.cs +4 -4
- package/Runtime/Utils/CoroutineHandler.cs.meta +2 -2
- package/Runtime/Utils/DeferredDisposalResult.cs +23 -23
- package/Runtime/Utils/MatchColliderToSprite.cs +94 -94
- package/Runtime/Utils/MatchColliderToSprite.cs.meta +2 -2
- package/Runtime/Utils/Oscillator.cs +27 -27
- package/Runtime/Utils/RuntimeSingleton.cs +69 -69
- package/Runtime/Utils/RuntimeSingleton.cs.meta +11 -11
- package/Runtime/Utils/SetTextureImportData.cs +69 -69
- package/Runtime/Utils/SpriteRendererMetadata.cs +374 -374
- package/Runtime/Utils/SpriteRendererMetadata.cs.meta +2 -2
- package/Runtime/Utils/SpriteRendererSyncer.cs +100 -100
- package/Runtime/Utils/SpriteRendererSyncer.cs.meta +2 -2
- package/Runtime/Utils/TextureScale.cs +179 -179
- package/Runtime/Utils/TextureScale.cs.meta +2 -2
- package/Runtime/WallstopStudios.UnityHelpers.asmdef +13 -13
- package/Tests/Runtime/Attributes/ChildComponentTests.cs +81 -81
- package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs +28 -28
- package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs +28 -28
- package/Tests/Runtime/Attributes/ParentComponentTests.cs +68 -68
- package/Tests/Runtime/Components/RelationalComponentTesterComplex.cs +34 -34
- package/Tests/Runtime/Components/RelationalComponentTesterComplex.cs.meta +2 -2
- package/Tests/Runtime/Components/RelationalComponentsTesterSimple.cs +40 -40
- package/Tests/Runtime/Components.meta +2 -2
- package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs +14 -14
- package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs.meta +11 -11
- package/Tests/Runtime/DataStructures/CyclicBufferTests.cs +324 -324
- package/Tests/Runtime/DataStructures/QuadTreeTests.cs +14 -14
- package/Tests/Runtime/DataStructures/QuadTreeTests.cs.meta +11 -11
- package/Tests/Runtime/DataStructures/SpatialTreeTests.cs +130 -130
- package/Tests/Runtime/DataStructures/SpatialTreeTests.cs.meta +11 -11
- package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs +14 -14
- package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs.meta +11 -11
- package/Tests/Runtime/DataStructures.meta +8 -8
- package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs +439 -439
- package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs.meta +2 -2
- package/Tests/Runtime/Extensions/EnumExtensionTests.cs +128 -128
- package/Tests/Runtime/Extensions/EnumExtensionTests.cs.meta +2 -2
- package/Tests/Runtime/Extensions/IListExtensionTests.cs +104 -104
- package/Tests/Runtime/Extensions/RandomExtensionTests.cs +27 -27
- package/Tests/Runtime/Extensions/RandomExtensionTests.cs.meta +2 -2
- package/Tests/Runtime/Extensions/StringExtensionTests.cs +31 -31
- package/Tests/Runtime/Extensions/StringExtensionTests.cs.meta +2 -2
- package/Tests/Runtime/Extensions.meta +2 -2
- package/Tests/Runtime/Helper/ArrayConverterTests.cs +19 -19
- package/Tests/Runtime/Helper/ArrayConverterTests.cs.meta +2 -2
- package/Tests/Runtime/Helper/FormattingHelperTests.cs +129 -129
- package/Tests/Runtime/Helper/FormattingHelperTests.cs.meta +2 -2
- package/Tests/Runtime/Helper/ObjectHelperTests.cs +402 -402
- package/Tests/Runtime/Helper/ObjectHelperTests.cs.meta +2 -2
- package/Tests/Runtime/Helper/ReflectionHelperTests.cs +536 -536
- package/Tests/Runtime/Helper/SceneHelperTests.cs +94 -94
- package/Tests/Runtime/Helper/WallMathTests.cs +233 -233
- package/Tests/Runtime/Helper/WallMathTests.cs.meta +2 -2
- package/Tests/Runtime/Helper.meta +2 -2
- package/Tests/Runtime/Performance/KDTreePerformanceTests.cs +14 -14
- package/Tests/Runtime/Performance/KDTreePerformanceTests.cs.meta +11 -11
- package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs +14 -14
- package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs.meta +11 -11
- package/Tests/Runtime/Performance/RandomPerformanceTests.cs +157 -157
- package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -11
- package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +61 -61
- package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +2 -2
- package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs +154 -154
- package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs.meta +11 -11
- package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs +14 -14
- package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs.meta +11 -11
- package/Tests/Runtime/Performance.meta +8 -8
- package/Tests/Runtime/Random/DotNetRandomTests.cs +9 -9
- package/Tests/Runtime/Random/DotNetRandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random/LinearCongruentialGeneratorTests.cs +12 -12
- package/Tests/Runtime/Random/PcgRandomTests.cs +9 -9
- package/Tests/Runtime/Random/PcgRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/RandomTestBase.cs +787 -787
- package/Tests/Runtime/Random/RandomTestBase.cs.meta +11 -11
- package/Tests/Runtime/Random/RomuDuoRandomTests.cs +9 -9
- package/Tests/Runtime/Random/RomuDuoRandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random/SplitMix64RandomTests.cs +9 -9
- package/Tests/Runtime/Random/SplitMix64RandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random/SquirrelRandomTests.cs +14 -14
- package/Tests/Runtime/Random/SquirrelRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/SystemRandomTests.cs +10 -10
- package/Tests/Runtime/Random/SystemRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/UnityRandomTests.cs +9 -9
- package/Tests/Runtime/Random/UnityRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/WyRandomTests.cs +9 -9
- package/Tests/Runtime/Random/WyRandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random/XorShiftRandomTests.cs +9 -9
- package/Tests/Runtime/Random/XorShiftRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/XorShiroRandomTests.cs +9 -9
- package/Tests/Runtime/Random/XorShiroRandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random.meta +8 -8
- package/Tests/Runtime/Serialization/JsonSerializationTest.cs +156 -156
- package/Tests/Runtime/Serialization/JsonSerializationTest.cs.meta +2 -2
- package/Tests/Runtime/Serialization.meta +2 -2
- package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs +399 -399
- package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs.meta +2 -2
- package/Tests/Runtime/Utils.meta +2 -2
- package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef +22 -22
- package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef.meta +7 -7
- package/Tests/Runtime.meta +8 -8
- package/package.json +38 -38
|
@@ -1,769 +1,769 @@
|
|
|
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 = 5556137;
|
|
11
|
-
private const int HashMultiplier = 95785853;
|
|
12
|
-
|
|
13
|
-
public static T FromWeakReference<T>(WeakReference weakReference)
|
|
14
|
-
where T : class
|
|
15
|
-
{
|
|
16
|
-
object empty = weakReference.Target;
|
|
17
|
-
return (T)empty;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
21
|
-
public static bool Null<T>(T instance)
|
|
22
|
-
where T : UnityEngine.Object
|
|
23
|
-
{
|
|
24
|
-
return instance == null;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
public static bool Null(Object instance)
|
|
28
|
-
{
|
|
29
|
-
return instance == null;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
33
|
-
public static bool NotNull<T>(T instance)
|
|
34
|
-
where T : UnityEngine.Object
|
|
35
|
-
{
|
|
36
|
-
return instance != null;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
public static bool NotNull(Object instance)
|
|
40
|
-
{
|
|
41
|
-
return instance != null;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
45
|
-
public static int NullSafeHashCode<T>(T param)
|
|
46
|
-
{
|
|
47
|
-
Type type = typeof(T);
|
|
48
|
-
if (type.IsValueType)
|
|
49
|
-
{
|
|
50
|
-
return param.GetHashCode();
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return param == null ? type.GetHashCode() : param.GetHashCode();
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
57
|
-
public static int ValueTypeHashCode<T1>(T1 param1)
|
|
58
|
-
where T1 : unmanaged
|
|
59
|
-
{
|
|
60
|
-
unchecked
|
|
61
|
-
{
|
|
62
|
-
return HashBase * HashMultiplier + param1.GetHashCode();
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
67
|
-
public static int ValueTypeHashCode<T1, T2>(T1 param1, T2 param2)
|
|
68
|
-
where T1 : unmanaged
|
|
69
|
-
where T2 : unmanaged
|
|
70
|
-
{
|
|
71
|
-
unchecked
|
|
72
|
-
{
|
|
73
|
-
return ValueTypeHashCode(param1) * HashMultiplier + param2.GetHashCode();
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
78
|
-
public static int ValueTypeHashCode<T1, T2, T3>(T1 param1, T2 param2, T3 param3)
|
|
79
|
-
where T1 : unmanaged
|
|
80
|
-
where T2 : unmanaged
|
|
81
|
-
where T3 : unmanaged
|
|
82
|
-
{
|
|
83
|
-
unchecked
|
|
84
|
-
{
|
|
85
|
-
return ValueTypeHashCode(param1, param2) * HashMultiplier + param3.GetHashCode();
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
90
|
-
public static int ValueTypeHashCode<T1, T2, T3, T4>(
|
|
91
|
-
T1 param1,
|
|
92
|
-
T2 param2,
|
|
93
|
-
T3 param3,
|
|
94
|
-
T4 param4
|
|
95
|
-
)
|
|
96
|
-
where T1 : unmanaged
|
|
97
|
-
where T2 : unmanaged
|
|
98
|
-
where T3 : unmanaged
|
|
99
|
-
where T4 : unmanaged
|
|
100
|
-
{
|
|
101
|
-
unchecked
|
|
102
|
-
{
|
|
103
|
-
return ValueTypeHashCode(param1, param2, param3) * HashMultiplier
|
|
104
|
-
+ param4.GetHashCode();
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
109
|
-
public static int ValueTypeHashCode<T1, T2, T3, T4, T5>(
|
|
110
|
-
T1 param1,
|
|
111
|
-
T2 param2,
|
|
112
|
-
T3 param3,
|
|
113
|
-
T4 param4,
|
|
114
|
-
T5 param5
|
|
115
|
-
)
|
|
116
|
-
where T1 : unmanaged
|
|
117
|
-
where T2 : unmanaged
|
|
118
|
-
where T3 : unmanaged
|
|
119
|
-
where T4 : unmanaged
|
|
120
|
-
where T5 : unmanaged
|
|
121
|
-
{
|
|
122
|
-
unchecked
|
|
123
|
-
{
|
|
124
|
-
return ValueTypeHashCode(param1, param2, param3, param4) * HashMultiplier
|
|
125
|
-
+ param5.GetHashCode();
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
130
|
-
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6>(
|
|
131
|
-
T1 param1,
|
|
132
|
-
T2 param2,
|
|
133
|
-
T3 param3,
|
|
134
|
-
T4 param4,
|
|
135
|
-
T5 param5,
|
|
136
|
-
T6 param6
|
|
137
|
-
)
|
|
138
|
-
where T1 : unmanaged
|
|
139
|
-
where T2 : unmanaged
|
|
140
|
-
where T3 : unmanaged
|
|
141
|
-
where T4 : unmanaged
|
|
142
|
-
where T5 : unmanaged
|
|
143
|
-
where T6 : unmanaged
|
|
144
|
-
{
|
|
145
|
-
unchecked
|
|
146
|
-
{
|
|
147
|
-
return ValueTypeHashCode(param1, param2, param3, param4, param5) * HashMultiplier
|
|
148
|
-
+ param6.GetHashCode();
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
153
|
-
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7>(
|
|
154
|
-
T1 param1,
|
|
155
|
-
T2 param2,
|
|
156
|
-
T3 param3,
|
|
157
|
-
T4 param4,
|
|
158
|
-
T5 param5,
|
|
159
|
-
T6 param6,
|
|
160
|
-
T7 param7
|
|
161
|
-
)
|
|
162
|
-
where T1 : unmanaged
|
|
163
|
-
where T2 : unmanaged
|
|
164
|
-
where T3 : unmanaged
|
|
165
|
-
where T4 : unmanaged
|
|
166
|
-
where T5 : unmanaged
|
|
167
|
-
where T6 : unmanaged
|
|
168
|
-
where T7 : unmanaged
|
|
169
|
-
{
|
|
170
|
-
unchecked
|
|
171
|
-
{
|
|
172
|
-
return ValueTypeHashCode(param1, param2, param3, param4, param5, param6)
|
|
173
|
-
* HashMultiplier
|
|
174
|
-
+ param7.GetHashCode();
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
179
|
-
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8>(
|
|
180
|
-
T1 param1,
|
|
181
|
-
T2 param2,
|
|
182
|
-
T3 param3,
|
|
183
|
-
T4 param4,
|
|
184
|
-
T5 param5,
|
|
185
|
-
T6 param6,
|
|
186
|
-
T7 param7,
|
|
187
|
-
T8 param8
|
|
188
|
-
)
|
|
189
|
-
where T1 : unmanaged
|
|
190
|
-
where T2 : unmanaged
|
|
191
|
-
where T3 : unmanaged
|
|
192
|
-
where T4 : unmanaged
|
|
193
|
-
where T5 : unmanaged
|
|
194
|
-
where T6 : unmanaged
|
|
195
|
-
where T7 : unmanaged
|
|
196
|
-
where T8 : unmanaged
|
|
197
|
-
{
|
|
198
|
-
unchecked
|
|
199
|
-
{
|
|
200
|
-
return ValueTypeHashCode(param1, param2, param3, param4, param5, param6, param7)
|
|
201
|
-
* HashMultiplier
|
|
202
|
-
+ param8.GetHashCode();
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
207
|
-
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
|
|
208
|
-
T1 param1,
|
|
209
|
-
T2 param2,
|
|
210
|
-
T3 param3,
|
|
211
|
-
T4 param4,
|
|
212
|
-
T5 param5,
|
|
213
|
-
T6 param6,
|
|
214
|
-
T7 param7,
|
|
215
|
-
T8 param8,
|
|
216
|
-
T9 param9
|
|
217
|
-
)
|
|
218
|
-
where T1 : unmanaged
|
|
219
|
-
where T2 : unmanaged
|
|
220
|
-
where T3 : unmanaged
|
|
221
|
-
where T4 : unmanaged
|
|
222
|
-
where T5 : unmanaged
|
|
223
|
-
where T6 : unmanaged
|
|
224
|
-
where T7 : unmanaged
|
|
225
|
-
where T8 : unmanaged
|
|
226
|
-
where T9 : unmanaged
|
|
227
|
-
{
|
|
228
|
-
unchecked
|
|
229
|
-
{
|
|
230
|
-
return ValueTypeHashCode(
|
|
231
|
-
param1,
|
|
232
|
-
param2,
|
|
233
|
-
param3,
|
|
234
|
-
param4,
|
|
235
|
-
param5,
|
|
236
|
-
param6,
|
|
237
|
-
param7,
|
|
238
|
-
param8
|
|
239
|
-
) * HashMultiplier
|
|
240
|
-
+ param9.GetHashCode();
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
245
|
-
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(
|
|
246
|
-
T1 param1,
|
|
247
|
-
T2 param2,
|
|
248
|
-
T3 param3,
|
|
249
|
-
T4 param4,
|
|
250
|
-
T5 param5,
|
|
251
|
-
T6 param6,
|
|
252
|
-
T7 param7,
|
|
253
|
-
T8 param8,
|
|
254
|
-
T9 param9,
|
|
255
|
-
T10 param10
|
|
256
|
-
)
|
|
257
|
-
where T1 : unmanaged
|
|
258
|
-
where T2 : unmanaged
|
|
259
|
-
where T3 : unmanaged
|
|
260
|
-
where T4 : unmanaged
|
|
261
|
-
where T5 : unmanaged
|
|
262
|
-
where T6 : unmanaged
|
|
263
|
-
where T7 : unmanaged
|
|
264
|
-
where T8 : unmanaged
|
|
265
|
-
where T9 : unmanaged
|
|
266
|
-
where T10 : unmanaged
|
|
267
|
-
{
|
|
268
|
-
unchecked
|
|
269
|
-
{
|
|
270
|
-
return ValueTypeHashCode(
|
|
271
|
-
param1,
|
|
272
|
-
param2,
|
|
273
|
-
param3,
|
|
274
|
-
param4,
|
|
275
|
-
param5,
|
|
276
|
-
param6,
|
|
277
|
-
param7,
|
|
278
|
-
param8,
|
|
279
|
-
param9
|
|
280
|
-
) * HashMultiplier
|
|
281
|
-
+ param10.GetHashCode();
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
286
|
-
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(
|
|
287
|
-
T1 param1,
|
|
288
|
-
T2 param2,
|
|
289
|
-
T3 param3,
|
|
290
|
-
T4 param4,
|
|
291
|
-
T5 param5,
|
|
292
|
-
T6 param6,
|
|
293
|
-
T7 param7,
|
|
294
|
-
T8 param8,
|
|
295
|
-
T9 param9,
|
|
296
|
-
T10 param10,
|
|
297
|
-
T11 param11
|
|
298
|
-
)
|
|
299
|
-
where T1 : unmanaged
|
|
300
|
-
where T2 : unmanaged
|
|
301
|
-
where T3 : unmanaged
|
|
302
|
-
where T4 : unmanaged
|
|
303
|
-
where T5 : unmanaged
|
|
304
|
-
where T6 : unmanaged
|
|
305
|
-
where T7 : unmanaged
|
|
306
|
-
where T8 : unmanaged
|
|
307
|
-
where T9 : unmanaged
|
|
308
|
-
where T10 : unmanaged
|
|
309
|
-
where T11 : unmanaged
|
|
310
|
-
{
|
|
311
|
-
unchecked
|
|
312
|
-
{
|
|
313
|
-
return ValueTypeHashCode(
|
|
314
|
-
param1,
|
|
315
|
-
param2,
|
|
316
|
-
param3,
|
|
317
|
-
param4,
|
|
318
|
-
param5,
|
|
319
|
-
param6,
|
|
320
|
-
param7,
|
|
321
|
-
param8,
|
|
322
|
-
param9,
|
|
323
|
-
param10
|
|
324
|
-
) * HashMultiplier
|
|
325
|
-
+ param11.GetHashCode();
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
330
|
-
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(
|
|
331
|
-
T1 param1,
|
|
332
|
-
T2 param2,
|
|
333
|
-
T3 param3,
|
|
334
|
-
T4 param4,
|
|
335
|
-
T5 param5,
|
|
336
|
-
T6 param6,
|
|
337
|
-
T7 param7,
|
|
338
|
-
T8 param8,
|
|
339
|
-
T9 param9,
|
|
340
|
-
T10 param10,
|
|
341
|
-
T11 param11,
|
|
342
|
-
T12 param12
|
|
343
|
-
)
|
|
344
|
-
where T1 : unmanaged
|
|
345
|
-
where T2 : unmanaged
|
|
346
|
-
where T3 : unmanaged
|
|
347
|
-
where T4 : unmanaged
|
|
348
|
-
where T5 : unmanaged
|
|
349
|
-
where T6 : unmanaged
|
|
350
|
-
where T7 : unmanaged
|
|
351
|
-
where T8 : unmanaged
|
|
352
|
-
where T9 : unmanaged
|
|
353
|
-
where T10 : unmanaged
|
|
354
|
-
where T11 : unmanaged
|
|
355
|
-
where T12 : unmanaged
|
|
356
|
-
{
|
|
357
|
-
unchecked
|
|
358
|
-
{
|
|
359
|
-
return ValueTypeHashCode(
|
|
360
|
-
param1,
|
|
361
|
-
param2,
|
|
362
|
-
param3,
|
|
363
|
-
param4,
|
|
364
|
-
param5,
|
|
365
|
-
param6,
|
|
366
|
-
param7,
|
|
367
|
-
param8,
|
|
368
|
-
param9,
|
|
369
|
-
param10,
|
|
370
|
-
param11
|
|
371
|
-
) * HashMultiplier
|
|
372
|
-
+ param12.GetHashCode();
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
377
|
-
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(
|
|
378
|
-
T1 param1,
|
|
379
|
-
T2 param2,
|
|
380
|
-
T3 param3,
|
|
381
|
-
T4 param4,
|
|
382
|
-
T5 param5,
|
|
383
|
-
T6 param6,
|
|
384
|
-
T7 param7,
|
|
385
|
-
T8 param8,
|
|
386
|
-
T9 param9,
|
|
387
|
-
T10 param10,
|
|
388
|
-
T11 param11,
|
|
389
|
-
T12 param12,
|
|
390
|
-
T13 param13
|
|
391
|
-
)
|
|
392
|
-
where T1 : unmanaged
|
|
393
|
-
where T2 : unmanaged
|
|
394
|
-
where T3 : unmanaged
|
|
395
|
-
where T4 : unmanaged
|
|
396
|
-
where T5 : unmanaged
|
|
397
|
-
where T6 : unmanaged
|
|
398
|
-
where T7 : unmanaged
|
|
399
|
-
where T8 : unmanaged
|
|
400
|
-
where T9 : unmanaged
|
|
401
|
-
where T10 : unmanaged
|
|
402
|
-
where T11 : unmanaged
|
|
403
|
-
where T12 : unmanaged
|
|
404
|
-
where T13 : unmanaged
|
|
405
|
-
{
|
|
406
|
-
unchecked
|
|
407
|
-
{
|
|
408
|
-
return ValueTypeHashCode(
|
|
409
|
-
param1,
|
|
410
|
-
param2,
|
|
411
|
-
param3,
|
|
412
|
-
param4,
|
|
413
|
-
param5,
|
|
414
|
-
param6,
|
|
415
|
-
param7,
|
|
416
|
-
param8,
|
|
417
|
-
param9,
|
|
418
|
-
param10,
|
|
419
|
-
param11,
|
|
420
|
-
param12
|
|
421
|
-
) * HashMultiplier
|
|
422
|
-
+ param13.GetHashCode();
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
427
|
-
public static int ValueTypeHashCode<
|
|
428
|
-
T1,
|
|
429
|
-
T2,
|
|
430
|
-
T3,
|
|
431
|
-
T4,
|
|
432
|
-
T5,
|
|
433
|
-
T6,
|
|
434
|
-
T7,
|
|
435
|
-
T8,
|
|
436
|
-
T9,
|
|
437
|
-
T10,
|
|
438
|
-
T11,
|
|
439
|
-
T12,
|
|
440
|
-
T13,
|
|
441
|
-
T14
|
|
442
|
-
>(
|
|
443
|
-
T1 param1,
|
|
444
|
-
T2 param2,
|
|
445
|
-
T3 param3,
|
|
446
|
-
T4 param4,
|
|
447
|
-
T5 param5,
|
|
448
|
-
T6 param6,
|
|
449
|
-
T7 param7,
|
|
450
|
-
T8 param8,
|
|
451
|
-
T9 param9,
|
|
452
|
-
T10 param10,
|
|
453
|
-
T11 param11,
|
|
454
|
-
T12 param12,
|
|
455
|
-
T13 param13,
|
|
456
|
-
T14 param14
|
|
457
|
-
)
|
|
458
|
-
where T1 : unmanaged
|
|
459
|
-
where T2 : unmanaged
|
|
460
|
-
where T3 : unmanaged
|
|
461
|
-
where T4 : unmanaged
|
|
462
|
-
where T5 : unmanaged
|
|
463
|
-
where T6 : unmanaged
|
|
464
|
-
where T7 : unmanaged
|
|
465
|
-
where T8 : unmanaged
|
|
466
|
-
where T9 : unmanaged
|
|
467
|
-
where T10 : unmanaged
|
|
468
|
-
where T11 : unmanaged
|
|
469
|
-
where T12 : unmanaged
|
|
470
|
-
where T13 : unmanaged
|
|
471
|
-
where T14 : unmanaged
|
|
472
|
-
{
|
|
473
|
-
unchecked
|
|
474
|
-
{
|
|
475
|
-
return ValueTypeHashCode(
|
|
476
|
-
param1,
|
|
477
|
-
param2,
|
|
478
|
-
param3,
|
|
479
|
-
param4,
|
|
480
|
-
param5,
|
|
481
|
-
param6,
|
|
482
|
-
param7,
|
|
483
|
-
param8,
|
|
484
|
-
param9,
|
|
485
|
-
param10,
|
|
486
|
-
param11,
|
|
487
|
-
param12,
|
|
488
|
-
param13
|
|
489
|
-
) * HashMultiplier
|
|
490
|
-
+ param14.GetHashCode();
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
495
|
-
public static int ValueTypeHashCode<
|
|
496
|
-
T1,
|
|
497
|
-
T2,
|
|
498
|
-
T3,
|
|
499
|
-
T4,
|
|
500
|
-
T5,
|
|
501
|
-
T6,
|
|
502
|
-
T7,
|
|
503
|
-
T8,
|
|
504
|
-
T9,
|
|
505
|
-
T10,
|
|
506
|
-
T11,
|
|
507
|
-
T12,
|
|
508
|
-
T13,
|
|
509
|
-
T14,
|
|
510
|
-
T15
|
|
511
|
-
>(
|
|
512
|
-
T1 param1,
|
|
513
|
-
T2 param2,
|
|
514
|
-
T3 param3,
|
|
515
|
-
T4 param4,
|
|
516
|
-
T5 param5,
|
|
517
|
-
T6 param6,
|
|
518
|
-
T7 param7,
|
|
519
|
-
T8 param8,
|
|
520
|
-
T9 param9,
|
|
521
|
-
T10 param10,
|
|
522
|
-
T11 param11,
|
|
523
|
-
T12 param12,
|
|
524
|
-
T13 param13,
|
|
525
|
-
T14 param14,
|
|
526
|
-
T15 param15
|
|
527
|
-
)
|
|
528
|
-
where T1 : unmanaged
|
|
529
|
-
where T2 : unmanaged
|
|
530
|
-
where T3 : unmanaged
|
|
531
|
-
where T4 : unmanaged
|
|
532
|
-
where T5 : unmanaged
|
|
533
|
-
where T6 : unmanaged
|
|
534
|
-
where T7 : unmanaged
|
|
535
|
-
where T8 : unmanaged
|
|
536
|
-
where T9 : unmanaged
|
|
537
|
-
where T10 : unmanaged
|
|
538
|
-
where T11 : unmanaged
|
|
539
|
-
where T12 : unmanaged
|
|
540
|
-
where T13 : unmanaged
|
|
541
|
-
where T14 : unmanaged
|
|
542
|
-
where T15 : unmanaged
|
|
543
|
-
{
|
|
544
|
-
unchecked
|
|
545
|
-
{
|
|
546
|
-
return ValueTypeHashCode(
|
|
547
|
-
param1,
|
|
548
|
-
param2,
|
|
549
|
-
param3,
|
|
550
|
-
param4,
|
|
551
|
-
param5,
|
|
552
|
-
param6,
|
|
553
|
-
param7,
|
|
554
|
-
param8,
|
|
555
|
-
param9,
|
|
556
|
-
param10,
|
|
557
|
-
param11,
|
|
558
|
-
param12,
|
|
559
|
-
param13,
|
|
560
|
-
param14
|
|
561
|
-
) * HashMultiplier
|
|
562
|
-
+ param15.GetHashCode();
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
|
|
566
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
567
|
-
public static int ValueTypeHashCode<
|
|
568
|
-
T1,
|
|
569
|
-
T2,
|
|
570
|
-
T3,
|
|
571
|
-
T4,
|
|
572
|
-
T5,
|
|
573
|
-
T6,
|
|
574
|
-
T7,
|
|
575
|
-
T8,
|
|
576
|
-
T9,
|
|
577
|
-
T10,
|
|
578
|
-
T11,
|
|
579
|
-
T12,
|
|
580
|
-
T13,
|
|
581
|
-
T14,
|
|
582
|
-
T15,
|
|
583
|
-
T16
|
|
584
|
-
>(
|
|
585
|
-
T1 param1,
|
|
586
|
-
T2 param2,
|
|
587
|
-
T3 param3,
|
|
588
|
-
T4 param4,
|
|
589
|
-
T5 param5,
|
|
590
|
-
T6 param6,
|
|
591
|
-
T7 param7,
|
|
592
|
-
T8 param8,
|
|
593
|
-
T9 param9,
|
|
594
|
-
T10 param10,
|
|
595
|
-
T11 param11,
|
|
596
|
-
T12 param12,
|
|
597
|
-
T13 param13,
|
|
598
|
-
T14 param14,
|
|
599
|
-
T15 param15,
|
|
600
|
-
T16 param16
|
|
601
|
-
)
|
|
602
|
-
where T1 : unmanaged
|
|
603
|
-
where T2 : unmanaged
|
|
604
|
-
where T3 : unmanaged
|
|
605
|
-
where T4 : unmanaged
|
|
606
|
-
where T5 : unmanaged
|
|
607
|
-
where T6 : unmanaged
|
|
608
|
-
where T7 : unmanaged
|
|
609
|
-
where T8 : unmanaged
|
|
610
|
-
where T9 : unmanaged
|
|
611
|
-
where T10 : unmanaged
|
|
612
|
-
where T11 : unmanaged
|
|
613
|
-
where T12 : unmanaged
|
|
614
|
-
where T13 : unmanaged
|
|
615
|
-
where T14 : unmanaged
|
|
616
|
-
where T15 : unmanaged
|
|
617
|
-
where T16 : unmanaged
|
|
618
|
-
{
|
|
619
|
-
unchecked
|
|
620
|
-
{
|
|
621
|
-
return ValueTypeHashCode(
|
|
622
|
-
param1,
|
|
623
|
-
param2,
|
|
624
|
-
param3,
|
|
625
|
-
param4,
|
|
626
|
-
param5,
|
|
627
|
-
param6,
|
|
628
|
-
param7,
|
|
629
|
-
param8,
|
|
630
|
-
param9,
|
|
631
|
-
param10,
|
|
632
|
-
param11,
|
|
633
|
-
param12,
|
|
634
|
-
param13,
|
|
635
|
-
param14,
|
|
636
|
-
param15
|
|
637
|
-
) * HashMultiplier
|
|
638
|
-
+ param16.GetHashCode();
|
|
639
|
-
}
|
|
640
|
-
}
|
|
641
|
-
|
|
642
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
643
|
-
public static int HashCode<T1>(T1 param1)
|
|
644
|
-
{
|
|
645
|
-
unchecked
|
|
646
|
-
{
|
|
647
|
-
return HashBase * NullSafeHashCode(param1);
|
|
648
|
-
}
|
|
649
|
-
}
|
|
650
|
-
|
|
651
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
652
|
-
public static int HashCode<T1, T2>(T1 param1, T2 param2)
|
|
653
|
-
{
|
|
654
|
-
unchecked
|
|
655
|
-
{
|
|
656
|
-
return HashCode(param1) * HashMultiplier + NullSafeHashCode(param2);
|
|
657
|
-
}
|
|
658
|
-
}
|
|
659
|
-
|
|
660
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
661
|
-
public static int HashCode<T1, T2, T3>(T1 param1, T2 param2, T3 param3)
|
|
662
|
-
{
|
|
663
|
-
unchecked
|
|
664
|
-
{
|
|
665
|
-
return HashCode(param1, param2) * HashMultiplier + NullSafeHashCode(param3);
|
|
666
|
-
}
|
|
667
|
-
}
|
|
668
|
-
|
|
669
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
670
|
-
public static int HashCode<T1, T2, T3, T4>(T1 param1, T2 param2, T3 param3, T4 param4)
|
|
671
|
-
{
|
|
672
|
-
unchecked
|
|
673
|
-
{
|
|
674
|
-
return HashCode(param1, param2, param3) * HashMultiplier + NullSafeHashCode(param4);
|
|
675
|
-
}
|
|
676
|
-
}
|
|
677
|
-
|
|
678
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
679
|
-
public static int HashCode<T1, T2, T3, T4, T5>(
|
|
680
|
-
T1 param1,
|
|
681
|
-
T2 param2,
|
|
682
|
-
T3 param3,
|
|
683
|
-
T4 param4,
|
|
684
|
-
T5 param5
|
|
685
|
-
)
|
|
686
|
-
{
|
|
687
|
-
unchecked
|
|
688
|
-
{
|
|
689
|
-
return HashCode(param1, param2, param3, param4) * HashMultiplier
|
|
690
|
-
+ NullSafeHashCode(param5);
|
|
691
|
-
}
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
695
|
-
public static int HashCode<T1, T2, T3, T4, T5, T6>(
|
|
696
|
-
T1 param1,
|
|
697
|
-
T2 param2,
|
|
698
|
-
T3 param3,
|
|
699
|
-
T4 param4,
|
|
700
|
-
T5 param5,
|
|
701
|
-
T6 param6
|
|
702
|
-
)
|
|
703
|
-
{
|
|
704
|
-
unchecked
|
|
705
|
-
{
|
|
706
|
-
return HashCode(param1, param2, param3, param4, param5) * HashMultiplier
|
|
707
|
-
+ NullSafeHashCode(param6);
|
|
708
|
-
}
|
|
709
|
-
}
|
|
710
|
-
|
|
711
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
712
|
-
public static int HashCode<T1, T2, T3, T4, T5, T6, T7>(
|
|
713
|
-
T1 param1,
|
|
714
|
-
T2 param2,
|
|
715
|
-
T3 param3,
|
|
716
|
-
T4 param4,
|
|
717
|
-
T5 param5,
|
|
718
|
-
T6 param6,
|
|
719
|
-
T7 param7
|
|
720
|
-
)
|
|
721
|
-
{
|
|
722
|
-
unchecked
|
|
723
|
-
{
|
|
724
|
-
return HashCode(param1, param2, param3, param4, param5, param6) * HashMultiplier
|
|
725
|
-
+ NullSafeHashCode(param7);
|
|
726
|
-
}
|
|
727
|
-
}
|
|
728
|
-
|
|
729
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
730
|
-
public static int HashCode<T1, T2, T3, T4, T5, T6, T7, T8>(
|
|
731
|
-
T1 param1,
|
|
732
|
-
T2 param2,
|
|
733
|
-
T3 param3,
|
|
734
|
-
T4 param4,
|
|
735
|
-
T5 param5,
|
|
736
|
-
T6 param6,
|
|
737
|
-
T7 param7,
|
|
738
|
-
T8 param8
|
|
739
|
-
)
|
|
740
|
-
{
|
|
741
|
-
unchecked
|
|
742
|
-
{
|
|
743
|
-
return HashCode(param1, param2, param3, param4, param5, param6, param7)
|
|
744
|
-
* HashMultiplier
|
|
745
|
-
+ NullSafeHashCode(param8);
|
|
746
|
-
}
|
|
747
|
-
}
|
|
748
|
-
|
|
749
|
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
750
|
-
public static int EnumerableHashCode(IEnumerable enumerable)
|
|
751
|
-
{
|
|
752
|
-
if (ReferenceEquals(enumerable, null))
|
|
753
|
-
{
|
|
754
|
-
return 0;
|
|
755
|
-
}
|
|
756
|
-
unchecked
|
|
757
|
-
{
|
|
758
|
-
int hash = HashBase;
|
|
759
|
-
IEnumerator walker = enumerable.GetEnumerator();
|
|
760
|
-
while (walker.MoveNext())
|
|
761
|
-
{
|
|
762
|
-
hash = hash * HashMultiplier + NullSafeHashCode(walker.Current);
|
|
763
|
-
}
|
|
764
|
-
|
|
765
|
-
return hash;
|
|
766
|
-
}
|
|
767
|
-
}
|
|
768
|
-
}
|
|
769
|
-
}
|
|
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 = 5556137;
|
|
11
|
+
private const int HashMultiplier = 95785853;
|
|
12
|
+
|
|
13
|
+
public static T FromWeakReference<T>(WeakReference weakReference)
|
|
14
|
+
where T : class
|
|
15
|
+
{
|
|
16
|
+
object empty = weakReference.Target;
|
|
17
|
+
return (T)empty;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
21
|
+
public static bool Null<T>(T instance)
|
|
22
|
+
where T : UnityEngine.Object
|
|
23
|
+
{
|
|
24
|
+
return instance == null;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public static bool Null(Object instance)
|
|
28
|
+
{
|
|
29
|
+
return instance == null;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
33
|
+
public static bool NotNull<T>(T instance)
|
|
34
|
+
where T : UnityEngine.Object
|
|
35
|
+
{
|
|
36
|
+
return instance != null;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public static bool NotNull(Object instance)
|
|
40
|
+
{
|
|
41
|
+
return instance != null;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
45
|
+
public static int NullSafeHashCode<T>(T param)
|
|
46
|
+
{
|
|
47
|
+
Type type = typeof(T);
|
|
48
|
+
if (type.IsValueType)
|
|
49
|
+
{
|
|
50
|
+
return param.GetHashCode();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return param == null ? type.GetHashCode() : param.GetHashCode();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
57
|
+
public static int ValueTypeHashCode<T1>(T1 param1)
|
|
58
|
+
where T1 : unmanaged
|
|
59
|
+
{
|
|
60
|
+
unchecked
|
|
61
|
+
{
|
|
62
|
+
return HashBase * HashMultiplier + param1.GetHashCode();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
67
|
+
public static int ValueTypeHashCode<T1, T2>(T1 param1, T2 param2)
|
|
68
|
+
where T1 : unmanaged
|
|
69
|
+
where T2 : unmanaged
|
|
70
|
+
{
|
|
71
|
+
unchecked
|
|
72
|
+
{
|
|
73
|
+
return ValueTypeHashCode(param1) * HashMultiplier + param2.GetHashCode();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
78
|
+
public static int ValueTypeHashCode<T1, T2, T3>(T1 param1, T2 param2, T3 param3)
|
|
79
|
+
where T1 : unmanaged
|
|
80
|
+
where T2 : unmanaged
|
|
81
|
+
where T3 : unmanaged
|
|
82
|
+
{
|
|
83
|
+
unchecked
|
|
84
|
+
{
|
|
85
|
+
return ValueTypeHashCode(param1, param2) * HashMultiplier + param3.GetHashCode();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
90
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4>(
|
|
91
|
+
T1 param1,
|
|
92
|
+
T2 param2,
|
|
93
|
+
T3 param3,
|
|
94
|
+
T4 param4
|
|
95
|
+
)
|
|
96
|
+
where T1 : unmanaged
|
|
97
|
+
where T2 : unmanaged
|
|
98
|
+
where T3 : unmanaged
|
|
99
|
+
where T4 : unmanaged
|
|
100
|
+
{
|
|
101
|
+
unchecked
|
|
102
|
+
{
|
|
103
|
+
return ValueTypeHashCode(param1, param2, param3) * HashMultiplier
|
|
104
|
+
+ param4.GetHashCode();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
109
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5>(
|
|
110
|
+
T1 param1,
|
|
111
|
+
T2 param2,
|
|
112
|
+
T3 param3,
|
|
113
|
+
T4 param4,
|
|
114
|
+
T5 param5
|
|
115
|
+
)
|
|
116
|
+
where T1 : unmanaged
|
|
117
|
+
where T2 : unmanaged
|
|
118
|
+
where T3 : unmanaged
|
|
119
|
+
where T4 : unmanaged
|
|
120
|
+
where T5 : unmanaged
|
|
121
|
+
{
|
|
122
|
+
unchecked
|
|
123
|
+
{
|
|
124
|
+
return ValueTypeHashCode(param1, param2, param3, param4) * HashMultiplier
|
|
125
|
+
+ param5.GetHashCode();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
130
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6>(
|
|
131
|
+
T1 param1,
|
|
132
|
+
T2 param2,
|
|
133
|
+
T3 param3,
|
|
134
|
+
T4 param4,
|
|
135
|
+
T5 param5,
|
|
136
|
+
T6 param6
|
|
137
|
+
)
|
|
138
|
+
where T1 : unmanaged
|
|
139
|
+
where T2 : unmanaged
|
|
140
|
+
where T3 : unmanaged
|
|
141
|
+
where T4 : unmanaged
|
|
142
|
+
where T5 : unmanaged
|
|
143
|
+
where T6 : unmanaged
|
|
144
|
+
{
|
|
145
|
+
unchecked
|
|
146
|
+
{
|
|
147
|
+
return ValueTypeHashCode(param1, param2, param3, param4, param5) * HashMultiplier
|
|
148
|
+
+ param6.GetHashCode();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
153
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7>(
|
|
154
|
+
T1 param1,
|
|
155
|
+
T2 param2,
|
|
156
|
+
T3 param3,
|
|
157
|
+
T4 param4,
|
|
158
|
+
T5 param5,
|
|
159
|
+
T6 param6,
|
|
160
|
+
T7 param7
|
|
161
|
+
)
|
|
162
|
+
where T1 : unmanaged
|
|
163
|
+
where T2 : unmanaged
|
|
164
|
+
where T3 : unmanaged
|
|
165
|
+
where T4 : unmanaged
|
|
166
|
+
where T5 : unmanaged
|
|
167
|
+
where T6 : unmanaged
|
|
168
|
+
where T7 : unmanaged
|
|
169
|
+
{
|
|
170
|
+
unchecked
|
|
171
|
+
{
|
|
172
|
+
return ValueTypeHashCode(param1, param2, param3, param4, param5, param6)
|
|
173
|
+
* HashMultiplier
|
|
174
|
+
+ param7.GetHashCode();
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
179
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8>(
|
|
180
|
+
T1 param1,
|
|
181
|
+
T2 param2,
|
|
182
|
+
T3 param3,
|
|
183
|
+
T4 param4,
|
|
184
|
+
T5 param5,
|
|
185
|
+
T6 param6,
|
|
186
|
+
T7 param7,
|
|
187
|
+
T8 param8
|
|
188
|
+
)
|
|
189
|
+
where T1 : unmanaged
|
|
190
|
+
where T2 : unmanaged
|
|
191
|
+
where T3 : unmanaged
|
|
192
|
+
where T4 : unmanaged
|
|
193
|
+
where T5 : unmanaged
|
|
194
|
+
where T6 : unmanaged
|
|
195
|
+
where T7 : unmanaged
|
|
196
|
+
where T8 : unmanaged
|
|
197
|
+
{
|
|
198
|
+
unchecked
|
|
199
|
+
{
|
|
200
|
+
return ValueTypeHashCode(param1, param2, param3, param4, param5, param6, param7)
|
|
201
|
+
* HashMultiplier
|
|
202
|
+
+ param8.GetHashCode();
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
207
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
|
|
208
|
+
T1 param1,
|
|
209
|
+
T2 param2,
|
|
210
|
+
T3 param3,
|
|
211
|
+
T4 param4,
|
|
212
|
+
T5 param5,
|
|
213
|
+
T6 param6,
|
|
214
|
+
T7 param7,
|
|
215
|
+
T8 param8,
|
|
216
|
+
T9 param9
|
|
217
|
+
)
|
|
218
|
+
where T1 : unmanaged
|
|
219
|
+
where T2 : unmanaged
|
|
220
|
+
where T3 : unmanaged
|
|
221
|
+
where T4 : unmanaged
|
|
222
|
+
where T5 : unmanaged
|
|
223
|
+
where T6 : unmanaged
|
|
224
|
+
where T7 : unmanaged
|
|
225
|
+
where T8 : unmanaged
|
|
226
|
+
where T9 : unmanaged
|
|
227
|
+
{
|
|
228
|
+
unchecked
|
|
229
|
+
{
|
|
230
|
+
return ValueTypeHashCode(
|
|
231
|
+
param1,
|
|
232
|
+
param2,
|
|
233
|
+
param3,
|
|
234
|
+
param4,
|
|
235
|
+
param5,
|
|
236
|
+
param6,
|
|
237
|
+
param7,
|
|
238
|
+
param8
|
|
239
|
+
) * HashMultiplier
|
|
240
|
+
+ param9.GetHashCode();
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
245
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(
|
|
246
|
+
T1 param1,
|
|
247
|
+
T2 param2,
|
|
248
|
+
T3 param3,
|
|
249
|
+
T4 param4,
|
|
250
|
+
T5 param5,
|
|
251
|
+
T6 param6,
|
|
252
|
+
T7 param7,
|
|
253
|
+
T8 param8,
|
|
254
|
+
T9 param9,
|
|
255
|
+
T10 param10
|
|
256
|
+
)
|
|
257
|
+
where T1 : unmanaged
|
|
258
|
+
where T2 : unmanaged
|
|
259
|
+
where T3 : unmanaged
|
|
260
|
+
where T4 : unmanaged
|
|
261
|
+
where T5 : unmanaged
|
|
262
|
+
where T6 : unmanaged
|
|
263
|
+
where T7 : unmanaged
|
|
264
|
+
where T8 : unmanaged
|
|
265
|
+
where T9 : unmanaged
|
|
266
|
+
where T10 : unmanaged
|
|
267
|
+
{
|
|
268
|
+
unchecked
|
|
269
|
+
{
|
|
270
|
+
return ValueTypeHashCode(
|
|
271
|
+
param1,
|
|
272
|
+
param2,
|
|
273
|
+
param3,
|
|
274
|
+
param4,
|
|
275
|
+
param5,
|
|
276
|
+
param6,
|
|
277
|
+
param7,
|
|
278
|
+
param8,
|
|
279
|
+
param9
|
|
280
|
+
) * HashMultiplier
|
|
281
|
+
+ param10.GetHashCode();
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
286
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(
|
|
287
|
+
T1 param1,
|
|
288
|
+
T2 param2,
|
|
289
|
+
T3 param3,
|
|
290
|
+
T4 param4,
|
|
291
|
+
T5 param5,
|
|
292
|
+
T6 param6,
|
|
293
|
+
T7 param7,
|
|
294
|
+
T8 param8,
|
|
295
|
+
T9 param9,
|
|
296
|
+
T10 param10,
|
|
297
|
+
T11 param11
|
|
298
|
+
)
|
|
299
|
+
where T1 : unmanaged
|
|
300
|
+
where T2 : unmanaged
|
|
301
|
+
where T3 : unmanaged
|
|
302
|
+
where T4 : unmanaged
|
|
303
|
+
where T5 : unmanaged
|
|
304
|
+
where T6 : unmanaged
|
|
305
|
+
where T7 : unmanaged
|
|
306
|
+
where T8 : unmanaged
|
|
307
|
+
where T9 : unmanaged
|
|
308
|
+
where T10 : unmanaged
|
|
309
|
+
where T11 : unmanaged
|
|
310
|
+
{
|
|
311
|
+
unchecked
|
|
312
|
+
{
|
|
313
|
+
return ValueTypeHashCode(
|
|
314
|
+
param1,
|
|
315
|
+
param2,
|
|
316
|
+
param3,
|
|
317
|
+
param4,
|
|
318
|
+
param5,
|
|
319
|
+
param6,
|
|
320
|
+
param7,
|
|
321
|
+
param8,
|
|
322
|
+
param9,
|
|
323
|
+
param10
|
|
324
|
+
) * HashMultiplier
|
|
325
|
+
+ param11.GetHashCode();
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
330
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(
|
|
331
|
+
T1 param1,
|
|
332
|
+
T2 param2,
|
|
333
|
+
T3 param3,
|
|
334
|
+
T4 param4,
|
|
335
|
+
T5 param5,
|
|
336
|
+
T6 param6,
|
|
337
|
+
T7 param7,
|
|
338
|
+
T8 param8,
|
|
339
|
+
T9 param9,
|
|
340
|
+
T10 param10,
|
|
341
|
+
T11 param11,
|
|
342
|
+
T12 param12
|
|
343
|
+
)
|
|
344
|
+
where T1 : unmanaged
|
|
345
|
+
where T2 : unmanaged
|
|
346
|
+
where T3 : unmanaged
|
|
347
|
+
where T4 : unmanaged
|
|
348
|
+
where T5 : unmanaged
|
|
349
|
+
where T6 : unmanaged
|
|
350
|
+
where T7 : unmanaged
|
|
351
|
+
where T8 : unmanaged
|
|
352
|
+
where T9 : unmanaged
|
|
353
|
+
where T10 : unmanaged
|
|
354
|
+
where T11 : unmanaged
|
|
355
|
+
where T12 : unmanaged
|
|
356
|
+
{
|
|
357
|
+
unchecked
|
|
358
|
+
{
|
|
359
|
+
return ValueTypeHashCode(
|
|
360
|
+
param1,
|
|
361
|
+
param2,
|
|
362
|
+
param3,
|
|
363
|
+
param4,
|
|
364
|
+
param5,
|
|
365
|
+
param6,
|
|
366
|
+
param7,
|
|
367
|
+
param8,
|
|
368
|
+
param9,
|
|
369
|
+
param10,
|
|
370
|
+
param11
|
|
371
|
+
) * HashMultiplier
|
|
372
|
+
+ param12.GetHashCode();
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
377
|
+
public static int ValueTypeHashCode<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(
|
|
378
|
+
T1 param1,
|
|
379
|
+
T2 param2,
|
|
380
|
+
T3 param3,
|
|
381
|
+
T4 param4,
|
|
382
|
+
T5 param5,
|
|
383
|
+
T6 param6,
|
|
384
|
+
T7 param7,
|
|
385
|
+
T8 param8,
|
|
386
|
+
T9 param9,
|
|
387
|
+
T10 param10,
|
|
388
|
+
T11 param11,
|
|
389
|
+
T12 param12,
|
|
390
|
+
T13 param13
|
|
391
|
+
)
|
|
392
|
+
where T1 : unmanaged
|
|
393
|
+
where T2 : unmanaged
|
|
394
|
+
where T3 : unmanaged
|
|
395
|
+
where T4 : unmanaged
|
|
396
|
+
where T5 : unmanaged
|
|
397
|
+
where T6 : unmanaged
|
|
398
|
+
where T7 : unmanaged
|
|
399
|
+
where T8 : unmanaged
|
|
400
|
+
where T9 : unmanaged
|
|
401
|
+
where T10 : unmanaged
|
|
402
|
+
where T11 : unmanaged
|
|
403
|
+
where T12 : unmanaged
|
|
404
|
+
where T13 : unmanaged
|
|
405
|
+
{
|
|
406
|
+
unchecked
|
|
407
|
+
{
|
|
408
|
+
return ValueTypeHashCode(
|
|
409
|
+
param1,
|
|
410
|
+
param2,
|
|
411
|
+
param3,
|
|
412
|
+
param4,
|
|
413
|
+
param5,
|
|
414
|
+
param6,
|
|
415
|
+
param7,
|
|
416
|
+
param8,
|
|
417
|
+
param9,
|
|
418
|
+
param10,
|
|
419
|
+
param11,
|
|
420
|
+
param12
|
|
421
|
+
) * HashMultiplier
|
|
422
|
+
+ param13.GetHashCode();
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
427
|
+
public static int ValueTypeHashCode<
|
|
428
|
+
T1,
|
|
429
|
+
T2,
|
|
430
|
+
T3,
|
|
431
|
+
T4,
|
|
432
|
+
T5,
|
|
433
|
+
T6,
|
|
434
|
+
T7,
|
|
435
|
+
T8,
|
|
436
|
+
T9,
|
|
437
|
+
T10,
|
|
438
|
+
T11,
|
|
439
|
+
T12,
|
|
440
|
+
T13,
|
|
441
|
+
T14
|
|
442
|
+
>(
|
|
443
|
+
T1 param1,
|
|
444
|
+
T2 param2,
|
|
445
|
+
T3 param3,
|
|
446
|
+
T4 param4,
|
|
447
|
+
T5 param5,
|
|
448
|
+
T6 param6,
|
|
449
|
+
T7 param7,
|
|
450
|
+
T8 param8,
|
|
451
|
+
T9 param9,
|
|
452
|
+
T10 param10,
|
|
453
|
+
T11 param11,
|
|
454
|
+
T12 param12,
|
|
455
|
+
T13 param13,
|
|
456
|
+
T14 param14
|
|
457
|
+
)
|
|
458
|
+
where T1 : unmanaged
|
|
459
|
+
where T2 : unmanaged
|
|
460
|
+
where T3 : unmanaged
|
|
461
|
+
where T4 : unmanaged
|
|
462
|
+
where T5 : unmanaged
|
|
463
|
+
where T6 : unmanaged
|
|
464
|
+
where T7 : unmanaged
|
|
465
|
+
where T8 : unmanaged
|
|
466
|
+
where T9 : unmanaged
|
|
467
|
+
where T10 : unmanaged
|
|
468
|
+
where T11 : unmanaged
|
|
469
|
+
where T12 : unmanaged
|
|
470
|
+
where T13 : unmanaged
|
|
471
|
+
where T14 : unmanaged
|
|
472
|
+
{
|
|
473
|
+
unchecked
|
|
474
|
+
{
|
|
475
|
+
return ValueTypeHashCode(
|
|
476
|
+
param1,
|
|
477
|
+
param2,
|
|
478
|
+
param3,
|
|
479
|
+
param4,
|
|
480
|
+
param5,
|
|
481
|
+
param6,
|
|
482
|
+
param7,
|
|
483
|
+
param8,
|
|
484
|
+
param9,
|
|
485
|
+
param10,
|
|
486
|
+
param11,
|
|
487
|
+
param12,
|
|
488
|
+
param13
|
|
489
|
+
) * HashMultiplier
|
|
490
|
+
+ param14.GetHashCode();
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
495
|
+
public static int ValueTypeHashCode<
|
|
496
|
+
T1,
|
|
497
|
+
T2,
|
|
498
|
+
T3,
|
|
499
|
+
T4,
|
|
500
|
+
T5,
|
|
501
|
+
T6,
|
|
502
|
+
T7,
|
|
503
|
+
T8,
|
|
504
|
+
T9,
|
|
505
|
+
T10,
|
|
506
|
+
T11,
|
|
507
|
+
T12,
|
|
508
|
+
T13,
|
|
509
|
+
T14,
|
|
510
|
+
T15
|
|
511
|
+
>(
|
|
512
|
+
T1 param1,
|
|
513
|
+
T2 param2,
|
|
514
|
+
T3 param3,
|
|
515
|
+
T4 param4,
|
|
516
|
+
T5 param5,
|
|
517
|
+
T6 param6,
|
|
518
|
+
T7 param7,
|
|
519
|
+
T8 param8,
|
|
520
|
+
T9 param9,
|
|
521
|
+
T10 param10,
|
|
522
|
+
T11 param11,
|
|
523
|
+
T12 param12,
|
|
524
|
+
T13 param13,
|
|
525
|
+
T14 param14,
|
|
526
|
+
T15 param15
|
|
527
|
+
)
|
|
528
|
+
where T1 : unmanaged
|
|
529
|
+
where T2 : unmanaged
|
|
530
|
+
where T3 : unmanaged
|
|
531
|
+
where T4 : unmanaged
|
|
532
|
+
where T5 : unmanaged
|
|
533
|
+
where T6 : unmanaged
|
|
534
|
+
where T7 : unmanaged
|
|
535
|
+
where T8 : unmanaged
|
|
536
|
+
where T9 : unmanaged
|
|
537
|
+
where T10 : unmanaged
|
|
538
|
+
where T11 : unmanaged
|
|
539
|
+
where T12 : unmanaged
|
|
540
|
+
where T13 : unmanaged
|
|
541
|
+
where T14 : unmanaged
|
|
542
|
+
where T15 : unmanaged
|
|
543
|
+
{
|
|
544
|
+
unchecked
|
|
545
|
+
{
|
|
546
|
+
return ValueTypeHashCode(
|
|
547
|
+
param1,
|
|
548
|
+
param2,
|
|
549
|
+
param3,
|
|
550
|
+
param4,
|
|
551
|
+
param5,
|
|
552
|
+
param6,
|
|
553
|
+
param7,
|
|
554
|
+
param8,
|
|
555
|
+
param9,
|
|
556
|
+
param10,
|
|
557
|
+
param11,
|
|
558
|
+
param12,
|
|
559
|
+
param13,
|
|
560
|
+
param14
|
|
561
|
+
) * HashMultiplier
|
|
562
|
+
+ param15.GetHashCode();
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
567
|
+
public static int ValueTypeHashCode<
|
|
568
|
+
T1,
|
|
569
|
+
T2,
|
|
570
|
+
T3,
|
|
571
|
+
T4,
|
|
572
|
+
T5,
|
|
573
|
+
T6,
|
|
574
|
+
T7,
|
|
575
|
+
T8,
|
|
576
|
+
T9,
|
|
577
|
+
T10,
|
|
578
|
+
T11,
|
|
579
|
+
T12,
|
|
580
|
+
T13,
|
|
581
|
+
T14,
|
|
582
|
+
T15,
|
|
583
|
+
T16
|
|
584
|
+
>(
|
|
585
|
+
T1 param1,
|
|
586
|
+
T2 param2,
|
|
587
|
+
T3 param3,
|
|
588
|
+
T4 param4,
|
|
589
|
+
T5 param5,
|
|
590
|
+
T6 param6,
|
|
591
|
+
T7 param7,
|
|
592
|
+
T8 param8,
|
|
593
|
+
T9 param9,
|
|
594
|
+
T10 param10,
|
|
595
|
+
T11 param11,
|
|
596
|
+
T12 param12,
|
|
597
|
+
T13 param13,
|
|
598
|
+
T14 param14,
|
|
599
|
+
T15 param15,
|
|
600
|
+
T16 param16
|
|
601
|
+
)
|
|
602
|
+
where T1 : unmanaged
|
|
603
|
+
where T2 : unmanaged
|
|
604
|
+
where T3 : unmanaged
|
|
605
|
+
where T4 : unmanaged
|
|
606
|
+
where T5 : unmanaged
|
|
607
|
+
where T6 : unmanaged
|
|
608
|
+
where T7 : unmanaged
|
|
609
|
+
where T8 : unmanaged
|
|
610
|
+
where T9 : unmanaged
|
|
611
|
+
where T10 : unmanaged
|
|
612
|
+
where T11 : unmanaged
|
|
613
|
+
where T12 : unmanaged
|
|
614
|
+
where T13 : unmanaged
|
|
615
|
+
where T14 : unmanaged
|
|
616
|
+
where T15 : unmanaged
|
|
617
|
+
where T16 : unmanaged
|
|
618
|
+
{
|
|
619
|
+
unchecked
|
|
620
|
+
{
|
|
621
|
+
return ValueTypeHashCode(
|
|
622
|
+
param1,
|
|
623
|
+
param2,
|
|
624
|
+
param3,
|
|
625
|
+
param4,
|
|
626
|
+
param5,
|
|
627
|
+
param6,
|
|
628
|
+
param7,
|
|
629
|
+
param8,
|
|
630
|
+
param9,
|
|
631
|
+
param10,
|
|
632
|
+
param11,
|
|
633
|
+
param12,
|
|
634
|
+
param13,
|
|
635
|
+
param14,
|
|
636
|
+
param15
|
|
637
|
+
) * HashMultiplier
|
|
638
|
+
+ param16.GetHashCode();
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
643
|
+
public static int HashCode<T1>(T1 param1)
|
|
644
|
+
{
|
|
645
|
+
unchecked
|
|
646
|
+
{
|
|
647
|
+
return HashBase * NullSafeHashCode(param1);
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
652
|
+
public static int HashCode<T1, T2>(T1 param1, T2 param2)
|
|
653
|
+
{
|
|
654
|
+
unchecked
|
|
655
|
+
{
|
|
656
|
+
return HashCode(param1) * HashMultiplier + NullSafeHashCode(param2);
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
661
|
+
public static int HashCode<T1, T2, T3>(T1 param1, T2 param2, T3 param3)
|
|
662
|
+
{
|
|
663
|
+
unchecked
|
|
664
|
+
{
|
|
665
|
+
return HashCode(param1, param2) * HashMultiplier + NullSafeHashCode(param3);
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
670
|
+
public static int HashCode<T1, T2, T3, T4>(T1 param1, T2 param2, T3 param3, T4 param4)
|
|
671
|
+
{
|
|
672
|
+
unchecked
|
|
673
|
+
{
|
|
674
|
+
return HashCode(param1, param2, param3) * HashMultiplier + NullSafeHashCode(param4);
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
679
|
+
public static int HashCode<T1, T2, T3, T4, T5>(
|
|
680
|
+
T1 param1,
|
|
681
|
+
T2 param2,
|
|
682
|
+
T3 param3,
|
|
683
|
+
T4 param4,
|
|
684
|
+
T5 param5
|
|
685
|
+
)
|
|
686
|
+
{
|
|
687
|
+
unchecked
|
|
688
|
+
{
|
|
689
|
+
return HashCode(param1, param2, param3, param4) * HashMultiplier
|
|
690
|
+
+ NullSafeHashCode(param5);
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
695
|
+
public static int HashCode<T1, T2, T3, T4, T5, T6>(
|
|
696
|
+
T1 param1,
|
|
697
|
+
T2 param2,
|
|
698
|
+
T3 param3,
|
|
699
|
+
T4 param4,
|
|
700
|
+
T5 param5,
|
|
701
|
+
T6 param6
|
|
702
|
+
)
|
|
703
|
+
{
|
|
704
|
+
unchecked
|
|
705
|
+
{
|
|
706
|
+
return HashCode(param1, param2, param3, param4, param5) * HashMultiplier
|
|
707
|
+
+ NullSafeHashCode(param6);
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
712
|
+
public static int HashCode<T1, T2, T3, T4, T5, T6, T7>(
|
|
713
|
+
T1 param1,
|
|
714
|
+
T2 param2,
|
|
715
|
+
T3 param3,
|
|
716
|
+
T4 param4,
|
|
717
|
+
T5 param5,
|
|
718
|
+
T6 param6,
|
|
719
|
+
T7 param7
|
|
720
|
+
)
|
|
721
|
+
{
|
|
722
|
+
unchecked
|
|
723
|
+
{
|
|
724
|
+
return HashCode(param1, param2, param3, param4, param5, param6) * HashMultiplier
|
|
725
|
+
+ NullSafeHashCode(param7);
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
730
|
+
public static int HashCode<T1, T2, T3, T4, T5, T6, T7, T8>(
|
|
731
|
+
T1 param1,
|
|
732
|
+
T2 param2,
|
|
733
|
+
T3 param3,
|
|
734
|
+
T4 param4,
|
|
735
|
+
T5 param5,
|
|
736
|
+
T6 param6,
|
|
737
|
+
T7 param7,
|
|
738
|
+
T8 param8
|
|
739
|
+
)
|
|
740
|
+
{
|
|
741
|
+
unchecked
|
|
742
|
+
{
|
|
743
|
+
return HashCode(param1, param2, param3, param4, param5, param6, param7)
|
|
744
|
+
* HashMultiplier
|
|
745
|
+
+ NullSafeHashCode(param8);
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
750
|
+
public static int EnumerableHashCode(IEnumerable enumerable)
|
|
751
|
+
{
|
|
752
|
+
if (ReferenceEquals(enumerable, null))
|
|
753
|
+
{
|
|
754
|
+
return 0;
|
|
755
|
+
}
|
|
756
|
+
unchecked
|
|
757
|
+
{
|
|
758
|
+
int hash = HashBase;
|
|
759
|
+
IEnumerator walker = enumerable.GetEnumerator();
|
|
760
|
+
while (walker.MoveNext())
|
|
761
|
+
{
|
|
762
|
+
hash = hash * HashMultiplier + NullSafeHashCode(walker.Current);
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
return hash;
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
}
|