@esengine/ecs-framework 2.0.6 → 2.0.8

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 (124) hide show
  1. package/bin/Core.js +21 -17
  2. package/bin/Core.js.map +1 -1
  3. package/bin/ECS/Component.js +5 -1
  4. package/bin/ECS/Component.js.map +1 -1
  5. package/bin/ECS/Components/IUpdatable.js +7 -2
  6. package/bin/ECS/Components/IUpdatable.js.map +1 -1
  7. package/bin/ECS/Components/SceneComponent.js +5 -1
  8. package/bin/ECS/Components/SceneComponent.js.map +1 -1
  9. package/bin/ECS/Core/BitMaskOptimizer.d.ts +75 -0
  10. package/bin/ECS/Core/BitMaskOptimizer.d.ts.map +1 -0
  11. package/bin/ECS/Core/BitMaskOptimizer.js +165 -0
  12. package/bin/ECS/Core/BitMaskOptimizer.js.map +1 -0
  13. package/bin/ECS/Core/ComponentPool.d.ts +72 -0
  14. package/bin/ECS/Core/ComponentPool.d.ts.map +1 -0
  15. package/bin/ECS/Core/ComponentPool.js +128 -0
  16. package/bin/ECS/Core/ComponentPool.js.map +1 -0
  17. package/bin/ECS/Core/ComponentStorage.js +9 -3
  18. package/bin/ECS/Core/ComponentStorage.js.map +1 -1
  19. package/bin/ECS/Core/EventSystem.js +12 -6
  20. package/bin/ECS/Core/EventSystem.js.map +1 -1
  21. package/bin/ECS/Core/FluentAPI.js +24 -17
  22. package/bin/ECS/Core/FluentAPI.js.map +1 -1
  23. package/bin/ECS/Core/IndexUpdateBatcher.d.ts +100 -0
  24. package/bin/ECS/Core/IndexUpdateBatcher.d.ts.map +1 -0
  25. package/bin/ECS/Core/IndexUpdateBatcher.js +223 -0
  26. package/bin/ECS/Core/IndexUpdateBatcher.js.map +1 -0
  27. package/bin/ECS/Core/QuerySystem.d.ts +292 -444
  28. package/bin/ECS/Core/QuerySystem.d.ts.map +1 -1
  29. package/bin/ECS/Core/QuerySystem.js +661 -1075
  30. package/bin/ECS/Core/QuerySystem.js.map +1 -1
  31. package/bin/ECS/CoreEvents.js +5 -2
  32. package/bin/ECS/CoreEvents.js.map +1 -1
  33. package/bin/ECS/Entity.js +17 -12
  34. package/bin/ECS/Entity.js.map +1 -1
  35. package/bin/ECS/Scene.d.ts +18 -2
  36. package/bin/ECS/Scene.d.ts.map +1 -1
  37. package/bin/ECS/Scene.js +67 -19
  38. package/bin/ECS/Scene.js.map +1 -1
  39. package/bin/ECS/Systems/EntitySystem.js +9 -5
  40. package/bin/ECS/Systems/EntitySystem.js.map +1 -1
  41. package/bin/ECS/Systems/IntervalSystem.js +8 -4
  42. package/bin/ECS/Systems/IntervalSystem.js.map +1 -1
  43. package/bin/ECS/Systems/PassiveSystem.js +6 -2
  44. package/bin/ECS/Systems/PassiveSystem.js.map +1 -1
  45. package/bin/ECS/Systems/ProcessingSystem.js +6 -2
  46. package/bin/ECS/Systems/ProcessingSystem.js.map +1 -1
  47. package/bin/ECS/Systems/index.js +11 -4
  48. package/bin/ECS/Systems/index.js.map +1 -1
  49. package/bin/ECS/Utils/Bits.js +5 -1
  50. package/bin/ECS/Utils/Bits.js.map +1 -1
  51. package/bin/ECS/Utils/ComponentTypeManager.js +8 -4
  52. package/bin/ECS/Utils/ComponentTypeManager.js.map +1 -1
  53. package/bin/ECS/Utils/EntityList.js +5 -1
  54. package/bin/ECS/Utils/EntityList.js.map +1 -1
  55. package/bin/ECS/Utils/EntityProcessorList.js +5 -1
  56. package/bin/ECS/Utils/EntityProcessorList.js.map +1 -1
  57. package/bin/ECS/Utils/IdentifierPool.js +5 -1
  58. package/bin/ECS/Utils/IdentifierPool.js.map +1 -1
  59. package/bin/ECS/Utils/Matcher.js +8 -4
  60. package/bin/ECS/Utils/Matcher.js.map +1 -1
  61. package/bin/ECS/Utils/index.js +15 -6
  62. package/bin/ECS/Utils/index.js.map +1 -1
  63. package/bin/ECS/index.js +27 -6
  64. package/bin/ECS/index.js.map +1 -1
  65. package/bin/Testing/Performance/benchmark.d.ts +6 -0
  66. package/bin/Testing/Performance/benchmark.d.ts.map +1 -0
  67. package/bin/Testing/Performance/benchmark.js +639 -0
  68. package/bin/Testing/Performance/benchmark.js.map +1 -0
  69. package/bin/Testing/Unit/bitmask-optimizer.test.d.ts +2 -0
  70. package/bin/Testing/Unit/bitmask-optimizer.test.d.ts.map +1 -0
  71. package/bin/Testing/Unit/bitmask-optimizer.test.js +164 -0
  72. package/bin/Testing/Unit/bitmask-optimizer.test.js.map +1 -0
  73. package/bin/Testing/Unit/component-pool.test.d.ts +5 -0
  74. package/bin/Testing/Unit/component-pool.test.d.ts.map +1 -0
  75. package/bin/Testing/Unit/component-pool.test.js +149 -0
  76. package/bin/Testing/Unit/component-pool.test.js.map +1 -0
  77. package/bin/Testing/test-runner.d.ts +51 -0
  78. package/bin/Testing/test-runner.d.ts.map +1 -0
  79. package/bin/Testing/test-runner.js +159 -0
  80. package/bin/Testing/test-runner.js.map +1 -0
  81. package/bin/Types/index.js +7 -4
  82. package/bin/Types/index.js.map +1 -1
  83. package/bin/Utils/Emitter.js +7 -2
  84. package/bin/Utils/Emitter.js.map +1 -1
  85. package/bin/Utils/Extensions/NumberExtension.js +5 -1
  86. package/bin/Utils/Extensions/NumberExtension.js.map +1 -1
  87. package/bin/Utils/Extensions/TypeUtils.js +5 -1
  88. package/bin/Utils/Extensions/TypeUtils.js.map +1 -1
  89. package/bin/Utils/Extensions/index.js +7 -2
  90. package/bin/Utils/Extensions/index.js.map +1 -1
  91. package/bin/Utils/GlobalManager.js +5 -1
  92. package/bin/Utils/GlobalManager.js.map +1 -1
  93. package/bin/Utils/PerformanceMonitor.js +7 -3
  94. package/bin/Utils/PerformanceMonitor.js.map +1 -1
  95. package/bin/Utils/Pool.js +9 -3
  96. package/bin/Utils/Pool.js.map +1 -1
  97. package/bin/Utils/Time.js +5 -1
  98. package/bin/Utils/Time.js.map +1 -1
  99. package/bin/Utils/Timers/ITimer.js +2 -1
  100. package/bin/Utils/Timers/Timer.js +7 -3
  101. package/bin/Utils/Timers/Timer.js.map +1 -1
  102. package/bin/Utils/Timers/TimerManager.js +8 -4
  103. package/bin/Utils/Timers/TimerManager.js.map +1 -1
  104. package/bin/Utils/WasmCore.d.ts +234 -0
  105. package/bin/Utils/WasmCore.d.ts.map +1 -0
  106. package/bin/Utils/WasmCore.js +634 -0
  107. package/bin/Utils/WasmCore.js.map +1 -0
  108. package/bin/Utils/index.d.ts +10 -0
  109. package/bin/Utils/index.d.ts.map +1 -1
  110. package/bin/Utils/index.js +36 -5
  111. package/bin/Utils/index.js.map +1 -1
  112. package/bin/index.d.ts +1 -2
  113. package/bin/index.d.ts.map +1 -1
  114. package/bin/index.js +42 -14
  115. package/bin/index.js.map +1 -1
  116. package/package.json +58 -74
  117. package/bin/Utils/AccelerationProvider.d.ts +0 -192
  118. package/bin/Utils/AccelerationProvider.d.ts.map +0 -1
  119. package/bin/Utils/AccelerationProvider.js +0 -261
  120. package/bin/Utils/AccelerationProvider.js.map +0 -1
  121. package/bin/Utils/WasmBridge.d.ts +0 -152
  122. package/bin/Utils/WasmBridge.d.ts.map +0 -1
  123. package/bin/Utils/WasmBridge.js +0 -336
  124. package/bin/Utils/WasmBridge.js.map +0 -1
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IndexUpdateBatcher = exports.IndexUpdateType = void 0;
4
+ /**
5
+ * 索引更新操作类型
6
+ */
7
+ var IndexUpdateType;
8
+ (function (IndexUpdateType) {
9
+ IndexUpdateType["ADD_ENTITY"] = "add_entity";
10
+ IndexUpdateType["REMOVE_ENTITY"] = "remove_entity";
11
+ IndexUpdateType["UPDATE_ENTITY"] = "update_entity";
12
+ })(IndexUpdateType || (exports.IndexUpdateType = IndexUpdateType = {}));
13
+ /**
14
+ * 延迟索引更新器,用于批量更新查询索引以提高性能
15
+ */
16
+ class IndexUpdateBatcher {
17
+ constructor() {
18
+ this.pendingOperations = [];
19
+ this.isProcessing = false;
20
+ this.batchSize = 1000;
21
+ this.flushTimeout = null;
22
+ this.flushDelay = 16; // 16ms,约60fps
23
+ }
24
+ /**
25
+ * 添加索引更新操作
26
+ */
27
+ addOperation(operation) {
28
+ this.pendingOperations.push(operation);
29
+ // 如果达到批量大小,立即处理
30
+ if (this.pendingOperations.length >= this.batchSize) {
31
+ this.flush();
32
+ }
33
+ else {
34
+ // 否则延迟处理
35
+ this.scheduleFlush();
36
+ }
37
+ }
38
+ /**
39
+ * 批量添加实体
40
+ */
41
+ addEntities(entities) {
42
+ for (const entity of entities) {
43
+ this.pendingOperations.push({
44
+ type: IndexUpdateType.ADD_ENTITY,
45
+ entity
46
+ });
47
+ }
48
+ if (this.pendingOperations.length >= this.batchSize) {
49
+ this.flush();
50
+ }
51
+ else {
52
+ this.scheduleFlush();
53
+ }
54
+ }
55
+ /**
56
+ * 批量移除实体
57
+ */
58
+ removeEntities(entities) {
59
+ for (const entity of entities) {
60
+ this.pendingOperations.push({
61
+ type: IndexUpdateType.REMOVE_ENTITY,
62
+ entity
63
+ });
64
+ }
65
+ if (this.pendingOperations.length >= this.batchSize) {
66
+ this.flush();
67
+ }
68
+ else {
69
+ this.scheduleFlush();
70
+ }
71
+ }
72
+ /**
73
+ * 批量更新实体
74
+ */
75
+ updateEntities(updates) {
76
+ for (const update of updates) {
77
+ this.pendingOperations.push({
78
+ type: IndexUpdateType.UPDATE_ENTITY,
79
+ entity: update.entity,
80
+ oldMask: update.oldMask,
81
+ newMask: update.newMask
82
+ });
83
+ }
84
+ if (this.pendingOperations.length >= this.batchSize) {
85
+ this.flush();
86
+ }
87
+ else {
88
+ this.scheduleFlush();
89
+ }
90
+ }
91
+ /**
92
+ * 安排延迟刷新
93
+ */
94
+ scheduleFlush() {
95
+ if (this.flushTimeout) {
96
+ return;
97
+ }
98
+ this.flushTimeout = setTimeout(() => {
99
+ this.flush();
100
+ }, this.flushDelay);
101
+ }
102
+ /**
103
+ * 立即处理所有待处理的操作
104
+ */
105
+ flush() {
106
+ if (this.isProcessing || this.pendingOperations.length === 0) {
107
+ return;
108
+ }
109
+ this.isProcessing = true;
110
+ if (this.flushTimeout) {
111
+ clearTimeout(this.flushTimeout);
112
+ this.flushTimeout = null;
113
+ }
114
+ try {
115
+ this.processBatch();
116
+ }
117
+ finally {
118
+ this.isProcessing = false;
119
+ }
120
+ }
121
+ /**
122
+ * 处理批量操作
123
+ */
124
+ processBatch() {
125
+ const operations = this.pendingOperations;
126
+ this.pendingOperations = [];
127
+ // 按操作类型分组以优化处理
128
+ const addOperations = [];
129
+ const removeOperations = [];
130
+ const updateOperations = [];
131
+ for (const operation of operations) {
132
+ switch (operation.type) {
133
+ case IndexUpdateType.ADD_ENTITY:
134
+ addOperations.push(operation.entity);
135
+ break;
136
+ case IndexUpdateType.REMOVE_ENTITY:
137
+ removeOperations.push(operation.entity);
138
+ break;
139
+ case IndexUpdateType.UPDATE_ENTITY:
140
+ if (operation.oldMask !== undefined && operation.newMask !== undefined) {
141
+ updateOperations.push({
142
+ entity: operation.entity,
143
+ oldMask: operation.oldMask,
144
+ newMask: operation.newMask
145
+ });
146
+ }
147
+ break;
148
+ }
149
+ }
150
+ // 批量处理每种类型的操作
151
+ if (addOperations.length > 0) {
152
+ this.processBatchAdd(addOperations);
153
+ }
154
+ if (removeOperations.length > 0) {
155
+ this.processBatchRemove(removeOperations);
156
+ }
157
+ if (updateOperations.length > 0) {
158
+ this.processBatchUpdate(updateOperations);
159
+ }
160
+ }
161
+ /**
162
+ * 批量处理添加操作
163
+ */
164
+ processBatchAdd(entities) {
165
+ // 这里应该调用QuerySystem的批量添加方法
166
+ // 由于需要访问QuerySystem,这个方法应该由外部注入处理函数
167
+ if (this.onBatchAdd) {
168
+ this.onBatchAdd(entities);
169
+ }
170
+ }
171
+ /**
172
+ * 批量处理移除操作
173
+ */
174
+ processBatchRemove(entities) {
175
+ if (this.onBatchRemove) {
176
+ this.onBatchRemove(entities);
177
+ }
178
+ }
179
+ /**
180
+ * 批量处理更新操作
181
+ */
182
+ processBatchUpdate(updates) {
183
+ if (this.onBatchUpdate) {
184
+ this.onBatchUpdate(updates);
185
+ }
186
+ }
187
+ /**
188
+ * 设置批量大小
189
+ */
190
+ setBatchSize(size) {
191
+ this.batchSize = Math.max(1, size);
192
+ }
193
+ /**
194
+ * 设置刷新延迟
195
+ */
196
+ setFlushDelay(delay) {
197
+ this.flushDelay = Math.max(0, delay);
198
+ }
199
+ /**
200
+ * 获取待处理操作数量
201
+ */
202
+ getPendingCount() {
203
+ return this.pendingOperations.length;
204
+ }
205
+ /**
206
+ * 清空所有待处理操作
207
+ */
208
+ clear() {
209
+ this.pendingOperations.length = 0;
210
+ if (this.flushTimeout) {
211
+ clearTimeout(this.flushTimeout);
212
+ this.flushTimeout = null;
213
+ }
214
+ }
215
+ /**
216
+ * 检查是否有待处理操作
217
+ */
218
+ hasPendingOperations() {
219
+ return this.pendingOperations.length > 0;
220
+ }
221
+ }
222
+ exports.IndexUpdateBatcher = IndexUpdateBatcher;
223
+ //# sourceMappingURL=IndexUpdateBatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexUpdateBatcher.js","sourceRoot":"","sources":["../../../src/ECS/Core/IndexUpdateBatcher.ts"],"names":[],"mappings":"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"}