com.wallstop-studios.unity-helpers 2.0.0-rc27 → 2.0.0-rc31

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