com.wallstop-studios.unity-helpers 2.0.0-rc56 → 2.0.0-rc58

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