com.wallstop-studios.unity-helpers 2.1.0 → 2.1.1

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 (52) hide show
  1. package/Docs/ILIST_SORTING_PERFORMANCE.md +92 -0
  2. package/Docs/ILIST_SORTING_PERFORMANCE.md.meta +7 -0
  3. package/Docs/INDEX.md +10 -1
  4. package/Docs/Images/random_generators.svg +7 -7
  5. package/Docs/RANDOM_PERFORMANCE.md +17 -14
  6. package/Docs/SPATIAL_TREE_2D_PERFORMANCE.md +64 -64
  7. package/Docs/SPATIAL_TREE_3D_PERFORMANCE.md +64 -64
  8. package/Editor/Core/Helper/AnimationEventHelpers.cs +1 -1
  9. package/README.md +25 -15
  10. package/Runtime/Core/Extension/IListExtensions.cs +720 -12
  11. package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs +2 -3
  12. package/Runtime/Core/Random/AbstractRandom.cs +52 -5
  13. package/Runtime/Core/Random/DotNetRandom.cs +3 -3
  14. package/Runtime/Core/Random/FlurryBurstRandom.cs +285 -0
  15. package/Runtime/Core/Random/FlurryBurstRandom.cs.meta +3 -0
  16. package/Runtime/Core/Random/IllusionFlow.cs +3 -3
  17. package/Runtime/Core/Random/LinearCongruentialGenerator.cs +3 -3
  18. package/Runtime/Core/Random/PcgRandom.cs +6 -6
  19. package/Runtime/Core/Random/PhotonSpinRandom.cs +387 -0
  20. package/Runtime/Core/Random/PhotonSpinRandom.cs.meta +3 -0
  21. package/Runtime/Core/Random/RomuDuo.cs +3 -3
  22. package/Runtime/Core/Random/SplitMix64.cs +3 -3
  23. package/Runtime/Core/Random/SquirrelRandom.cs +6 -4
  24. package/Runtime/Core/Random/StormDropRandom.cs +271 -0
  25. package/Runtime/Core/Random/StormDropRandom.cs.meta +3 -0
  26. package/Runtime/Core/Random/UnityRandom.cs +3 -3
  27. package/Runtime/Core/Random/WyRandom.cs +6 -4
  28. package/Runtime/Core/Random/XorShiftRandom.cs +3 -3
  29. package/Runtime/Core/Random/XoroShiroRandom.cs +3 -3
  30. package/Runtime/Tags/AttributeMetadataCache.cs +312 -3
  31. package/Tests/Editor/Tags/AttributeMetadataCacheTests.cs +192 -0
  32. package/Tests/Editor/Tags/AttributeMetadataCacheTests.cs.meta +11 -0
  33. package/Tests/Editor/Tags.meta +8 -0
  34. package/Tests/Runtime/Extensions/IListExtensionTests.cs +187 -1
  35. package/Tests/Runtime/Helper/ObjectsTests.cs +3 -3
  36. package/Tests/Runtime/Integrations/Reflex/RelationalComponentsReflexTests.cs +2 -2
  37. package/Tests/Runtime/Performance/IListSortingPerformanceTests.cs +346 -0
  38. package/Tests/Runtime/Performance/IListSortingPerformanceTests.cs.meta +11 -0
  39. package/Tests/Runtime/Performance/RandomPerformanceTests.cs +3 -0
  40. package/Tests/Runtime/Random/FlurryBurstRandomTests.cs +12 -0
  41. package/Tests/Runtime/Random/FlurryBurstRandomTests.cs.meta +3 -0
  42. package/Tests/Runtime/Random/PhotonSpinRandomTests.cs +12 -0
  43. package/Tests/Runtime/Random/PhotonSpinRandomTests.cs.meta +3 -0
  44. package/Tests/Runtime/Random/RandomProtoSerializationTests.cs +14 -0
  45. package/Tests/Runtime/Random/RandomTestBase.cs +39 -4
  46. package/Tests/Runtime/Random/StormDropRandomTests.cs +12 -0
  47. package/Tests/Runtime/Random/StormDropRandomTests.cs.meta +3 -0
  48. package/Tests/Runtime/Serialization/ProtoInterfaceResolutionEdgeTests.cs +2 -2
  49. package/Tests/Runtime/Serialization/ProtoRootRegistrationTests.cs +1 -1
  50. package/Tests/Runtime/Serialization/ProtoSerializeBehaviorTests.cs +1 -1
  51. package/Tests/Runtime/Tags/PeriodicEffectDefinitionSerializationTests.cs +2 -2
  52. package/package.json +1 -1
@@ -33,34 +33,34 @@ This document contains performance benchmarks for the 3D spatial tree implementa
33
33
 
34
34
  | Construction | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
35
35
  | ----------------- | ------------------- | --------------------- | ---------- | ---------- |
36
- | 1,000,000 entries | 2 (0.402s) | 3 (0.313s) | 2 (0.430s) | 2 (0.373s) |
36
+ | 1,000,000 entries | 2 (0.391s) | 3 (0.317s) | 2 (0.403s) | 2 (0.368s) |
37
37
 
38
38
  ##### Elements In Range
39
39
 
40
40
  | Elements In Range | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
41
41
  | --------------------------- | ------------------- | --------------------- | --------- | ------- |
42
- | Full (~span/2) (r=49.50) | 17 | 20 | 31 | 15 |
43
- | Half (~span/4) (r=24.75) | 127 | 153 | 215 | 150 |
44
- | Quarter (~span/8) (r=12.38) | 934 | 1,227 | 1,669 | 1,514 |
45
- | Tiny (~span/1000) (r=1) | 23,479 | 23,665 | 138,186 | 76,631 |
42
+ | Full (~span/2) (r=49.50) | 17 | 20 | 33 | 14 |
43
+ | Half (~span/4) (r=24.75) | 138 | 161 | 253 | 154 |
44
+ | Quarter (~span/8) (r=12.38) | 943 | 1,225 | 1,636 | 1,398 |
45
+ | Tiny (~span/1000) (r=1) | 23,633 | 23,399 | 138,242 | 61,388 |
46
46
 
47
47
  ##### Get Elements In Bounds
48
48
 
49
49
  | Get Elements In Bounds | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
50
50
  | -------------------------------- | ------------------- | --------------------- | --------- | ------- |
51
- | Full (size≈99.00x99.00x99.00) | 33 | 35 | 176 | 20 |
52
- | Half (size≈49.50x49.50x49.50) | 38 | 41 | 1,247 | 262 |
53
- | Quarter (size≈24.75x24.75x24.75) | 38 | 43 | 3,959 | 2,520 |
54
- | Unit (size=1) | 39 | 43 | 183,582 | 76,235 |
51
+ | Full (size≈99.00x99.00x99.00) | 35 | 38 | 204 | 20 |
52
+ | Half (size≈49.50x49.50x49.50) | 40 | 46 | 1,248 | 272 |
53
+ | Quarter (size≈24.75x24.75x24.75) | 41 | 48 | 4,043 | 2,459 |
54
+ | Unit (size=1) | 41 | 49 | 182,201 | 75,627 |
55
55
 
56
56
  ##### Approximate Nearest Neighbors
57
57
 
58
58
  | Approximate Nearest Neighbors | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
59
59
  | ----------------------------- | ------------------- | --------------------- | --------- | ------- |
60
- | 500 neighbors | 5,895 | 10,193 | 2,302 | 305 |
61
- | 100 neighbors | 65,079 | 70,085 | 10,904 | 3,349 |
62
- | 10 neighbors | 403,144 | 416,692 | 16,000 | 7,663 |
63
- | 1 neighbor | 544,211 | 412,407 | 19,831 | 8,321 |
60
+ | 500 neighbors | 5,823 | 10,001 | 2,321 | 297 |
61
+ | 100 neighbors | 62,378 | 68,501 | 10,973 | 3,386 |
62
+ | 10 neighbors | 394,113 | 400,030 | 15,886 | 7,915 |
63
+ | 1 neighbor | 542,886 | 429,790 | 19,854 | 8,605 |
64
64
 
65
65
  #### **100,000 entries**
66
66
 
@@ -68,34 +68,34 @@ This document contains performance benchmarks for the 3D spatial tree implementa
68
68
 
69
69
  | Construction | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
70
70
  | --------------- | ------------------- | --------------------- | ----------- | ----------- |
71
- | 100,000 entries | 34 (0.029s) | 47 (0.021s) | 64 (0.015s) | 43 (0.023s) |
71
+ | 100,000 entries | 34 (0.029s) | 48 (0.021s) | 65 (0.015s) | 43 (0.023s) |
72
72
 
73
73
  ##### Elements In Range
74
74
 
75
75
  | Elements In Range | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
76
76
  | --------------------------- | ------------------- | --------------------- | --------- | ------- |
77
- | Full (~span/2) (r=49.50) | 336 | 485 | 770 | 199 |
78
- | Half (~span/4) (r=24.75) | 1,019 | 1,445 | 2,040 | 853 |
79
- | Quarter (~span/8) (r=12.38) | 2,567 | 3,993 | 5,989 | 3,443 |
80
- | Tiny (~span/1000) (r=1) | 26,745 | 29,804 | 176,265 | 101,035 |
77
+ | Full (~span/2) (r=49.50) | 339 | 491 | 792 | 181 |
78
+ | Half (~span/4) (r=24.75) | 1,029 | 1,461 | 2,046 | 760 |
79
+ | Quarter (~span/8) (r=12.38) | 2,543 | 4,039 | 5,884 | 3,145 |
80
+ | Tiny (~span/1000) (r=1) | 26,019 | 29,892 | 177,305 | 81,121 |
81
81
 
82
82
  ##### Get Elements In Bounds
83
83
 
84
84
  | Get Elements In Bounds | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
85
85
  | ------------------------------- | ------------------- | --------------------- | --------- | ------- |
86
- | Full (size≈99.00x99.00x9) | 572 | 718 | 2,636 | 324 |
87
- | Half (size≈49.50x49.50x4.5) | 662 | 837 | 9,370 | 3,498 |
88
- | Quarter (size≈24.75x24.75x2.25) | 674 | 861 | 47,400 | 24,236 |
89
- | Unit (size=1) | 676 | 872 | 246,015 | 101,313 |
86
+ | Full (size≈99.00x99.00x9) | 610 | 762 | 2,614 | 346 |
87
+ | Half (size≈49.50x49.50x4.5) | 712 | 902 | 9,136 | 3,528 |
88
+ | Quarter (size≈24.75x24.75x2.25) | 729 | 930 | 46,338 | 23,782 |
89
+ | Unit (size=1) | 740 | 939 | 237,321 | 99,906 |
90
90
 
91
91
  ##### Approximate Nearest Neighbors
92
92
 
93
93
  | Approximate Nearest Neighbors | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
94
94
  | ----------------------------- | ------------------- | --------------------- | --------- | ------- |
95
- | 500 neighbors | 6,708 | 11,996 | 1,629 | 271 |
96
- | 100 neighbors | 38,469 | 42,192 | 9,227 | 2,237 |
97
- | 10 neighbors | 420,942 | 218,972 | 19,122 | 7,481 |
98
- | 1 neighbor | 459,844 | 327,816 | 29,943 | 11,842 |
95
+ | 500 neighbors | 6,626 | 11,994 | 1,586 | 262 |
96
+ | 100 neighbors | 37,626 | 44,284 | 9,081 | 2,200 |
97
+ | 10 neighbors | 417,112 | 231,243 | 19,133 | 7,515 |
98
+ | 1 neighbor | 449,374 | 324,373 | 30,223 | 11,948 |
99
99
 
100
100
  #### **10,000 entries**
101
101
 
@@ -103,34 +103,34 @@ This document contains performance benchmarks for the 3D spatial tree implementa
103
103
 
104
104
  | Construction | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
105
105
  | -------------- | ------------------- | --------------------- | ------------ | ------------ |
106
- | 10,000 entries | 378 (0.003s) | 467 (0.002s) | 585 (0.002s) | 442 (0.002s) |
106
+ | 10,000 entries | 451 (0.002s) | 454 (0.002s) | 605 (0.002s) | 196 (0.005s) |
107
107
 
108
108
  ##### Elements In Range
109
109
 
110
110
  | Elements In Range | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
111
111
  | --------------------------- | ------------------- | --------------------- | --------- | ------- |
112
- | Full (~span/2) (r=49.50) | 4,775 | 4,609 | 8,940 | 2,207 |
113
- | Half (~span/4) (r=24.75) | 5,940 | 6,484 | 8,824 | 4,285 |
114
- | Quarter (~span/8) (r=12.38) | 5,911 | 6,909 | 11,123 | 7,540 |
115
- | Tiny (~span/1000) (r=1) | 41,201 | 39,120 | 218,463 | 160,263 |
112
+ | Full (~span/2) (r=49.50) | 4,675 | 4,518 | 9,099 | 2,034 |
113
+ | Half (~span/4) (r=24.75) | 5,823 | 6,354 | 8,794 | 3,922 |
114
+ | Quarter (~span/8) (r=12.38) | 5,866 | 6,767 | 10,944 | 6,752 |
115
+ | Tiny (~span/1000) (r=1) | 41,567 | 38,086 | 214,981 | 128,576 |
116
116
 
117
117
  ##### Get Elements In Bounds
118
118
 
119
119
  | Get Elements In Bounds | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
120
120
  | ------------------------------ | ------------------- | --------------------- | --------- | ------- |
121
- | Full (size≈99.00x9x9) | 5,944 | 5,974 | 26,136 | 3,587 |
122
- | Half (size≈49.50x4.5x4.5) | 6,709 | 6,761 | 46,124 | 37,467 |
123
- | Quarter (size≈24.75x2.25x2.25) | 6,843 | 6,878 | 167,117 | 120,365 |
124
- | Unit (size=1) | 6,935 | 6,923 | 313,373 | 161,932 |
121
+ | Full (size≈99.00x9x9) | 6,291 | 6,249 | 25,591 | 3,619 |
122
+ | Half (size≈49.50x4.5x4.5) | 7,097 | 7,141 | 45,006 | 37,688 |
123
+ | Quarter (size≈24.75x2.25x2.25) | 7,245 | 7,264 | 163,085 | 121,891 |
124
+ | Unit (size=1) | 7,307 | 7,337 | 312,237 | 164,570 |
125
125
 
126
126
  ##### Approximate Nearest Neighbors
127
127
 
128
128
  | Approximate Nearest Neighbors | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
129
129
  | ----------------------------- | ------------------- | --------------------- | --------- | ------- |
130
- | 500 neighbors | 9,797 | 10,570 | 636 | 185 |
131
- | 100 neighbors | 48,860 | 69,836 | 5,909 | 2,233 |
132
- | 10 neighbors | 463,086 | 416,036 | 26,962 | 12,808 |
133
- | 1 neighbor | 622,715 | 624,381 | 45,121 | 21,542 |
130
+ | 500 neighbors | 9,657 | 10,507 | 616 | 184 |
131
+ | 100 neighbors | 49,027 | 67,963 | 5,817 | 2,182 |
132
+ | 10 neighbors | 446,049 | 428,934 | 26,981 | 12,798 |
133
+ | 1 neighbor | 623,216 | 592,038 | 43,952 | 21,591 |
134
134
 
135
135
  #### **1,000 entries**
136
136
 
@@ -138,34 +138,34 @@ This document contains performance benchmarks for the 3D spatial tree implementa
138
138
 
139
139
  | Construction | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
140
140
  | ------------- | ------------------- | --------------------- | -------------- | -------------- |
141
- | 1,000 entries | 3,828 (0.000s) | 1,431 (0.001s) | 4,177 (0.000s) | 4,058 (0.000s) |
141
+ | 1,000 entries | 3,913 (0.000s) | 5,081 (0.000s) | 4,323 (0.000s) | 3,658 (0.000s) |
142
142
 
143
143
  ##### Elements In Range
144
144
 
145
145
  | Elements In Range | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
146
146
  | -------------------------- | ------------------- | --------------------- | --------- | ------- |
147
- | Full (~span/2) (r=4.5) | 12,017 | 13,682 | 24,546 | 21,261 |
148
- | Half (~span/4) (r=2.25) | 52,394 | 62,385 | 124,579 | 149,723 |
149
- | Quarter (~span/8) (r=1.13) | 62,668 | 64,358 | 339,716 | 228,054 |
150
- | Tiny (~span/1000) (r=1) | 62,670 | 64,483 | 340,166 | 228,438 |
147
+ | Full (~span/2) (r=4.5) | 11,696 | 13,823 | 24,969 | 19,971 |
148
+ | Half (~span/4) (r=2.25) | 50,968 | 60,896 | 123,633 | 129,746 |
149
+ | Quarter (~span/8) (r=1.13) | 63,064 | 62,765 | 330,025 | 186,475 |
150
+ | Tiny (~span/1000) (r=1) | 63,087 | 62,848 | 329,869 | 197,969 |
151
151
 
152
152
  ##### Get Elements In Bounds
153
153
 
154
154
  | Get Elements In Bounds | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
155
155
  | ----------------------------- | ------------------- | --------------------- | --------- | ------- |
156
- | Full (size≈9x9x9) | 54,554 | 59,700 | 321,423 | 35,729 |
157
- | Half (size≈4.5x4.5x4.5) | 59,218 | 65,748 | 199,393 | 177,785 |
158
- | Quarter (size≈2.25x2.25x2.25) | 59,744 | 67,219 | 501,086 | 234,106 |
159
- | Unit (size=1) | 59,712 | 68,104 | 475,751 | 234,738 |
156
+ | Full (size≈9x9x9) | 58,861 | 61,905 | 309,570 | 36,019 |
157
+ | Half (size≈4.5x4.5x4.5) | 64,527 | 69,802 | 192,755 | 179,536 |
158
+ | Quarter (size≈2.25x2.25x2.25) | 65,139 | 70,314 | 482,726 | 233,477 |
159
+ | Unit (size=1) | 63,144 | 71,425 | 483,025 | 229,874 |
160
160
 
161
161
  ##### Approximate Nearest Neighbors
162
162
 
163
163
  | Approximate Nearest Neighbors | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
164
164
  | ----------------------------- | ------------------- | --------------------- | --------- | ------- |
165
- | 500 neighbors | 15,553 | 14,623 | 3,259 | 621 |
166
- | 100 neighbors | 70,256 | 65,840 | 15,632 | 4,130 |
167
- | 10 neighbors | 439,459 | 413,712 | 74,432 | 32,538 |
168
- | 1 neighbor | 691,682 | 657,381 | 84,606 | 43,414 |
165
+ | 500 neighbors | 15,710 | 14,734 | 3,184 | 600 |
166
+ | 100 neighbors | 66,966 | 62,730 | 15,247 | 4,005 |
167
+ | 10 neighbors | 458,678 | 398,089 | 72,823 | 32,318 |
168
+ | 1 neighbor | 683,259 | 662,761 | 82,887 | 43,767 |
169
169
 
170
170
  #### **100 entries**
171
171
 
@@ -173,33 +173,33 @@ This document contains performance benchmarks for the 3D spatial tree implementa
173
173
 
174
174
  | Construction | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
175
175
  | ------------ | ------------------- | --------------------- | --------------- | --------------- |
176
- | 100 entries | 39,370 (0.000s) | 33,003 (0.000s) | 26,246 (0.000s) | 20,746 (0.000s) |
176
+ | 100 entries | 33,222 (0.000s) | 32,573 (0.000s) | 20,491 (0.000s) | 19,841 (0.000s) |
177
177
 
178
178
  ##### Elements In Range
179
179
 
180
180
  | Elements In Range | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
181
181
  | -------------------------- | ------------------- | --------------------- | --------- | ------- |
182
- | Full (~span/2) (r=4.5) | 126,263 | 127,269 | 296,006 | 195,890 |
183
- | Half (~span/4) (r=2.25) | 147,197 | 149,386 | 318,618 | 311,821 |
184
- | Quarter (~span/8) (r=1.13) | 147,516 | 150,720 | 393,623 | 420,109 |
185
- | Tiny (~span/1000) (r=1) | 147,471 | 150,688 | 395,500 | 405,202 |
182
+ | Full (~span/2) (r=4.5) | 127,317 | 128,629 | 291,676 | 172,914 |
183
+ | Half (~span/4) (r=2.25) | 147,989 | 150,244 | 307,046 | 270,030 |
184
+ | Quarter (~span/8) (r=1.13) | 147,905 | 151,405 | 385,634 | 379,165 |
185
+ | Tiny (~span/1000) (r=1) | 147,928 | 147,331 | 382,213 | 378,916 |
186
186
 
187
187
  ##### Get Elements In Bounds
188
188
 
189
189
  | Get Elements In Bounds | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
190
190
  | ----------------------- | ------------------- | --------------------- | --------- | ------- |
191
- | Full (size≈9x4x1) | 501,997 | 505,246 | 1,807,410 | 329,640 |
192
- | Half (size≈4.5x2x1) | 498,779 | 534,318 | 494,122 | 456,745 |
193
- | Quarter (size≈2.25x1x1) | 537,627 | 536,488 | 776,653 | 726,561 |
194
- | Unit (size=1) | 539,253 | 536,541 | 776,990 | 721,307 |
191
+ | Full (size≈9x4x1) | 522,824 | 497,894 | 1,759,234 | 320,145 |
192
+ | Half (size≈4.5x2x1) | 537,503 | 544,668 | 498,113 | 445,151 |
193
+ | Quarter (size≈2.25x1x1) | 551,381 | 566,439 | 739,441 | 662,192 |
194
+ | Unit (size=1) | 551,255 | 558,590 | 739,304 | 718,275 |
195
195
 
196
196
  ##### Approximate Nearest Neighbors
197
197
 
198
198
  | Approximate Nearest Neighbors | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
199
199
  | ----------------------------- | ------------------- | --------------------- | --------- | ------- |
200
- | 100 neighbors (max) | 92,014 | 88,119 | 69,346 | 62,009 |
201
- | 10 neighbors | 617,049 | 514,543 | 105,140 | 100,817 |
202
- | 1 neighbor | 872,834 | 636,275 | 172,544 | 221,636 |
200
+ | 100 neighbors (max) | 87,362 | 84,326 | 67,051 | 64,893 |
201
+ | 10 neighbors | 593,261 | 519,728 | 94,913 | 101,228 |
202
+ | 1 neighbor | 831,879 | 681,161 | 168,582 | 221,590 |
203
203
 
204
204
  <!-- tabs:end -->
205
205
  <!-- SPATIAL_TREE_3D_BENCHMARKS_END -->
@@ -55,7 +55,7 @@ namespace WallstopStudios.UnityHelpers.Editor.Core.Helper
55
55
  continue;
56
56
  }
57
57
  if (
58
- !candidate.IsAttributeDefined<AnimationEventAttribute>(
58
+ !candidate.IsAttributeDefined(
59
59
  out AnimationEventAttribute attribute,
60
60
  inherit: false
61
61
  )
package/README.md CHANGED
@@ -454,24 +454,27 @@ Already read the [Top 5 Time-Savers](#-top-5-time-savers)? Jump directly to the
454
454
 
455
455
  ### Random Number Generators
456
456
 
457
- Unity Helpers includes **12 high-quality random number generators**, all implementing a rich `IRandom` interface:
457
+ Unity Helpers includes **15 high-quality random number generators**, all implementing a rich `IRandom` interface:
458
458
 
459
459
  #### Available Generators
460
460
 
461
- | Generator | Speed | Quality | Use Case |
462
- | ------------------------------- | --------- | --------- | ---------------------------------------- |
463
- | **IllusionFlow** ⭐ | Fast | Good | Default choice (via PRNG.Instance) |
464
- | **PcgRandom** | Very Fast | Excellent | Deterministic gameplay; explicit seeding |
465
- | **RomuDuo** | Fastest | Good | Maximum performance needed |
466
- | **LinearCongruentialGenerator** | Fastest | Fair | Simple, fast generation |
467
- | **XorShiftRandom** | Very Fast | Good | General purpose |
468
- | **XoroShiroRandom** | Very Fast | Good | General purpose |
469
- | **SplitMix64** | Very Fast | Good | Initialization, hashing |
470
- | **SquirrelRandom** | Moderate | Good | Hash-based generation |
471
- | **WyRandom** | Moderate | Good | Hashing applications |
472
- | **DotNetRandom** | Moderate | Good | .NET compatibility |
473
- | **SystemRandom** | Slow | Good | Backward compatibility |
474
- | **UnityRandom** | Very Slow | Good | Unity compatibility |
461
+ | Generator | Speed | Quality | Use Case |
462
+ | ------------------------------- | --------- | --------- | ------------------------------------------ |
463
+ | **IllusionFlow** ⭐ | Very Fast | Excellent | Default choice (via PRNG.Instance) |
464
+ | **PcgRandom**| Very Fast | Excellent | Deterministic gameplay; explicit seeding |
465
+ | **FlurryBurstRandom** | Very Fast | Excellent | High-quality PCG/Xoshiro alternative |
466
+ | **RomuDuo** | Very Fast | Good | Maximum performance needed |
467
+ | **LinearCongruentialGenerator** | Fastest | Fair | Simple, fast generation |
468
+ | **XorShiftRandom** | Very Fast | Good | General purpose |
469
+ | **XoroShiroRandom** | Very Fast | Good | General purpose |
470
+ | **SplitMix64** | Very Fast | Good | Initialization, hashing |
471
+ | **StormDropRandom** | Fast | Excellent | Large-buffer streams for heavy simulations |
472
+ | **PhotonSpinRandom** | Moderate | Excellent | Bulk generation; long non-overlapping runs |
473
+ | **SquirrelRandom** | Moderate | Good | Hash-based generation |
474
+ | **WyRandom** | Moderate | Good | Hashing applications |
475
+ | **DotNetRandom** | Moderate | Good | .NET compatibility |
476
+ | **SystemRandom** | Slow | Good | Backward compatibility |
477
+ | **UnityRandom** | Very Slow | Good | Unity compatibility |
475
478
 
476
479
  ⭐ **Recommended**: Use `PRNG.Instance` (currently IllusionFlow)
477
480
 
@@ -1124,6 +1127,12 @@ Unity Helpers is built with performance as a top priority:
1124
1127
  - Safe for IL2CPP and AOT platforms
1125
1128
  - [📊 Reflection Performance](Docs/REFLECTION_HELPERS.md)
1126
1129
 
1130
+ **List Sorting:**
1131
+
1132
+ - Multiple adaptive algorithms (`Ghost`, `Meteor`, `Power`, `Grail`, `Pattern-Defeating QuickSort`, `Insertion`) tuned for `IList<T>`
1133
+ - Deterministic datasets (sorted, nearly sorted, shuffled) across sizes from 100 to 1,000,000
1134
+ - [📊 IList Sorting Performance Benchmarks](Docs/ILIST_SORTING_PERFORMANCE.md)
1135
+
1127
1136
  ---
1128
1137
 
1129
1138
  ## Documentation Index
@@ -1157,6 +1166,7 @@ Unity Helpers is built with performance as a top priority:
1157
1166
 
1158
1167
  - Random Performance — [Random Performance](Docs/RANDOM_PERFORMANCE.md)
1159
1168
  - Reflection Helpers — [Reflection Helpers](Docs/REFLECTION_HELPERS.md)
1169
+ - IList Sorting Performance — [IList Sorting Performance](Docs/ILIST_SORTING_PERFORMANCE.md)
1160
1170
 
1161
1171
  **Project Info:**
1162
1172