@esengine/ecs-framework 2.0.5 → 2.0.7
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.
- package/bin/Core.js +23 -21
- package/bin/Core.js.map +1 -1
- package/bin/ECS/Component.js +5 -1
- package/bin/ECS/Component.js.map +1 -1
- package/bin/ECS/Components/IUpdatable.js +7 -2
- package/bin/ECS/Components/IUpdatable.js.map +1 -1
- package/bin/ECS/Components/SceneComponent.js +5 -1
- package/bin/ECS/Components/SceneComponent.js.map +1 -1
- package/bin/ECS/Core/BitMaskOptimizer.d.ts +75 -0
- package/bin/ECS/Core/BitMaskOptimizer.d.ts.map +1 -0
- package/bin/ECS/Core/BitMaskOptimizer.js +165 -0
- package/bin/ECS/Core/BitMaskOptimizer.js.map +1 -0
- package/bin/ECS/Core/ComponentPool.d.ts +72 -0
- package/bin/ECS/Core/ComponentPool.d.ts.map +1 -0
- package/bin/ECS/Core/ComponentPool.js +128 -0
- package/bin/ECS/Core/ComponentPool.js.map +1 -0
- package/bin/ECS/Core/ComponentStorage.js +9 -3
- package/bin/ECS/Core/ComponentStorage.js.map +1 -1
- package/bin/ECS/Core/EventSystem.js +13 -7
- package/bin/ECS/Core/EventSystem.js.map +1 -1
- package/bin/ECS/Core/FluentAPI.js +24 -17
- package/bin/ECS/Core/FluentAPI.js.map +1 -1
- package/bin/ECS/Core/IndexUpdateBatcher.d.ts +100 -0
- package/bin/ECS/Core/IndexUpdateBatcher.d.ts.map +1 -0
- package/bin/ECS/Core/IndexUpdateBatcher.js +223 -0
- package/bin/ECS/Core/IndexUpdateBatcher.js.map +1 -0
- package/bin/ECS/Core/QuerySystem.d.ts +292 -444
- package/bin/ECS/Core/QuerySystem.d.ts.map +1 -1
- package/bin/ECS/Core/QuerySystem.js +661 -1075
- package/bin/ECS/Core/QuerySystem.js.map +1 -1
- package/bin/ECS/CoreEvents.js +5 -2
- package/bin/ECS/CoreEvents.js.map +1 -1
- package/bin/ECS/Entity.js +18 -14
- package/bin/ECS/Entity.js.map +1 -1
- package/bin/ECS/Scene.d.ts +18 -2
- package/bin/ECS/Scene.d.ts.map +1 -1
- package/bin/ECS/Scene.js +72 -27
- package/bin/ECS/Scene.js.map +1 -1
- package/bin/ECS/Systems/EntitySystem.js +9 -5
- package/bin/ECS/Systems/EntitySystem.js.map +1 -1
- package/bin/ECS/Systems/IntervalSystem.js +8 -4
- package/bin/ECS/Systems/IntervalSystem.js.map +1 -1
- package/bin/ECS/Systems/PassiveSystem.js +6 -2
- package/bin/ECS/Systems/PassiveSystem.js.map +1 -1
- package/bin/ECS/Systems/ProcessingSystem.js +6 -2
- package/bin/ECS/Systems/ProcessingSystem.js.map +1 -1
- package/bin/ECS/Systems/index.js +11 -4
- package/bin/ECS/Systems/index.js.map +1 -1
- package/bin/ECS/Utils/Bits.js +5 -1
- package/bin/ECS/Utils/Bits.js.map +1 -1
- package/bin/ECS/Utils/ComponentTypeManager.js +8 -4
- package/bin/ECS/Utils/ComponentTypeManager.js.map +1 -1
- package/bin/ECS/Utils/EntityList.js +5 -1
- package/bin/ECS/Utils/EntityList.js.map +1 -1
- package/bin/ECS/Utils/EntityProcessorList.js +5 -1
- package/bin/ECS/Utils/EntityProcessorList.js.map +1 -1
- package/bin/ECS/Utils/IdentifierPool.js +5 -1
- package/bin/ECS/Utils/IdentifierPool.js.map +1 -1
- package/bin/ECS/Utils/Matcher.js +8 -4
- package/bin/ECS/Utils/Matcher.js.map +1 -1
- package/bin/ECS/Utils/index.js +15 -6
- package/bin/ECS/Utils/index.js.map +1 -1
- package/bin/ECS/index.js +27 -6
- package/bin/ECS/index.js.map +1 -1
- package/bin/Testing/Performance/benchmark.d.ts +6 -0
- package/bin/Testing/Performance/benchmark.d.ts.map +1 -0
- package/bin/Testing/Performance/benchmark.js +639 -0
- package/bin/Testing/Performance/benchmark.js.map +1 -0
- package/bin/Testing/Unit/bitmask-optimizer.test.d.ts +2 -0
- package/bin/Testing/Unit/bitmask-optimizer.test.d.ts.map +1 -0
- package/bin/Testing/Unit/bitmask-optimizer.test.js +164 -0
- package/bin/Testing/Unit/bitmask-optimizer.test.js.map +1 -0
- package/bin/Testing/Unit/component-pool.test.d.ts +5 -0
- package/bin/Testing/Unit/component-pool.test.d.ts.map +1 -0
- package/bin/Testing/Unit/component-pool.test.js +149 -0
- package/bin/Testing/Unit/component-pool.test.js.map +1 -0
- package/bin/Testing/test-runner.d.ts +51 -0
- package/bin/Testing/test-runner.d.ts.map +1 -0
- package/bin/Testing/test-runner.js +159 -0
- package/bin/Testing/test-runner.js.map +1 -0
- package/bin/Types/index.js +7 -4
- package/bin/Types/index.js.map +1 -1
- package/bin/Utils/Emitter.js +7 -2
- package/bin/Utils/Emitter.js.map +1 -1
- package/bin/Utils/Extensions/NumberExtension.js +5 -1
- package/bin/Utils/Extensions/NumberExtension.js.map +1 -1
- package/bin/Utils/Extensions/TypeUtils.js +5 -1
- package/bin/Utils/Extensions/TypeUtils.js.map +1 -1
- package/bin/Utils/Extensions/index.js +7 -2
- package/bin/Utils/Extensions/index.js.map +1 -1
- package/bin/Utils/GlobalManager.js +5 -1
- package/bin/Utils/GlobalManager.js.map +1 -1
- package/bin/Utils/PerformanceMonitor.js +9 -5
- package/bin/Utils/PerformanceMonitor.js.map +1 -1
- package/bin/Utils/Pool.js +9 -3
- package/bin/Utils/Pool.js.map +1 -1
- package/bin/Utils/Time.js +5 -1
- package/bin/Utils/Time.js.map +1 -1
- package/bin/Utils/Timers/ITimer.js +2 -1
- package/bin/Utils/Timers/Timer.js +7 -3
- package/bin/Utils/Timers/Timer.js.map +1 -1
- package/bin/Utils/Timers/TimerManager.js +8 -4
- package/bin/Utils/Timers/TimerManager.js.map +1 -1
- package/bin/Utils/WasmCore.d.ts +234 -0
- package/bin/Utils/WasmCore.d.ts.map +1 -0
- package/bin/Utils/WasmCore.js +634 -0
- package/bin/Utils/WasmCore.js.map +1 -0
- package/bin/Utils/index.d.ts +10 -0
- package/bin/Utils/index.d.ts.map +1 -1
- package/bin/Utils/index.js +36 -5
- package/bin/Utils/index.js.map +1 -1
- package/bin/index.d.ts +1 -2
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +42 -14
- package/bin/index.js.map +1 -1
- package/package.json +54 -74
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 统一的WASM ECS核心模块
|
|
3
|
+
*
|
|
4
|
+
* 为小游戏优化的高性能ECS引擎,提供简洁的API和自动回退机制
|
|
5
|
+
* 适用于NPM包发布和多种部署环境
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
/** 实体ID类型 */
|
|
9
|
+
export type EntityId = number;
|
|
10
|
+
/** 组件掩码类型 */
|
|
11
|
+
export type ComponentMask = bigint;
|
|
12
|
+
/** 查询结果接口 */
|
|
13
|
+
export interface QueryResult {
|
|
14
|
+
/** 查询到的实体ID数组 */
|
|
15
|
+
entities: Uint32Array;
|
|
16
|
+
/** 实体数量 */
|
|
17
|
+
count: number;
|
|
18
|
+
}
|
|
19
|
+
/** 性能统计接口 */
|
|
20
|
+
export interface PerformanceStats {
|
|
21
|
+
/** 实体总数 */
|
|
22
|
+
entityCount: number;
|
|
23
|
+
/** 索引数量 */
|
|
24
|
+
indexCount: number;
|
|
25
|
+
/** 查询次数 */
|
|
26
|
+
queryCount: number;
|
|
27
|
+
/** 更新次数 */
|
|
28
|
+
updateCount: number;
|
|
29
|
+
/** 是否使用WASM */
|
|
30
|
+
wasmEnabled: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 统一的WASM ECS核心类
|
|
34
|
+
*
|
|
35
|
+
* 提供高性能的ECS操作,自动选择WASM或JavaScript实现
|
|
36
|
+
* 针对小游戏场景优化,易于使用且性能卓越
|
|
37
|
+
* 支持NPM包发布和多种部署环境
|
|
38
|
+
*/
|
|
39
|
+
export declare class WasmEcsCore {
|
|
40
|
+
/** WASM核心实例 */
|
|
41
|
+
private wasmCore;
|
|
42
|
+
/** WASM模块 */
|
|
43
|
+
private wasmModule;
|
|
44
|
+
/** 是否已初始化 */
|
|
45
|
+
private initialized;
|
|
46
|
+
/** 是否使用WASM */
|
|
47
|
+
private usingWasm;
|
|
48
|
+
private silent;
|
|
49
|
+
private jsEntityMasks;
|
|
50
|
+
private jsNextEntityId;
|
|
51
|
+
private jsQueryCount;
|
|
52
|
+
private jsUpdateCount;
|
|
53
|
+
/**
|
|
54
|
+
* 设置静默模式
|
|
55
|
+
*/
|
|
56
|
+
setSilent(silent: boolean): void;
|
|
57
|
+
/**
|
|
58
|
+
* 初始化ECS核心
|
|
59
|
+
*
|
|
60
|
+
* 尝试加载WASM模块,失败时自动回退到JavaScript实现
|
|
61
|
+
*
|
|
62
|
+
* @returns 初始化是否成功
|
|
63
|
+
*/
|
|
64
|
+
initialize(): Promise<boolean>;
|
|
65
|
+
/**
|
|
66
|
+
* 创建新实体
|
|
67
|
+
*
|
|
68
|
+
* @returns 新实体的ID
|
|
69
|
+
*/
|
|
70
|
+
createEntity(): EntityId;
|
|
71
|
+
/**
|
|
72
|
+
* 删除实体
|
|
73
|
+
*
|
|
74
|
+
* @param entityId 实体ID
|
|
75
|
+
* @returns 是否删除成功
|
|
76
|
+
*/
|
|
77
|
+
destroyEntity(entityId: EntityId): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* 更新实体的组件掩码
|
|
80
|
+
*
|
|
81
|
+
* @param entityId 实体ID
|
|
82
|
+
* @param mask 组件掩码
|
|
83
|
+
*/
|
|
84
|
+
updateEntityMask(entityId: EntityId, mask: ComponentMask): void;
|
|
85
|
+
/**
|
|
86
|
+
* 批量更新实体掩码(高性能)
|
|
87
|
+
*
|
|
88
|
+
* @param entityIds 实体ID数组
|
|
89
|
+
* @param masks 组件掩码数组
|
|
90
|
+
*/
|
|
91
|
+
batchUpdateMasks(entityIds: EntityId[], masks: ComponentMask[]): void;
|
|
92
|
+
/**
|
|
93
|
+
* 查询包含指定组件的实体
|
|
94
|
+
*
|
|
95
|
+
* @param mask 组件掩码
|
|
96
|
+
* @param maxResults 最大结果数
|
|
97
|
+
* @returns 查询结果
|
|
98
|
+
*/
|
|
99
|
+
queryEntities(mask: ComponentMask, maxResults?: number): QueryResult;
|
|
100
|
+
/**
|
|
101
|
+
* 查询指定掩码的实体(带缓存优化)
|
|
102
|
+
*
|
|
103
|
+
* @param mask 组件掩码
|
|
104
|
+
* @returns 查询结果
|
|
105
|
+
*/
|
|
106
|
+
queryCached(mask: ComponentMask): QueryResult;
|
|
107
|
+
/**
|
|
108
|
+
* 查询包含多个组件的实体
|
|
109
|
+
*
|
|
110
|
+
* @param masks 组件掩码数组
|
|
111
|
+
* @param maxResults 最大结果数
|
|
112
|
+
* @returns 查询结果
|
|
113
|
+
*/
|
|
114
|
+
queryMultipleComponents(masks: ComponentMask[], maxResults?: number): QueryResult;
|
|
115
|
+
/**
|
|
116
|
+
* 排除查询:包含某些组件但不包含其他组件
|
|
117
|
+
*
|
|
118
|
+
* @param includeMask 必须包含的组件掩码
|
|
119
|
+
* @param excludeMask 必须排除的组件掩码
|
|
120
|
+
* @param maxResults 最大结果数
|
|
121
|
+
* @returns 查询结果
|
|
122
|
+
*/
|
|
123
|
+
queryWithExclusion(includeMask: ComponentMask, excludeMask: ComponentMask, maxResults?: number): QueryResult;
|
|
124
|
+
/**
|
|
125
|
+
* 获取实体的组件掩码
|
|
126
|
+
*
|
|
127
|
+
* @param entityId 实体ID
|
|
128
|
+
* @returns 组件掩码,如果实体不存在则返回null
|
|
129
|
+
*/
|
|
130
|
+
getEntityMask(entityId: EntityId): ComponentMask | null;
|
|
131
|
+
/**
|
|
132
|
+
* 检查实体是否存在
|
|
133
|
+
*
|
|
134
|
+
* @param entityId 实体ID
|
|
135
|
+
* @returns 是否存在
|
|
136
|
+
*/
|
|
137
|
+
entityExists(entityId: EntityId): boolean;
|
|
138
|
+
/**
|
|
139
|
+
* 创建组件掩码
|
|
140
|
+
*
|
|
141
|
+
* @param componentIds 组件ID数组
|
|
142
|
+
* @returns 组件掩码
|
|
143
|
+
*/
|
|
144
|
+
createComponentMask(componentIds: number[]): ComponentMask;
|
|
145
|
+
/**
|
|
146
|
+
* 检查掩码是否包含组件
|
|
147
|
+
*
|
|
148
|
+
* @param mask 组件掩码
|
|
149
|
+
* @param componentId 组件ID
|
|
150
|
+
* @returns 是否包含
|
|
151
|
+
*/
|
|
152
|
+
maskContainsComponent(mask: ComponentMask, componentId: number): boolean;
|
|
153
|
+
/**
|
|
154
|
+
* 获取性能统计信息
|
|
155
|
+
*
|
|
156
|
+
* @returns 性能统计
|
|
157
|
+
*/
|
|
158
|
+
getPerformanceStats(): PerformanceStats;
|
|
159
|
+
/**
|
|
160
|
+
* 清空所有数据
|
|
161
|
+
*/
|
|
162
|
+
clear(): void;
|
|
163
|
+
/**
|
|
164
|
+
* 是否使用WASM实现
|
|
165
|
+
*
|
|
166
|
+
* @returns 是否使用WASM
|
|
167
|
+
*/
|
|
168
|
+
isUsingWasm(): boolean;
|
|
169
|
+
/**
|
|
170
|
+
* 是否已初始化
|
|
171
|
+
*
|
|
172
|
+
* @returns 是否已初始化
|
|
173
|
+
*/
|
|
174
|
+
isInitialized(): boolean;
|
|
175
|
+
/**
|
|
176
|
+
* 确保已初始化
|
|
177
|
+
*/
|
|
178
|
+
private ensureInitialized;
|
|
179
|
+
/**
|
|
180
|
+
* 清理资源
|
|
181
|
+
*/
|
|
182
|
+
cleanup(): void;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* 全局ECS核心实例
|
|
186
|
+
*
|
|
187
|
+
* 提供单例模式的ECS核心,确保整个应用使用同一个实例
|
|
188
|
+
*/
|
|
189
|
+
export declare const ecsCore: WasmEcsCore;
|
|
190
|
+
/**
|
|
191
|
+
* 初始化ECS引擎
|
|
192
|
+
*
|
|
193
|
+
* 便捷的初始化函数,推荐在应用启动时调用
|
|
194
|
+
*
|
|
195
|
+
* @param silent 是否静默模式
|
|
196
|
+
* @returns 初始化是否成功
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* ```typescript
|
|
200
|
+
* import { initializeEcs } from 'ecs-framework';
|
|
201
|
+
*
|
|
202
|
+
* async function main() {
|
|
203
|
+
* // 使用默认配置(JavaScript实现)
|
|
204
|
+
* await initializeEcs();
|
|
205
|
+
*
|
|
206
|
+
* // 或者自定义配置
|
|
207
|
+
* await initializeEcs({
|
|
208
|
+
* enabled: false, // 禁用WASM
|
|
209
|
+
* silent: true // 静默模式
|
|
210
|
+
* });
|
|
211
|
+
* }
|
|
212
|
+
* ```
|
|
213
|
+
*/
|
|
214
|
+
export declare function initializeEcs(silent?: boolean): Promise<boolean>;
|
|
215
|
+
/**
|
|
216
|
+
* 快速查询工具函数
|
|
217
|
+
*
|
|
218
|
+
* 为常见查询操作提供便捷的API
|
|
219
|
+
*/
|
|
220
|
+
export declare const Query: {
|
|
221
|
+
/**
|
|
222
|
+
* 查询拥有指定组件的所有实体
|
|
223
|
+
*/
|
|
224
|
+
withComponent: (componentId: number, maxResults?: number) => QueryResult;
|
|
225
|
+
/**
|
|
226
|
+
* 查询拥有多个组件的实体
|
|
227
|
+
*/
|
|
228
|
+
withComponents: (componentIds: number[], maxResults?: number) => QueryResult;
|
|
229
|
+
/**
|
|
230
|
+
* 查询拥有某些组件但不拥有其他组件的实体
|
|
231
|
+
*/
|
|
232
|
+
withExclusion: (includeIds: number[], excludeIds: number[], maxResults?: number) => QueryResult;
|
|
233
|
+
};
|
|
234
|
+
//# sourceMappingURL=WasmCore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WasmCore.d.ts","sourceRoot":"","sources":["../../src/Utils/WasmCore.ts"],"names":[],"mappings":"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"}
|