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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/.gitattributes +63 -63
  2. package/.github/workflows/npm-publish.yml +60 -0
  3. package/.github/workflows/unity-package.yml +87 -0
  4. package/Editor/AnimationCopier.cs +158 -158
  5. package/Editor/AnimationCopier.cs.meta +2 -2
  6. package/Editor/AnimationCreator.cs +262 -262
  7. package/Editor/AnimationCreator.cs.meta +11 -11
  8. package/Editor/AnimationEventEditor.cs +887 -887
  9. package/Editor/AnimatorControllerCopier.cs +162 -162
  10. package/Editor/AnimatorControllerCopier.cs.meta +2 -2
  11. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs +34 -34
  12. package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs.meta +2 -2
  13. package/Editor/CustomEditors.meta +2 -2
  14. package/Editor/EnsureTextureSizeWizard.cs +110 -110
  15. package/Editor/EnsureTextureSizeWizard.cs.meta +2 -2
  16. package/Editor/PrefabCheckWizard.cs +165 -165
  17. package/Editor/PrefabCheckWizard.cs.meta +11 -11
  18. package/Editor/SpriteSettingsApplier.cs +168 -168
  19. package/Editor/SpriteSettingsApplier.cs.meta +2 -2
  20. package/Editor/StringInListeDrawer.cs +56 -56
  21. package/Editor/TextureResizerWizard.cs +181 -181
  22. package/Editor/TextureResizerWizard.cs.meta +2 -2
  23. package/Editor/TextureSettingsApplier.cs +171 -171
  24. package/Editor/TextureSettingsApplier.cs.meta +2 -2
  25. package/Editor/Utils/EditorUtilities.cs +22 -22
  26. package/Editor/Utils/EditorUtilities.cs.meta +11 -11
  27. package/Editor/Utils/ReadOnlyPropertyDrawer.cs +26 -26
  28. package/Editor/Utils/ReadOnlyPropertyDrawer.cs.meta +11 -11
  29. package/Editor/Utils.meta +8 -8
  30. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef +17 -17
  31. package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef.meta +7 -7
  32. package/LICENSE +21 -21
  33. package/LICENSE.md +6 -6
  34. package/LICENSE.meta +7 -7
  35. package/README.md +117 -117
  36. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll.meta +33 -33
  37. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml +223 -223
  38. package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml.meta +7 -7
  39. package/Runtime/Binaries/System.Text.Encodings.Web.dll.meta +33 -33
  40. package/Runtime/Binaries/System.Text.Encodings.Web.xml +935 -935
  41. package/Runtime/Binaries/System.Text.Encodings.Web.xml.meta +7 -7
  42. package/Runtime/Binaries/System.Text.Json.dll.meta +33 -33
  43. package/Runtime/Binaries/System.Text.Json.xml +4829 -4829
  44. package/Runtime/Binaries/System.Text.Json.xml.meta +7 -7
  45. package/Runtime/Binaries.meta +8 -8
  46. package/Runtime/Core/Attributes/AnimationEventAttribute.cs +131 -131
  47. package/Runtime/Core/Attributes/ChildComponentAttribute.cs +189 -189
  48. package/Runtime/Core/Attributes/KSerializableAttribute.cs +19 -19
  49. package/Runtime/Core/Attributes/NotNullAttribute.cs +32 -32
  50. package/Runtime/Core/Attributes/ParentComponent.cs +184 -184
  51. package/Runtime/Core/Attributes/ReadOnlyAttribute.cs +6 -6
  52. package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +14 -14
  53. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +119 -119
  54. package/Runtime/Core/Attributes/SiblingComponentAttribute.cs.meta +11 -11
  55. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs +101 -101
  56. package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs.meta +11 -11
  57. package/Runtime/Core/Attributes.meta +8 -8
  58. package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs +92 -92
  59. package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs +185 -185
  60. package/Runtime/Core/DataStructure/Adapters/KGuid.cs +305 -305
  61. package/Runtime/Core/DataStructure/Adapters/KVector2.cs +80 -80
  62. package/Runtime/Core/DataStructure/Circle.cs +50 -50
  63. package/Runtime/Core/DataStructure/CyclicBuffer.cs +155 -155
  64. package/Runtime/Core/DataStructure/ISpatialTree.cs +60 -60
  65. package/Runtime/Core/DataStructure/ISpatialTree.cs.meta +11 -11
  66. package/Runtime/Core/DataStructure/KDTree.cs +290 -290
  67. package/Runtime/Core/DataStructure/KDTree.cs.meta +11 -11
  68. package/Runtime/Core/DataStructure/QuadTree.cs +279 -279
  69. package/Runtime/Core/DataStructure/RTree.cs +336 -336
  70. package/Runtime/Core/DataStructure/RTree.cs.meta +11 -11
  71. package/Runtime/Core/DataStructure/StringWrapper.cs +91 -91
  72. package/Runtime/Core/DataStructure/TimedCache.cs +51 -51
  73. package/Runtime/Core/Extension/AnimatorExtensions.cs +25 -25
  74. package/Runtime/Core/Extension/CircleExtensions.cs +25 -25
  75. package/Runtime/Core/Extension/ColorExtensions.cs +338 -338
  76. package/Runtime/Core/Extension/DictionaryExtensions.cs +251 -251
  77. package/Runtime/Core/Extension/DirectionExtensions.cs +213 -213
  78. package/Runtime/Core/Extension/HashSetExtensions.cs +12 -12
  79. package/Runtime/Core/Extension/IEnumerableExtensions.cs +122 -122
  80. package/Runtime/Core/Extension/IListExtensions.cs +89 -89
  81. package/Runtime/Core/Extension/LoggingExtensions.cs +258 -258
  82. package/Runtime/Core/Extension/RandomExtensions.cs +109 -109
  83. package/Runtime/Core/Extension/StringExtensions.cs +151 -151
  84. package/Runtime/Core/Extension/UnityExtensions.cs +1607 -1607
  85. package/Runtime/Core/Helper/ArrayConverter.cs +39 -39
  86. package/Runtime/Core/Helper/ArrayConverter.cs.meta +2 -2
  87. package/Runtime/Core/Helper/AssignUtilities.cs +14 -14
  88. package/Runtime/Core/Helper/AssignUtilities.cs.meta +11 -11
  89. package/Runtime/Core/Helper/Enumerables.cs +17 -17
  90. package/Runtime/Core/Helper/Geometry.cs +43 -43
  91. package/Runtime/Core/Helper/Helpers.cs +722 -722
  92. package/Runtime/Core/Helper/Helpers.cs.meta +11 -11
  93. package/Runtime/Core/Helper/IterationHelpers.cs +32 -32
  94. package/Runtime/Core/Helper/IterationHelpers.cs.meta +11 -11
  95. package/Runtime/Core/Helper/LifetimeHelpers.cs +13 -13
  96. package/Runtime/Core/Helper/Objects.cs +767 -767
  97. package/Runtime/Core/Helper/Partials/LogHelpers.cs +13 -13
  98. package/Runtime/Core/Helper/Partials/LogHelpers.cs.meta +2 -2
  99. package/Runtime/Core/Helper/Partials/MathHelpers.cs +30 -30
  100. package/Runtime/Core/Helper/Partials/MathHelpers.cs.meta +2 -2
  101. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +388 -388
  102. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs.meta +2 -2
  103. package/Runtime/Core/Helper/Partials/TransformHelpers.cs +167 -167
  104. package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +2 -2
  105. package/Runtime/Core/Helper/Partials.meta +2 -2
  106. package/Runtime/Core/Helper/ReflectionHelpers.cs +152 -152
  107. package/Runtime/Core/Helper/ReflectionHelpers.cs.meta +2 -2
  108. package/Runtime/Core/Helper/SpriteHelpers.cs +86 -86
  109. package/Runtime/Core/Helper/SpriteHelpers.cs.meta +11 -11
  110. package/Runtime/Core/Helper/StringInList.cs +31 -31
  111. package/Runtime/Core/Helper/StringInList.cs.meta +11 -11
  112. package/Runtime/Core/Helper/WallMath.cs +166 -166
  113. package/Runtime/Core/Math/Line.cs +55 -55
  114. package/Runtime/Core/Math/Parabola.cs +47 -47
  115. package/Runtime/Core/Math/PointPolygonCheck.cs +36 -36
  116. package/Runtime/Core/Math/PointPolygonCheck.cs.meta +11 -11
  117. package/Runtime/Core/Math/Range.cs +92 -92
  118. package/Runtime/Core/Math/XXHash.cs +310 -310
  119. package/Runtime/Core/Math/XXHash.cs.meta +11 -11
  120. package/Runtime/Core/Model/Direction.cs +43 -43
  121. package/Runtime/Core/OneOf/FastOneOf.cs +152 -152
  122. package/Runtime/Core/OneOf/None.cs +4 -4
  123. package/Runtime/Core/Random/AbstractRandom.cs +561 -561
  124. package/Runtime/Core/Random/DotNetRandom.cs +52 -52
  125. package/Runtime/Core/Random/DotNetRandom.cs.meta +2 -2
  126. package/Runtime/Core/Random/IRandom.cs +160 -160
  127. package/Runtime/Core/Random/NativePcgRandom.cs +97 -97
  128. package/Runtime/Core/Random/PRNG.cs +7 -7
  129. package/Runtime/Core/Random/PRNG.cs.meta +2 -2
  130. package/Runtime/Core/Random/PcgRandom.cs +149 -149
  131. package/Runtime/Core/Random/PerlinNoise.cs +369 -369
  132. package/Runtime/Core/Random/PerlinNoise.cs.meta +2 -2
  133. package/Runtime/Core/Random/RandomState.cs +131 -131
  134. package/Runtime/Core/Random/RandomUtilities.cs +26 -26
  135. package/Runtime/Core/Random/RandomUtilities.cs.meta +11 -11
  136. package/Runtime/Core/Random/RomuDuo.cs +116 -116
  137. package/Runtime/Core/Random/RomuDuo.cs.meta +2 -2
  138. package/Runtime/Core/Random/SplitMix64.cs +94 -94
  139. package/Runtime/Core/Random/SplitMix64.cs.meta +2 -2
  140. package/Runtime/Core/Random/SquirrelRandom.cs +84 -84
  141. package/Runtime/Core/Random/SystemRandom.cs +162 -162
  142. package/Runtime/Core/Random/ThreadLocalRandom.cs +12 -12
  143. package/Runtime/Core/Random/UnityRandom.cs +57 -57
  144. package/Runtime/Core/Random/UnityRandom.cs.meta +11 -11
  145. package/Runtime/Core/Random/WyRandom.cs +121 -121
  146. package/Runtime/Core/Random/WyRandom.cs.meta +2 -2
  147. package/Runtime/Core/Random/XorShiftRandom.cs +47 -47
  148. package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -11
  149. package/Runtime/Core/Random/XorShiroRandom.cs +117 -117
  150. package/Runtime/Core/Random/XorShiroRandom.cs.meta +2 -2
  151. package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +74 -74
  152. package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +81 -81
  153. package/Runtime/Core/Serialization/Serializer.cs +184 -184
  154. package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +107 -107
  155. package/Runtime/Protobuf-Net/System.Buffers.dll.meta +33 -33
  156. package/Runtime/Protobuf-Net/System.Collections.Immutable.dll.meta +33 -33
  157. package/Runtime/Protobuf-Net/System.Collections.Immutable.xml +5379 -5379
  158. package/Runtime/Protobuf-Net/System.Collections.Immutable.xml.meta +7 -7
  159. package/Runtime/Protobuf-Net/System.Numerics.Vectors.dll.meta +33 -33
  160. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll.meta +33 -33
  161. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml +290 -290
  162. package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml.meta +7 -7
  163. package/Runtime/Protobuf-Net/protobuf-net.Core.dll.meta +33 -33
  164. package/Runtime/Protobuf-Net/protobuf-net.dll.meta +33 -33
  165. package/Runtime/UI/LayeredImage.cs +364 -364
  166. package/Runtime/UI/LayeredImage.cs.meta +2 -2
  167. package/Runtime/UI.meta +2 -2
  168. package/Runtime/Utils/AnimationEventEqualityComparer.cs +161 -161
  169. package/Runtime/Utils/AnimatorEnumStateMachine.cs +88 -88
  170. package/Runtime/Utils/Buffers.cs +32 -32
  171. package/Runtime/Utils/CenterPointOffset.cs +30 -30
  172. package/Runtime/Utils/CenterPointOffset.cs.meta +2 -2
  173. package/Runtime/Utils/CircleLineRenderer.cs +134 -134
  174. package/Runtime/Utils/CoroutineHandler.cs +4 -4
  175. package/Runtime/Utils/CoroutineHandler.cs.meta +2 -2
  176. package/Runtime/Utils/MatchColliderToSprite.cs +94 -94
  177. package/Runtime/Utils/MatchColliderToSprite.cs.meta +2 -2
  178. package/Runtime/Utils/Oscillator.cs +27 -27
  179. package/Runtime/Utils/RuntimeSingleton.cs +57 -57
  180. package/Runtime/Utils/RuntimeSingleton.cs.meta +11 -11
  181. package/Runtime/Utils/SetTextureImportData.cs +69 -69
  182. package/Runtime/Utils/SpriteRendererMetadata.cs +312 -312
  183. package/Runtime/Utils/SpriteRendererMetadata.cs.meta +2 -2
  184. package/Runtime/Utils/SpriteRendererSyncer.cs +100 -100
  185. package/Runtime/Utils/SpriteRendererSyncer.cs.meta +2 -2
  186. package/Runtime/Utils/TextureScale.cs +179 -179
  187. package/Runtime/Utils/TextureScale.cs.meta +2 -2
  188. package/Runtime/WallstopStudios.UnityHelpers.asmdef +13 -13
  189. package/Tests/Runtime/Attributes/ChildComponentTests.cs +81 -81
  190. package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs +28 -28
  191. package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs +28 -28
  192. package/Tests/Runtime/Attributes/ParentComponentTests.cs +68 -68
  193. package/Tests/Runtime/Components/RelationalComponentTester.cs +34 -34
  194. package/Tests/Runtime/Components/RelationalComponentTester.cs.meta +2 -2
  195. package/Tests/Runtime/Components.meta +2 -2
  196. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs +14 -14
  197. package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs.meta +11 -11
  198. package/Tests/Runtime/DataStructures/CyclicBufferTests.cs +324 -324
  199. package/Tests/Runtime/DataStructures/QuadTreeTests.cs +14 -14
  200. package/Tests/Runtime/DataStructures/QuadTreeTests.cs.meta +11 -11
  201. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs +130 -130
  202. package/Tests/Runtime/DataStructures/SpatialTreeTests.cs.meta +11 -11
  203. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs +14 -14
  204. package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs.meta +11 -11
  205. package/Tests/Runtime/DataStructures.meta +8 -8
  206. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs +439 -439
  207. package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs.meta +2 -2
  208. package/Tests/Runtime/Extensions/IListExtensionTests.cs +76 -76
  209. package/Tests/Runtime/Extensions/RandomExtensionTests.cs +27 -27
  210. package/Tests/Runtime/Extensions/RandomExtensionTests.cs.meta +2 -2
  211. package/Tests/Runtime/Extensions/StringExtensionTests.cs +31 -31
  212. package/Tests/Runtime/Extensions/StringExtensionTests.cs.meta +2 -2
  213. package/Tests/Runtime/Extensions.meta +2 -2
  214. package/Tests/Runtime/Helper/ArrayConverterTests.cs +19 -19
  215. package/Tests/Runtime/Helper/ArrayConverterTests.cs.meta +2 -2
  216. package/Tests/Runtime/Helper/ObjectHelperTests.cs +402 -402
  217. package/Tests/Runtime/Helper/ObjectHelperTests.cs.meta +2 -2
  218. package/Tests/Runtime/Helper/WallMathTests.cs +233 -233
  219. package/Tests/Runtime/Helper/WallMathTests.cs.meta +2 -2
  220. package/Tests/Runtime/Helper.meta +2 -2
  221. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs +14 -14
  222. package/Tests/Runtime/Performance/KDTreePerformanceTests.cs.meta +11 -11
  223. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs +14 -14
  224. package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs.meta +11 -11
  225. package/Tests/Runtime/Performance/RandomPerformanceTests.cs +139 -139
  226. package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -11
  227. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +37 -37
  228. package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +2 -2
  229. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs +154 -154
  230. package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs.meta +11 -11
  231. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs +14 -14
  232. package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs.meta +11 -11
  233. package/Tests/Runtime/Performance.meta +8 -8
  234. package/Tests/Runtime/Random/DotNetRandomTests.cs +9 -9
  235. package/Tests/Runtime/Random/DotNetRandomTests.cs.meta +2 -2
  236. package/Tests/Runtime/Random/PcgRandomTests.cs +9 -9
  237. package/Tests/Runtime/Random/PcgRandomTests.cs.meta +11 -11
  238. package/Tests/Runtime/Random/RandomTestBase.cs +787 -787
  239. package/Tests/Runtime/Random/RandomTestBase.cs.meta +11 -11
  240. package/Tests/Runtime/Random/RomuDuoRandomTests.cs +9 -9
  241. package/Tests/Runtime/Random/RomuDuoRandomTests.cs.meta +2 -2
  242. package/Tests/Runtime/Random/SplitMix64RandomTests.cs +9 -9
  243. package/Tests/Runtime/Random/SplitMix64RandomTests.cs.meta +2 -2
  244. package/Tests/Runtime/Random/SquirrelRandomTests.cs +14 -14
  245. package/Tests/Runtime/Random/SquirrelRandomTests.cs.meta +11 -11
  246. package/Tests/Runtime/Random/SystemRandomTests.cs +10 -10
  247. package/Tests/Runtime/Random/SystemRandomTests.cs.meta +11 -11
  248. package/Tests/Runtime/Random/UnityRandomTests.cs +9 -9
  249. package/Tests/Runtime/Random/UnityRandomTests.cs.meta +11 -11
  250. package/Tests/Runtime/Random/WyRandomTests.cs +9 -9
  251. package/Tests/Runtime/Random/WyRandomTests.cs.meta +2 -2
  252. package/Tests/Runtime/Random/XorShiftRandomTests.cs +9 -9
  253. package/Tests/Runtime/Random/XorShiftRandomTests.cs.meta +11 -11
  254. package/Tests/Runtime/Random/XorShiroRandomTests.cs +9 -9
  255. package/Tests/Runtime/Random/XorShiroRandomTests.cs.meta +2 -2
  256. package/Tests/Runtime/Random.meta +8 -8
  257. package/Tests/Runtime/Serialization/JsonSerializationTest.cs +84 -84
  258. package/Tests/Runtime/Serialization/JsonSerializationTest.cs.meta +2 -2
  259. package/Tests/Runtime/Serialization.meta +2 -2
  260. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs +399 -399
  261. package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs.meta +2 -2
  262. package/Tests/Runtime/Utils.meta +2 -2
  263. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef +22 -22
  264. package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef.meta +7 -7
  265. package/Tests/Runtime.meta +8 -8
  266. package/package.json +38 -38
@@ -1,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
+ }