@esengine/ecs-framework 2.1.30 → 2.1.32

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 (288) hide show
  1. package/index.cjs +2 -0
  2. package/index.cjs.map +1 -0
  3. package/index.d.ts +6357 -0
  4. package/index.mjs +2 -0
  5. package/index.mjs.map +1 -0
  6. package/index.umd.js +2 -0
  7. package/index.umd.js.map +1 -0
  8. package/package.json +27 -50
  9. package/bin/Core.d.ts +0 -279
  10. package/bin/Core.d.ts.map +0 -1
  11. package/bin/Core.js +0 -400
  12. package/bin/Core.js.map +0 -1
  13. package/bin/ECS/Component.d.ts +0 -120
  14. package/bin/ECS/Component.d.ts.map +0 -1
  15. package/bin/ECS/Component.js +0 -129
  16. package/bin/ECS/Component.js.map +0 -1
  17. package/bin/ECS/Components/IUpdatable.d.ts +0 -22
  18. package/bin/ECS/Components/IUpdatable.d.ts.map +0 -1
  19. package/bin/ECS/Components/IUpdatable.js +0 -17
  20. package/bin/ECS/Components/IUpdatable.js.map +0 -1
  21. package/bin/ECS/Components/SceneComponent.d.ts +0 -40
  22. package/bin/ECS/Components/SceneComponent.d.ts.map +0 -1
  23. package/bin/ECS/Components/SceneComponent.js +0 -57
  24. package/bin/ECS/Components/SceneComponent.js.map +0 -1
  25. package/bin/ECS/Core/ArchetypeSystem.d.ts +0 -100
  26. package/bin/ECS/Core/ArchetypeSystem.d.ts.map +0 -1
  27. package/bin/ECS/Core/ArchetypeSystem.js +0 -193
  28. package/bin/ECS/Core/ArchetypeSystem.js.map +0 -1
  29. package/bin/ECS/Core/ComponentIndex.d.ts +0 -151
  30. package/bin/ECS/Core/ComponentIndex.d.ts.map +0 -1
  31. package/bin/ECS/Core/ComponentIndex.js +0 -405
  32. package/bin/ECS/Core/ComponentIndex.js.map +0 -1
  33. package/bin/ECS/Core/ComponentPool.d.ts +0 -88
  34. package/bin/ECS/Core/ComponentPool.d.ts.map +0 -1
  35. package/bin/ECS/Core/ComponentPool.js +0 -159
  36. package/bin/ECS/Core/ComponentPool.js.map +0 -1
  37. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.d.ts +0 -92
  38. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.d.ts.map +0 -1
  39. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.js +0 -167
  40. package/bin/ECS/Core/ComponentStorage/ComponentRegistry.js.map +0 -1
  41. package/bin/ECS/Core/ComponentStorage.d.ts +0 -233
  42. package/bin/ECS/Core/ComponentStorage.d.ts.map +0 -1
  43. package/bin/ECS/Core/ComponentStorage.js +0 -463
  44. package/bin/ECS/Core/ComponentStorage.js.map +0 -1
  45. package/bin/ECS/Core/DirtyTrackingSystem.d.ts +0 -197
  46. package/bin/ECS/Core/DirtyTrackingSystem.d.ts.map +0 -1
  47. package/bin/ECS/Core/DirtyTrackingSystem.js +0 -297
  48. package/bin/ECS/Core/DirtyTrackingSystem.js.map +0 -1
  49. package/bin/ECS/Core/EntityManager.d.ts +0 -379
  50. package/bin/ECS/Core/EntityManager.d.ts.map +0 -1
  51. package/bin/ECS/Core/EntityManager.js +0 -686
  52. package/bin/ECS/Core/EntityManager.js.map +0 -1
  53. package/bin/ECS/Core/EventBus.d.ts +0 -218
  54. package/bin/ECS/Core/EventBus.d.ts.map +0 -1
  55. package/bin/ECS/Core/EventBus.js +0 -402
  56. package/bin/ECS/Core/EventBus.js.map +0 -1
  57. package/bin/ECS/Core/EventSystem.d.ts +0 -237
  58. package/bin/ECS/Core/EventSystem.d.ts.map +0 -1
  59. package/bin/ECS/Core/EventSystem.js +0 -478
  60. package/bin/ECS/Core/EventSystem.js.map +0 -1
  61. package/bin/ECS/Core/Events/index.d.ts +0 -3
  62. package/bin/ECS/Core/Events/index.d.ts.map +0 -1
  63. package/bin/ECS/Core/Events/index.js +0 -3
  64. package/bin/ECS/Core/Events/index.js.map +0 -1
  65. package/bin/ECS/Core/FluentAPI/ComponentBuilder.d.ts +0 -35
  66. package/bin/ECS/Core/FluentAPI/ComponentBuilder.d.ts.map +0 -1
  67. package/bin/ECS/Core/FluentAPI/ComponentBuilder.js +0 -48
  68. package/bin/ECS/Core/FluentAPI/ComponentBuilder.js.map +0 -1
  69. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.d.ts +0 -135
  70. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.d.ts.map +0 -1
  71. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.js +0 -166
  72. package/bin/ECS/Core/FluentAPI/ECSFluentAPI.js.map +0 -1
  73. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.d.ts +0 -58
  74. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.d.ts.map +0 -1
  75. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.js +0 -85
  76. package/bin/ECS/Core/FluentAPI/EntityBatchOperator.js.map +0 -1
  77. package/bin/ECS/Core/FluentAPI/EntityBuilder.d.ts +0 -110
  78. package/bin/ECS/Core/FluentAPI/EntityBuilder.d.ts.map +0 -1
  79. package/bin/ECS/Core/FluentAPI/EntityBuilder.js +0 -174
  80. package/bin/ECS/Core/FluentAPI/EntityBuilder.js.map +0 -1
  81. package/bin/ECS/Core/FluentAPI/SceneBuilder.d.ts +0 -53
  82. package/bin/ECS/Core/FluentAPI/SceneBuilder.d.ts.map +0 -1
  83. package/bin/ECS/Core/FluentAPI/SceneBuilder.js +0 -79
  84. package/bin/ECS/Core/FluentAPI/SceneBuilder.js.map +0 -1
  85. package/bin/ECS/Core/FluentAPI/index.d.ts +0 -6
  86. package/bin/ECS/Core/FluentAPI/index.d.ts.map +0 -1
  87. package/bin/ECS/Core/FluentAPI/index.js +0 -6
  88. package/bin/ECS/Core/FluentAPI/index.js.map +0 -1
  89. package/bin/ECS/Core/FluentAPI.d.ts +0 -2
  90. package/bin/ECS/Core/FluentAPI.d.ts.map +0 -1
  91. package/bin/ECS/Core/FluentAPI.js +0 -3
  92. package/bin/ECS/Core/FluentAPI.js.map +0 -1
  93. package/bin/ECS/Core/Performance/index.d.ts +0 -4
  94. package/bin/ECS/Core/Performance/index.d.ts.map +0 -1
  95. package/bin/ECS/Core/Performance/index.js +0 -4
  96. package/bin/ECS/Core/Performance/index.js.map +0 -1
  97. package/bin/ECS/Core/Query/index.d.ts +0 -4
  98. package/bin/ECS/Core/Query/index.d.ts.map +0 -1
  99. package/bin/ECS/Core/Query/index.js +0 -4
  100. package/bin/ECS/Core/Query/index.js.map +0 -1
  101. package/bin/ECS/Core/QuerySystem.d.ts +0 -438
  102. package/bin/ECS/Core/QuerySystem.d.ts.map +0 -1
  103. package/bin/ECS/Core/QuerySystem.js +0 -974
  104. package/bin/ECS/Core/QuerySystem.js.map +0 -1
  105. package/bin/ECS/Core/SoAStorage.d.ts +0 -97
  106. package/bin/ECS/Core/SoAStorage.d.ts.map +0 -1
  107. package/bin/ECS/Core/SoAStorage.js +0 -548
  108. package/bin/ECS/Core/SoAStorage.js.map +0 -1
  109. package/bin/ECS/Core/Storage/index.d.ts +0 -4
  110. package/bin/ECS/Core/Storage/index.d.ts.map +0 -1
  111. package/bin/ECS/Core/Storage/index.js +0 -4
  112. package/bin/ECS/Core/Storage/index.js.map +0 -1
  113. package/bin/ECS/CoreEvents.d.ts +0 -131
  114. package/bin/ECS/CoreEvents.d.ts.map +0 -1
  115. package/bin/ECS/CoreEvents.js +0 -163
  116. package/bin/ECS/CoreEvents.js.map +0 -1
  117. package/bin/ECS/Entity.d.ts +0 -455
  118. package/bin/ECS/Entity.d.ts.map +0 -1
  119. package/bin/ECS/Entity.js +0 -837
  120. package/bin/ECS/Entity.js.map +0 -1
  121. package/bin/ECS/Scene.d.ts +0 -225
  122. package/bin/ECS/Scene.d.ts.map +0 -1
  123. package/bin/ECS/Scene.js +0 -325
  124. package/bin/ECS/Scene.js.map +0 -1
  125. package/bin/ECS/Systems/EntitySystem.d.ts +0 -200
  126. package/bin/ECS/Systems/EntitySystem.d.ts.map +0 -1
  127. package/bin/ECS/Systems/EntitySystem.js +0 -431
  128. package/bin/ECS/Systems/EntitySystem.js.map +0 -1
  129. package/bin/ECS/Systems/IntervalSystem.d.ts +0 -33
  130. package/bin/ECS/Systems/IntervalSystem.d.ts.map +0 -1
  131. package/bin/ECS/Systems/IntervalSystem.js +0 -50
  132. package/bin/ECS/Systems/IntervalSystem.js.map +0 -1
  133. package/bin/ECS/Systems/PassiveSystem.d.ts +0 -17
  134. package/bin/ECS/Systems/PassiveSystem.d.ts.map +0 -1
  135. package/bin/ECS/Systems/PassiveSystem.js +0 -19
  136. package/bin/ECS/Systems/PassiveSystem.js.map +0 -1
  137. package/bin/ECS/Systems/ProcessingSystem.d.ts +0 -21
  138. package/bin/ECS/Systems/ProcessingSystem.d.ts.map +0 -1
  139. package/bin/ECS/Systems/ProcessingSystem.js +0 -20
  140. package/bin/ECS/Systems/ProcessingSystem.js.map +0 -1
  141. package/bin/ECS/Systems/index.d.ts +0 -5
  142. package/bin/ECS/Systems/index.d.ts.map +0 -1
  143. package/bin/ECS/Systems/index.js +0 -6
  144. package/bin/ECS/Systems/index.js.map +0 -1
  145. package/bin/ECS/Utils/BigIntCompatibility.d.ts +0 -164
  146. package/bin/ECS/Utils/BigIntCompatibility.d.ts.map +0 -1
  147. package/bin/ECS/Utils/BigIntCompatibility.js +0 -578
  148. package/bin/ECS/Utils/BigIntCompatibility.js.map +0 -1
  149. package/bin/ECS/Utils/Bits.d.ts +0 -163
  150. package/bin/ECS/Utils/Bits.d.ts.map +0 -1
  151. package/bin/ECS/Utils/Bits.js +0 -286
  152. package/bin/ECS/Utils/Bits.js.map +0 -1
  153. package/bin/ECS/Utils/ComponentTypeManager.d.ts +0 -50
  154. package/bin/ECS/Utils/ComponentTypeManager.d.ts.map +0 -1
  155. package/bin/ECS/Utils/ComponentTypeManager.js +0 -84
  156. package/bin/ECS/Utils/ComponentTypeManager.js.map +0 -1
  157. package/bin/ECS/Utils/EntityList.d.ts +0 -108
  158. package/bin/ECS/Utils/EntityList.d.ts.map +0 -1
  159. package/bin/ECS/Utils/EntityList.js +0 -262
  160. package/bin/ECS/Utils/EntityList.js.map +0 -1
  161. package/bin/ECS/Utils/EntityProcessorList.d.ts +0 -56
  162. package/bin/ECS/Utils/EntityProcessorList.d.ts.map +0 -1
  163. package/bin/ECS/Utils/EntityProcessorList.js +0 -102
  164. package/bin/ECS/Utils/EntityProcessorList.js.map +0 -1
  165. package/bin/ECS/Utils/IdentifierPool.d.ts +0 -203
  166. package/bin/ECS/Utils/IdentifierPool.d.ts.map +0 -1
  167. package/bin/ECS/Utils/IdentifierPool.js +0 -325
  168. package/bin/ECS/Utils/IdentifierPool.js.map +0 -1
  169. package/bin/ECS/Utils/Matcher.d.ts +0 -143
  170. package/bin/ECS/Utils/Matcher.d.ts.map +0 -1
  171. package/bin/ECS/Utils/Matcher.js +0 -249
  172. package/bin/ECS/Utils/Matcher.js.map +0 -1
  173. package/bin/ECS/Utils/index.d.ts +0 -8
  174. package/bin/ECS/Utils/index.d.ts.map +0 -1
  175. package/bin/ECS/Utils/index.js +0 -9
  176. package/bin/ECS/Utils/index.js.map +0 -1
  177. package/bin/ECS/index.d.ts +0 -12
  178. package/bin/ECS/index.d.ts.map +0 -1
  179. package/bin/ECS/index.js +0 -12
  180. package/bin/ECS/index.js.map +0 -1
  181. package/bin/Types/index.d.ts +0 -471
  182. package/bin/Types/index.d.ts.map +0 -1
  183. package/bin/Types/index.js +0 -5
  184. package/bin/Types/index.js.map +0 -1
  185. package/bin/Utils/Debug/ComponentDataCollector.d.ts +0 -28
  186. package/bin/Utils/Debug/ComponentDataCollector.d.ts.map +0 -1
  187. package/bin/Utils/Debug/ComponentDataCollector.js +0 -248
  188. package/bin/Utils/Debug/ComponentDataCollector.js.map +0 -1
  189. package/bin/Utils/Debug/DebugDataFormatter.d.ts +0 -22
  190. package/bin/Utils/Debug/DebugDataFormatter.d.ts.map +0 -1
  191. package/bin/Utils/Debug/DebugDataFormatter.js +0 -117
  192. package/bin/Utils/Debug/DebugDataFormatter.js.map +0 -1
  193. package/bin/Utils/Debug/DebugManager.d.ts +0 -104
  194. package/bin/Utils/Debug/DebugManager.d.ts.map +0 -1
  195. package/bin/Utils/Debug/DebugManager.js +0 -647
  196. package/bin/Utils/Debug/DebugManager.js.map +0 -1
  197. package/bin/Utils/Debug/EntityDataCollector.d.ts +0 -92
  198. package/bin/Utils/Debug/EntityDataCollector.d.ts.map +0 -1
  199. package/bin/Utils/Debug/EntityDataCollector.js +0 -864
  200. package/bin/Utils/Debug/EntityDataCollector.js.map +0 -1
  201. package/bin/Utils/Debug/PerformanceDataCollector.d.ts +0 -32
  202. package/bin/Utils/Debug/PerformanceDataCollector.d.ts.map +0 -1
  203. package/bin/Utils/Debug/PerformanceDataCollector.js +0 -217
  204. package/bin/Utils/Debug/PerformanceDataCollector.js.map +0 -1
  205. package/bin/Utils/Debug/SceneDataCollector.d.ts +0 -16
  206. package/bin/Utils/Debug/SceneDataCollector.d.ts.map +0 -1
  207. package/bin/Utils/Debug/SceneDataCollector.js +0 -46
  208. package/bin/Utils/Debug/SceneDataCollector.js.map +0 -1
  209. package/bin/Utils/Debug/SystemDataCollector.d.ts +0 -11
  210. package/bin/Utils/Debug/SystemDataCollector.d.ts.map +0 -1
  211. package/bin/Utils/Debug/SystemDataCollector.js +0 -59
  212. package/bin/Utils/Debug/SystemDataCollector.js.map +0 -1
  213. package/bin/Utils/Debug/WebSocketManager.d.ts +0 -59
  214. package/bin/Utils/Debug/WebSocketManager.d.ts.map +0 -1
  215. package/bin/Utils/Debug/WebSocketManager.js +0 -148
  216. package/bin/Utils/Debug/WebSocketManager.js.map +0 -1
  217. package/bin/Utils/Debug/index.d.ts +0 -8
  218. package/bin/Utils/Debug/index.d.ts.map +0 -1
  219. package/bin/Utils/Debug/index.js +0 -8
  220. package/bin/Utils/Debug/index.js.map +0 -1
  221. package/bin/Utils/Emitter.d.ts +0 -43
  222. package/bin/Utils/Emitter.d.ts.map +0 -1
  223. package/bin/Utils/Emitter.js +0 -69
  224. package/bin/Utils/Emitter.js.map +0 -1
  225. package/bin/Utils/Extensions/NumberExtension.d.ts +0 -13
  226. package/bin/Utils/Extensions/NumberExtension.d.ts.map +0 -1
  227. package/bin/Utils/Extensions/NumberExtension.js +0 -17
  228. package/bin/Utils/Extensions/NumberExtension.js.map +0 -1
  229. package/bin/Utils/Extensions/TypeUtils.d.ts +0 -13
  230. package/bin/Utils/Extensions/TypeUtils.d.ts.map +0 -1
  231. package/bin/Utils/Extensions/TypeUtils.js +0 -15
  232. package/bin/Utils/Extensions/TypeUtils.js.map +0 -1
  233. package/bin/Utils/Extensions/index.d.ts +0 -3
  234. package/bin/Utils/Extensions/index.d.ts.map +0 -1
  235. package/bin/Utils/Extensions/index.js +0 -4
  236. package/bin/Utils/Extensions/index.js.map +0 -1
  237. package/bin/Utils/GlobalManager.d.ts +0 -32
  238. package/bin/Utils/GlobalManager.d.ts.map +0 -1
  239. package/bin/Utils/GlobalManager.js +0 -53
  240. package/bin/Utils/GlobalManager.js.map +0 -1
  241. package/bin/Utils/Logger.d.ts +0 -156
  242. package/bin/Utils/Logger.d.ts.map +0 -1
  243. package/bin/Utils/Logger.js +0 -256
  244. package/bin/Utils/Logger.js.map +0 -1
  245. package/bin/Utils/PerformanceMonitor.d.ts +0 -211
  246. package/bin/Utils/PerformanceMonitor.d.ts.map +0 -1
  247. package/bin/Utils/PerformanceMonitor.js +0 -270
  248. package/bin/Utils/PerformanceMonitor.js.map +0 -1
  249. package/bin/Utils/Pool/IPoolable.d.ts +0 -29
  250. package/bin/Utils/Pool/IPoolable.d.ts.map +0 -1
  251. package/bin/Utils/Pool/IPoolable.js +0 -2
  252. package/bin/Utils/Pool/IPoolable.js.map +0 -1
  253. package/bin/Utils/Pool/Pool.d.ts +0 -109
  254. package/bin/Utils/Pool/Pool.d.ts.map +0 -1
  255. package/bin/Utils/Pool/Pool.js +0 -238
  256. package/bin/Utils/Pool/Pool.js.map +0 -1
  257. package/bin/Utils/Pool/PoolManager.d.ts +0 -91
  258. package/bin/Utils/Pool/PoolManager.d.ts.map +0 -1
  259. package/bin/Utils/Pool/PoolManager.js +0 -197
  260. package/bin/Utils/Pool/PoolManager.js.map +0 -1
  261. package/bin/Utils/Pool/index.d.ts +0 -4
  262. package/bin/Utils/Pool/index.d.ts.map +0 -1
  263. package/bin/Utils/Pool/index.js +0 -4
  264. package/bin/Utils/Pool/index.js.map +0 -1
  265. package/bin/Utils/Time.d.ts +0 -47
  266. package/bin/Utils/Time.d.ts.map +0 -1
  267. package/bin/Utils/Time.js +0 -64
  268. package/bin/Utils/Time.js.map +0 -1
  269. package/bin/Utils/Timers/ITimer.d.ts +0 -16
  270. package/bin/Utils/Timers/ITimer.d.ts.map +0 -1
  271. package/bin/Utils/Timers/ITimer.js +0 -2
  272. package/bin/Utils/Timers/ITimer.js.map +0 -1
  273. package/bin/Utils/Timers/Timer.d.ts +0 -30
  274. package/bin/Utils/Timers/Timer.d.ts.map +0 -1
  275. package/bin/Utils/Timers/Timer.js +0 -58
  276. package/bin/Utils/Timers/Timer.js.map +0 -1
  277. package/bin/Utils/Timers/TimerManager.d.ts +0 -19
  278. package/bin/Utils/Timers/TimerManager.d.ts.map +0 -1
  279. package/bin/Utils/Timers/TimerManager.js +0 -33
  280. package/bin/Utils/Timers/TimerManager.js.map +0 -1
  281. package/bin/Utils/index.d.ts +0 -9
  282. package/bin/Utils/index.d.ts.map +0 -1
  283. package/bin/Utils/index.js +0 -9
  284. package/bin/Utils/index.js.map +0 -1
  285. package/bin/index.d.ts +0 -16
  286. package/bin/index.d.ts.map +0 -1
  287. package/bin/index.js +0 -19
  288. package/bin/index.js.map +0 -1
@@ -1,578 +0,0 @@
1
- /**
2
- * BigInt兼容性抽象层
3
- *
4
- * 为不支持BigInt的环境提供兼容实现,确保ECS框架在所有平台上都能正常运行。
5
- * 自动检测运行时环境的BigInt支持情况,并提供统一的接口。
6
- *
7
- * @example
8
- * ```typescript
9
- * // 创建兼容的BigInt值
10
- * const value = BigIntFactory.create(123);
11
- *
12
- * // 位运算
13
- * const result = value.or(BigIntFactory.create(456));
14
- *
15
- * // 检查兼容性
16
- * console.log(BigIntFactory.isNativeSupported()); // true/false
17
- * ```
18
- */
19
- /**
20
- * 原生BigInt包装器
21
- *
22
- * 为支持BigInt的环境提供统一接口包装。
23
- */
24
- class NativeBigInt {
25
- constructor(value) {
26
- this.value = value;
27
- }
28
- valueOf() {
29
- return Number(this.value);
30
- }
31
- toString(radix) {
32
- if (radix !== undefined && radix !== 10 && radix !== 16 && radix !== 2) {
33
- throw new Error('Only radix 2, 10, and 16 are supported');
34
- }
35
- const result = this.value.toString(radix);
36
- if (radix === 16) {
37
- return result.toUpperCase();
38
- }
39
- return result;
40
- }
41
- and(other) {
42
- const otherBigInt = other instanceof NativeBigInt ? other.value : BigInt(other.valueOf());
43
- return new NativeBigInt(this.value & otherBigInt);
44
- }
45
- or(other) {
46
- const otherBigInt = other instanceof NativeBigInt ? other.value : BigInt(other.valueOf());
47
- return new NativeBigInt(this.value | otherBigInt);
48
- }
49
- xor(other) {
50
- const otherBigInt = other instanceof NativeBigInt ? other.value : BigInt(other.valueOf());
51
- return new NativeBigInt(this.value ^ otherBigInt);
52
- }
53
- not(maxBits = 64) {
54
- const mask = (BigInt(1) << BigInt(maxBits)) - BigInt(1);
55
- return new NativeBigInt((~this.value) & mask);
56
- }
57
- shiftLeft(bits) {
58
- return new NativeBigInt(this.value << BigInt(bits));
59
- }
60
- shiftRight(bits) {
61
- return new NativeBigInt(this.value >> BigInt(bits));
62
- }
63
- equals(other) {
64
- const otherBigInt = other instanceof NativeBigInt ? other.value : BigInt(other.valueOf());
65
- return this.value === otherBigInt;
66
- }
67
- isZero() {
68
- return this.value === BigInt(0);
69
- }
70
- clone() {
71
- return new NativeBigInt(this.value);
72
- }
73
- }
74
- /**
75
- * 数组模拟BigInt实现
76
- *
77
- * 为不支持BigInt的环境提供兼容实现,使用32位数组模拟大整数运算。
78
- * 性能略低于原生BigInt,但保证功能一致性。
79
- */
80
- class ArrayBigInt {
81
- /**
82
- * 构造函数
83
- * @param value 初始值,可以是数值、字符串或数组
84
- */
85
- constructor(value = 0) {
86
- this.chunks = []; // 32位块数组
87
- if (typeof value === 'number') {
88
- this.fromNumber(value);
89
- }
90
- else if (typeof value === 'string') {
91
- this.fromString(value);
92
- }
93
- else {
94
- this.chunks = value.slice();
95
- }
96
- this.normalize();
97
- }
98
- /**
99
- * 从数值初始化
100
- * @param value 数值
101
- */
102
- fromNumber(value) {
103
- this.chunks = [];
104
- // 处理负数(在位运算中通常不会遇到)
105
- if (value < 0) {
106
- value = Math.abs(value);
107
- }
108
- if (value === 0) {
109
- this.chunks = [0];
110
- return;
111
- }
112
- while (value > 0) {
113
- this.chunks.push(value & ArrayBigInt.CHUNK_MASK);
114
- value = Math.floor(value / ArrayBigInt.CHUNK_MAX);
115
- }
116
- }
117
- /**
118
- * 从字符串初始化
119
- * @param value 字符串(支持十进制、十六进制、二进制)
120
- */
121
- fromString(value) {
122
- value = value.trim();
123
- if (value.startsWith('0x') || value.startsWith('0X')) {
124
- // 十六进制
125
- this.fromHexString(value.substring(2));
126
- }
127
- else if (value.startsWith('0b') || value.startsWith('0B')) {
128
- // 二进制
129
- this.fromBinaryString(value.substring(2));
130
- }
131
- else {
132
- // 十进制
133
- this.fromDecimalString(value);
134
- }
135
- }
136
- /**
137
- * 从十六进制字符串初始化
138
- * @param hex 十六进制字符串
139
- */
140
- fromHexString(hex) {
141
- this.chunks = [0];
142
- for (let i = hex.length - 1; i >= 0; i -= 8) {
143
- const start = Math.max(0, i - 7);
144
- const chunk = parseInt(hex.substring(start, i + 1), 16);
145
- this.chunks.push(chunk);
146
- }
147
- this.normalize();
148
- }
149
- /**
150
- * 从二进制字符串初始化
151
- * @param binary 二进制字符串
152
- */
153
- fromBinaryString(binary) {
154
- this.chunks = [0];
155
- for (let i = binary.length - 1; i >= 0; i -= 32) {
156
- const start = Math.max(0, i - 31);
157
- const chunk = parseInt(binary.substring(start, i + 1), 2);
158
- this.chunks.push(chunk);
159
- }
160
- this.normalize();
161
- }
162
- /**
163
- * 从十进制字符串初始化
164
- * @param decimal 十进制字符串
165
- */
166
- fromDecimalString(decimal) {
167
- // 简化实现,直接转换为数值(在ECS位运算场景中通常是小数值)
168
- const num = parseInt(decimal, 10);
169
- this.fromNumber(num);
170
- }
171
- /**
172
- * 规范化数组,移除前导零
173
- */
174
- normalize() {
175
- while (this.chunks.length > 1 && this.chunks[this.chunks.length - 1] === 0) {
176
- this.chunks.pop();
177
- }
178
- if (this.chunks.length === 0) {
179
- this.chunks = [0];
180
- }
181
- }
182
- valueOf() {
183
- let result = 0;
184
- let multiplier = 1;
185
- for (const chunk of this.chunks) {
186
- result += chunk * multiplier;
187
- multiplier *= ArrayBigInt.CHUNK_MAX;
188
- // 防止溢出
189
- if (multiplier > Number.MAX_SAFE_INTEGER) {
190
- break;
191
- }
192
- }
193
- return result;
194
- }
195
- toString(radix = 10) {
196
- if (radix !== 10 && radix !== 16 && radix !== 2) {
197
- throw new Error('Only radix 2, 10, and 16 are supported');
198
- }
199
- if (this.isZero()) {
200
- return '0';
201
- }
202
- if (radix === 10) {
203
- // 简化实现,转换为数值
204
- return this.valueOf().toString(10);
205
- }
206
- else if (radix === 16) {
207
- let result = '';
208
- for (let i = this.chunks.length - 1; i >= 0; i--) {
209
- const hex = this.chunks[i].toString(16);
210
- result += i === this.chunks.length - 1 ? hex : hex.padStart(8, '0');
211
- }
212
- return result.toUpperCase();
213
- }
214
- else if (radix === 2) {
215
- let result = '';
216
- for (let i = this.chunks.length - 1; i >= 0; i--) {
217
- const binary = this.chunks[i].toString(2);
218
- result += i === this.chunks.length - 1 ? binary : binary.padStart(32, '0');
219
- }
220
- return result;
221
- }
222
- return this.valueOf().toString(radix);
223
- }
224
- and(other) {
225
- const otherArray = other;
226
- const maxLength = Math.max(this.chunks.length, otherArray.chunks.length);
227
- const result = [];
228
- for (let i = 0; i < maxLength; i++) {
229
- const a = i < this.chunks.length ? this.chunks[i] : 0;
230
- const b = i < otherArray.chunks.length ? otherArray.chunks[i] : 0;
231
- result.push(a & b);
232
- }
233
- return new ArrayBigInt(result);
234
- }
235
- or(other) {
236
- const otherArray = other;
237
- const maxLength = Math.max(this.chunks.length, otherArray.chunks.length);
238
- const result = [];
239
- for (let i = 0; i < maxLength; i++) {
240
- const a = i < this.chunks.length ? this.chunks[i] : 0;
241
- const b = i < otherArray.chunks.length ? otherArray.chunks[i] : 0;
242
- result.push(a | b);
243
- }
244
- return new ArrayBigInt(result);
245
- }
246
- xor(other) {
247
- const otherArray = other;
248
- const maxLength = Math.max(this.chunks.length, otherArray.chunks.length);
249
- const result = [];
250
- for (let i = 0; i < maxLength; i++) {
251
- const a = i < this.chunks.length ? this.chunks[i] : 0;
252
- const b = i < otherArray.chunks.length ? otherArray.chunks[i] : 0;
253
- result.push(a ^ b);
254
- }
255
- return new ArrayBigInt(result);
256
- }
257
- not(maxBits = 64) {
258
- const maxChunks = Math.ceil(maxBits / ArrayBigInt.CHUNK_SIZE);
259
- const result = [];
260
- for (let i = 0; i < maxChunks; i++) {
261
- const chunk = i < this.chunks.length ? this.chunks[i] : 0;
262
- if (i === maxChunks - 1) {
263
- // 最后一个块需要处理剩余位数
264
- const remainingBits = maxBits % ArrayBigInt.CHUNK_SIZE;
265
- if (remainingBits > 0) {
266
- const mask = (1 << remainingBits) - 1;
267
- result.push((~chunk) & mask);
268
- }
269
- else {
270
- result.push((~chunk) & ArrayBigInt.CHUNK_MASK);
271
- }
272
- }
273
- else {
274
- result.push((~chunk) & ArrayBigInt.CHUNK_MASK);
275
- }
276
- }
277
- return new ArrayBigInt(result);
278
- }
279
- shiftLeft(bits) {
280
- if (bits === 0) {
281
- return this.clone();
282
- }
283
- if (bits < 0) {
284
- return this.shiftRight(-bits);
285
- }
286
- const chunkShift = Math.floor(bits / ArrayBigInt.CHUNK_SIZE);
287
- const bitShift = bits % ArrayBigInt.CHUNK_SIZE;
288
- const result = new Array(chunkShift).fill(0);
289
- if (bitShift === 0) {
290
- // 整块移位
291
- result.push(...this.chunks);
292
- }
293
- else {
294
- // 部分位移位
295
- let carry = 0;
296
- for (const chunk of this.chunks) {
297
- const shifted = (chunk << bitShift) | carry;
298
- result.push(shifted & ArrayBigInt.CHUNK_MASK);
299
- carry = chunk >>> (ArrayBigInt.CHUNK_SIZE - bitShift);
300
- }
301
- if (carry > 0) {
302
- result.push(carry);
303
- }
304
- }
305
- return new ArrayBigInt(result);
306
- }
307
- shiftRight(bits) {
308
- if (bits === 0) {
309
- return this.clone();
310
- }
311
- if (bits < 0) {
312
- return this.shiftLeft(-bits);
313
- }
314
- const chunkShift = Math.floor(bits / ArrayBigInt.CHUNK_SIZE);
315
- const bitShift = bits % ArrayBigInt.CHUNK_SIZE;
316
- if (chunkShift >= this.chunks.length) {
317
- return new ArrayBigInt(0);
318
- }
319
- const result = [];
320
- if (bitShift === 0) {
321
- // 整块移位
322
- for (let i = chunkShift; i < this.chunks.length; i++) {
323
- result.push(this.chunks[i]);
324
- }
325
- }
326
- else {
327
- // 部分位移位
328
- let carry = 0;
329
- for (let i = this.chunks.length - 1; i >= chunkShift; i--) {
330
- const chunk = this.chunks[i];
331
- const shifted = (carry << (ArrayBigInt.CHUNK_SIZE - bitShift)) | (chunk >>> bitShift);
332
- result.unshift(shifted);
333
- carry = chunk & ((1 << bitShift) - 1);
334
- }
335
- }
336
- return new ArrayBigInt(result.length > 0 ? result : [0]);
337
- }
338
- equals(other) {
339
- if (!(other instanceof ArrayBigInt)) {
340
- return false;
341
- }
342
- if (this.chunks.length !== other.chunks.length) {
343
- return false;
344
- }
345
- for (let i = 0; i < this.chunks.length; i++) {
346
- if (this.chunks[i] !== other.chunks[i]) {
347
- return false;
348
- }
349
- }
350
- return true;
351
- }
352
- isZero() {
353
- return this.chunks.length === 1 && this.chunks[0] === 0;
354
- }
355
- clone() {
356
- return new ArrayBigInt(this.chunks.slice());
357
- }
358
- }
359
- ArrayBigInt.CHUNK_SIZE = 32;
360
- ArrayBigInt.CHUNK_MASK = 0xFFFFFFFF;
361
- ArrayBigInt.CHUNK_MAX = 0x100000000; // 2^32
362
- /**
363
- * BigInt工厂类
364
- *
365
- * 自动检测运行时环境的BigInt支持情况,并提供统一的创建接口。
366
- * 在支持BigInt的环境中使用原生实现,在不支持的环境中使用兼容实现。
367
- */
368
- export class BigIntFactory {
369
- // 缓存检测结果以避免重复检测
370
- /**
371
- * 检查是否支持原生BigInt
372
- * @returns 是否支持原生BigInt
373
- */
374
- static isNativeSupported() {
375
- if (this._supportsBigInt === null) {
376
- this._supportsBigInt = this.detectBigIntSupport();
377
- }
378
- return this._supportsBigInt;
379
- }
380
- /**
381
- * 检测BigInt支持情况
382
- * @returns 是否支持BigInt
383
- */
384
- static detectBigIntSupport() {
385
- try {
386
- // 检查BigInt构造函数是否存在
387
- if (typeof BigInt === 'undefined') {
388
- return false;
389
- }
390
- // 检查基本BigInt操作
391
- const test1 = BigInt(1);
392
- const test2 = BigInt(2);
393
- const result = test1 | test2;
394
- // 检查字面量支持
395
- const literal = eval('1n'); // 使用eval避免语法错误
396
- // 检查类型
397
- if (typeof result !== 'bigint' || typeof literal !== 'bigint') {
398
- return false;
399
- }
400
- // 检查基本运算
401
- const shifted = test1 << BigInt(1);
402
- const compared = test1 === BigInt(1);
403
- return typeof shifted === 'bigint' && compared === true;
404
- }
405
- catch (error) {
406
- // 任何异常都表示不支持
407
- return false;
408
- }
409
- }
410
- /**
411
- * 创建BigInt兼容值
412
- * @param value 初始值
413
- * @returns IBigIntLike实例
414
- */
415
- static create(value = 0) {
416
- if (this.isNativeSupported()) {
417
- let bigintValue;
418
- if (typeof value === 'bigint') {
419
- bigintValue = value;
420
- }
421
- else if (typeof value === 'string') {
422
- bigintValue = BigInt(value);
423
- }
424
- else {
425
- bigintValue = BigInt(value);
426
- }
427
- return new NativeBigInt(bigintValue);
428
- }
429
- else {
430
- // 转换bigint类型到兼容类型
431
- let compatValue;
432
- if (typeof value === 'bigint') {
433
- compatValue = value.toString();
434
- }
435
- else {
436
- compatValue = value;
437
- }
438
- return new ArrayBigInt(compatValue);
439
- }
440
- }
441
- /**
442
- * 创建零值
443
- * @returns 零值的IBigIntLike实例
444
- */
445
- static zero() {
446
- if (!this._cachedZero) {
447
- this._cachedZero = this.create(0);
448
- }
449
- return this._cachedZero;
450
- }
451
- /**
452
- * 创建1值
453
- * @returns 1值的IBigIntLike实例
454
- */
455
- static one() {
456
- if (!this._cachedOne) {
457
- this._cachedOne = this.create(1);
458
- }
459
- return this._cachedOne;
460
- }
461
- /**
462
- * 从二进制字符串创建
463
- * @param binary 二进制字符串
464
- * @returns IBigIntLike实例
465
- */
466
- static fromBinaryString(binary) {
467
- if (this.isNativeSupported()) {
468
- const value = BigInt('0b' + binary);
469
- return new NativeBigInt(value);
470
- }
471
- else {
472
- return new ArrayBigInt('0b' + binary);
473
- }
474
- }
475
- /**
476
- * 从十六进制字符串创建
477
- * @param hex 十六进制字符串
478
- * @returns IBigIntLike实例
479
- */
480
- static fromHexString(hex) {
481
- if (this.isNativeSupported()) {
482
- const cleanHex = hex.replace(/^0x/i, '');
483
- const value = BigInt('0x' + cleanHex);
484
- return new NativeBigInt(value);
485
- }
486
- else {
487
- return new ArrayBigInt(hex);
488
- }
489
- }
490
- /**
491
- * 获取环境信息
492
- * @returns 环境信息对象
493
- */
494
- static getEnvironmentInfo() {
495
- return {
496
- supportsBigInt: this.isNativeSupported(),
497
- environment: this.detectEnvironment(),
498
- jsEngine: this.detectJSEngine()
499
- };
500
- }
501
- /**
502
- * 检测运行环境
503
- * @returns 环境类型
504
- */
505
- static detectEnvironment() {
506
- if (typeof window !== 'undefined') {
507
- // 浏览器环境
508
- if (typeof navigator !== 'undefined') {
509
- const userAgent = navigator.userAgent;
510
- if (userAgent.includes('Chrome')) {
511
- const match = userAgent.match(/Chrome\/(\d+)/);
512
- const version = match ? parseInt(match[1]) : 0;
513
- return `Chrome ${version}`;
514
- }
515
- if (userAgent.includes('Firefox')) {
516
- const match = userAgent.match(/Firefox\/(\d+)/);
517
- const version = match ? parseInt(match[1]) : 0;
518
- return `Firefox ${version}`;
519
- }
520
- if (userAgent.includes('Safari') && !userAgent.includes('Chrome')) {
521
- const match = userAgent.match(/Version\/(\d+)/);
522
- const version = match ? parseInt(match[1]) : 0;
523
- return `Safari ${version}`;
524
- }
525
- return 'Browser (Unknown)';
526
- }
527
- return 'Browser';
528
- }
529
- else if (typeof global !== 'undefined') {
530
- // Node.js环境
531
- if (typeof process !== 'undefined' && process.version) {
532
- return `Node.js ${process.version}`;
533
- }
534
- return 'Node.js';
535
- }
536
- else if (typeof globalThis.wx !== 'undefined') {
537
- // 微信小程序
538
- return 'WeChat MiniProgram';
539
- }
540
- else if (typeof globalThis.cc !== 'undefined') {
541
- // Cocos Creator
542
- return 'Cocos Creator';
543
- }
544
- else if (typeof globalThis.Laya !== 'undefined') {
545
- // Laya引擎
546
- return 'Laya Engine';
547
- }
548
- return 'Unknown';
549
- }
550
- /**
551
- * 检测JavaScript引擎
552
- * @returns JS引擎信息
553
- */
554
- static detectJSEngine() {
555
- try {
556
- // V8引擎特征检测
557
- if (typeof process !== 'undefined' && process.versions && process.versions.v8) {
558
- return `V8 ${process.versions.v8}`;
559
- }
560
- // SpiderMonkey特征检测
561
- if (typeof globalThis.Components !== 'undefined') {
562
- return 'SpiderMonkey';
563
- }
564
- // JavaScriptCore特征检测
565
- if (typeof window !== 'undefined' && typeof window.safari !== 'undefined') {
566
- return 'JavaScriptCore';
567
- }
568
- return 'Unknown';
569
- }
570
- catch {
571
- return 'Unknown';
572
- }
573
- }
574
- }
575
- BigIntFactory._supportsBigInt = null;
576
- BigIntFactory._cachedZero = null;
577
- BigIntFactory._cachedOne = null;
578
- //# sourceMappingURL=BigIntCompatibility.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BigIntCompatibility.js","sourceRoot":"","sources":["../../../src/ECS/Utils/BigIntCompatibility.ts"],"names":[],"mappings":"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"}