@esengine/ecs-framework 2.0.5 → 2.0.6
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 +2 -4
- package/bin/Core.js.map +1 -1
- package/bin/ECS/Core/EventSystem.js +1 -1
- package/bin/ECS/Core/EventSystem.js.map +1 -1
- package/bin/ECS/Entity.js +1 -2
- package/bin/ECS/Entity.js.map +1 -1
- package/bin/ECS/Scene.js +5 -8
- package/bin/ECS/Scene.js.map +1 -1
- package/bin/Utils/AccelerationProvider.d.ts +192 -0
- package/bin/Utils/AccelerationProvider.d.ts.map +1 -0
- package/bin/Utils/AccelerationProvider.js +261 -0
- package/bin/Utils/AccelerationProvider.js.map +1 -0
- package/bin/Utils/PerformanceMonitor.js +2 -2
- package/bin/Utils/PerformanceMonitor.js.map +1 -1
- package/bin/Utils/WasmBridge.d.ts +152 -0
- package/bin/Utils/WasmBridge.d.ts.map +1 -0
- package/bin/Utils/WasmBridge.js +336 -0
- package/bin/Utils/WasmBridge.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ECS框架加速提供者接口
|
|
3
|
+
*
|
|
4
|
+
* 提供可替换的性能加速实现,专注于ECS实体查询功能
|
|
5
|
+
* 支持JavaScript、WebAssembly等不同后端实现
|
|
6
|
+
*/
|
|
7
|
+
// ================================
|
|
8
|
+
// JavaScript实现
|
|
9
|
+
// ================================
|
|
10
|
+
/**
|
|
11
|
+
* JavaScript实现的基础加速提供者
|
|
12
|
+
*
|
|
13
|
+
* 提供纯JavaScript的ECS查询实现,作为默认后端
|
|
14
|
+
*/
|
|
15
|
+
export class JavaScriptProvider {
|
|
16
|
+
/**
|
|
17
|
+
* 构造函数
|
|
18
|
+
*/
|
|
19
|
+
constructor() {
|
|
20
|
+
this.name = 'JavaScript';
|
|
21
|
+
this.version = '1.0.0';
|
|
22
|
+
this.isWasm = false;
|
|
23
|
+
this.query = new JSQueryProvider();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 初始化提供者
|
|
27
|
+
*/
|
|
28
|
+
async initialize() {
|
|
29
|
+
// JavaScript版本无需初始化
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 检查是否支持指定功能
|
|
33
|
+
* @param feature 功能名称
|
|
34
|
+
* @returns 是否支持该功能
|
|
35
|
+
*/
|
|
36
|
+
supports(feature) {
|
|
37
|
+
const supportedFeatures = [
|
|
38
|
+
'entity-query', 'batch-operations', 'component-masks'
|
|
39
|
+
];
|
|
40
|
+
return supportedFeatures.includes(feature);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 获取性能信息
|
|
44
|
+
* @returns 性能统计信息
|
|
45
|
+
*/
|
|
46
|
+
getPerformanceInfo() {
|
|
47
|
+
return {
|
|
48
|
+
operationsPerSecond: 1000000, // 100万次/秒
|
|
49
|
+
memoryUsage: 0,
|
|
50
|
+
features: ['entity-query', 'batch-operations', 'component-masks']
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 清理资源
|
|
55
|
+
*/
|
|
56
|
+
dispose() {
|
|
57
|
+
// JavaScript版本无需清理
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* JavaScript查询实现
|
|
62
|
+
*
|
|
63
|
+
* 使用Map存储实体掩码,提供基础的查询功能
|
|
64
|
+
*/
|
|
65
|
+
class JSQueryProvider {
|
|
66
|
+
constructor() {
|
|
67
|
+
/** 实体掩码存储 */
|
|
68
|
+
this.entityMasks = new Map();
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 根据单个组件掩码查询实体
|
|
72
|
+
* @param componentMask 组件掩码
|
|
73
|
+
* @param maxResults 最大结果数量
|
|
74
|
+
* @returns 查询结果
|
|
75
|
+
*/
|
|
76
|
+
queryByComponent(componentMask, maxResults) {
|
|
77
|
+
const results = new Uint32Array(maxResults);
|
|
78
|
+
let count = 0;
|
|
79
|
+
for (const [entityId, mask] of this.entityMasks) {
|
|
80
|
+
if ((mask & componentMask) === componentMask && count < maxResults) {
|
|
81
|
+
results[count++] = entityId;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return { entities: results.slice(0, count), count };
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 根据多个组件掩码查询实体(AND操作)
|
|
88
|
+
* @param componentMasks 组件掩码数组
|
|
89
|
+
* @param maxResults 最大结果数量
|
|
90
|
+
* @returns 查询结果
|
|
91
|
+
*/
|
|
92
|
+
queryByComponents(componentMasks, maxResults) {
|
|
93
|
+
const results = new Uint32Array(maxResults);
|
|
94
|
+
let count = 0;
|
|
95
|
+
for (const [entityId, mask] of this.entityMasks) {
|
|
96
|
+
let matches = true;
|
|
97
|
+
for (const componentMask of componentMasks) {
|
|
98
|
+
if ((mask & componentMask) !== componentMask) {
|
|
99
|
+
matches = false;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (matches && count < maxResults) {
|
|
104
|
+
results[count++] = entityId;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return { entities: results.slice(0, count), count };
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* 查询包含指定组件但排除其他组件的实体
|
|
111
|
+
* @param includeMask 必须包含的组件掩码
|
|
112
|
+
* @param excludeMask 必须排除的组件掩码
|
|
113
|
+
* @param maxResults 最大结果数量
|
|
114
|
+
* @returns 查询结果
|
|
115
|
+
*/
|
|
116
|
+
queryExcluding(includeMask, excludeMask, maxResults) {
|
|
117
|
+
const results = new Uint32Array(maxResults);
|
|
118
|
+
let count = 0;
|
|
119
|
+
for (const [entityId, mask] of this.entityMasks) {
|
|
120
|
+
if ((mask & includeMask) === includeMask && (mask & excludeMask) === 0n && count < maxResults) {
|
|
121
|
+
results[count++] = entityId;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return { entities: results.slice(0, count), count };
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 更新实体的组件掩码
|
|
128
|
+
* @param entityId 实体ID
|
|
129
|
+
* @param componentMask 新的组件掩码
|
|
130
|
+
*/
|
|
131
|
+
updateEntityMask(entityId, componentMask) {
|
|
132
|
+
this.entityMasks.set(entityId, componentMask);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* 批量更新实体掩码
|
|
136
|
+
* @param entityIds 实体ID数组
|
|
137
|
+
* @param masks 掩码数组
|
|
138
|
+
*/
|
|
139
|
+
batchUpdateMasks(entityIds, masks) {
|
|
140
|
+
for (let i = 0; i < entityIds.length; i++) {
|
|
141
|
+
this.entityMasks.set(entityIds[i], masks[i]);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// ================================
|
|
146
|
+
// 管理器类
|
|
147
|
+
// ================================
|
|
148
|
+
/**
|
|
149
|
+
* 加速提供者管理器
|
|
150
|
+
*
|
|
151
|
+
* 管理不同的加速提供者实现,支持动态切换和性能测试
|
|
152
|
+
*/
|
|
153
|
+
export class AccelerationManager {
|
|
154
|
+
/**
|
|
155
|
+
* 私有构造函数
|
|
156
|
+
*/
|
|
157
|
+
constructor() {
|
|
158
|
+
/** 可用的提供者映射 */
|
|
159
|
+
this.availableProviders = new Map();
|
|
160
|
+
// 默认使用JavaScript提供者
|
|
161
|
+
this.currentProvider = new JavaScriptProvider();
|
|
162
|
+
this.availableProviders.set('javascript', this.currentProvider);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* 获取单例实例
|
|
166
|
+
* @returns 管理器实例
|
|
167
|
+
*/
|
|
168
|
+
static getInstance() {
|
|
169
|
+
if (!AccelerationManager.instance) {
|
|
170
|
+
AccelerationManager.instance = new AccelerationManager();
|
|
171
|
+
}
|
|
172
|
+
return AccelerationManager.instance;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* 注册新的加速提供者
|
|
176
|
+
* @param name 提供者名称
|
|
177
|
+
* @param provider 提供者实例
|
|
178
|
+
*/
|
|
179
|
+
registerProvider(name, provider) {
|
|
180
|
+
this.availableProviders.set(name, provider);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* 切换加速提供者
|
|
184
|
+
* @param name 提供者名称
|
|
185
|
+
* @returns 是否切换成功
|
|
186
|
+
*/
|
|
187
|
+
async setProvider(name) {
|
|
188
|
+
const provider = this.availableProviders.get(name);
|
|
189
|
+
if (!provider) {
|
|
190
|
+
console.warn(`Acceleration provider '${name}' not found`);
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
try {
|
|
194
|
+
await provider.initialize();
|
|
195
|
+
this.currentProvider = provider;
|
|
196
|
+
console.log(`Switched to acceleration provider: ${provider.name} v${provider.version}`);
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
console.error(`Failed to initialize provider '${name}':`, error);
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* 获取当前提供者
|
|
206
|
+
* @returns 当前提供者实例
|
|
207
|
+
*/
|
|
208
|
+
getProvider() {
|
|
209
|
+
return this.currentProvider;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* 获取所有可用提供者名称
|
|
213
|
+
* @returns 提供者名称数组
|
|
214
|
+
*/
|
|
215
|
+
getAvailableProviders() {
|
|
216
|
+
return Array.from(this.availableProviders.keys());
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* 自动选择最佳提供者
|
|
220
|
+
* 优先选择WebAssembly提供者,回退到JavaScript提供者
|
|
221
|
+
*/
|
|
222
|
+
async selectBestProvider() {
|
|
223
|
+
const providers = Array.from(this.availableProviders.values());
|
|
224
|
+
// 优先选择WebAssembly提供者
|
|
225
|
+
const wasmProvider = providers.find(p => p.isWasm);
|
|
226
|
+
if (wasmProvider) {
|
|
227
|
+
const success = await this.setProvider(wasmProvider.name);
|
|
228
|
+
if (success)
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
// 回退到JavaScript提供者
|
|
232
|
+
await this.setProvider('javascript');
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* 性能基准测试
|
|
236
|
+
* @returns 各提供者的性能测试结果(操作/秒)
|
|
237
|
+
*/
|
|
238
|
+
async benchmarkProviders() {
|
|
239
|
+
const results = new Map();
|
|
240
|
+
for (const [name, provider] of this.availableProviders) {
|
|
241
|
+
try {
|
|
242
|
+
await provider.initialize();
|
|
243
|
+
// 简单的查询性能测试
|
|
244
|
+
const start = performance.now();
|
|
245
|
+
const testMask = 15n; // 测试掩码
|
|
246
|
+
for (let i = 0; i < 10000; i++) {
|
|
247
|
+
provider.query.queryByComponent(testMask, 100);
|
|
248
|
+
}
|
|
249
|
+
const end = performance.now();
|
|
250
|
+
results.set(name, 10000 / (end - start) * 1000); // 操作/秒
|
|
251
|
+
provider.dispose();
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
console.warn(`Benchmark failed for provider '${name}':`, error);
|
|
255
|
+
results.set(name, 0);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return results;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=AccelerationProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccelerationProvider.js","sourceRoot":"","sources":["../../src/Utils/AccelerationProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -208,11 +208,11 @@ export class PerformanceMonitor {
|
|
|
208
208
|
for (const [systemName, stats] of sortedSystems) {
|
|
209
209
|
const data = this._systemData.get(systemName);
|
|
210
210
|
lines.push(`System: ${systemName}`);
|
|
211
|
-
lines.push(` Current: ${data
|
|
211
|
+
lines.push(` Current: ${data?.executionTime.toFixed(2)}ms (${data?.entityCount} entities)`);
|
|
212
212
|
lines.push(` Average: ${stats.averageTime.toFixed(2)}ms`);
|
|
213
213
|
lines.push(` Min/Max: ${stats.minTime.toFixed(2)}ms / ${stats.maxTime.toFixed(2)}ms`);
|
|
214
214
|
lines.push(` Total: ${stats.totalTime.toFixed(2)}ms (${stats.executionCount} calls)`);
|
|
215
|
-
if (
|
|
215
|
+
if (data?.averageTimePerEntity && data.averageTimePerEntity > 0) {
|
|
216
216
|
lines.push(` Per Entity: ${data.averageTimePerEntity.toFixed(4)}ms`);
|
|
217
217
|
}
|
|
218
218
|
lines.push("");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PerformanceMonitor.js","sourceRoot":"","sources":["../../src/Utils/PerformanceMonitor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PerformanceMonitor.js","sourceRoot":"","sources":["../../src/Utils/PerformanceMonitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebAssembly桥接工具
|
|
3
|
+
*
|
|
4
|
+
* 提供WebAssembly模块的加载、初始化和内存管理功能
|
|
5
|
+
* 为ECS框架提供高性能的底层支持
|
|
6
|
+
*/
|
|
7
|
+
import { AccelerationProvider, QueryProvider } from './AccelerationProvider';
|
|
8
|
+
/**
|
|
9
|
+
* WebAssembly模块接口
|
|
10
|
+
* 定义了ECS相关的WASM函数签名
|
|
11
|
+
*/
|
|
12
|
+
interface WasmModule {
|
|
13
|
+
/** WebAssembly内存对象 */
|
|
14
|
+
memory: WebAssembly.Memory;
|
|
15
|
+
/** 分配指定大小的内存,返回指针 */
|
|
16
|
+
malloc(size: number): number;
|
|
17
|
+
/** 释放指定指针的内存 */
|
|
18
|
+
free(ptr: number): void;
|
|
19
|
+
/** 根据组件掩码查询实体 */
|
|
20
|
+
query_by_component(maskPtr: number, resultPtr: number, maxResults: number): number;
|
|
21
|
+
/** 根据多个组件掩码查询实体 */
|
|
22
|
+
query_by_components(masksPtr: number, maskCount: number, resultPtr: number, maxResults: number): number;
|
|
23
|
+
/** 查询包含指定组件但排除其他组件的实体 */
|
|
24
|
+
query_excluding(includeMaskPtr: number, excludeMaskPtr: number, resultPtr: number, maxResults: number): number;
|
|
25
|
+
/** 更新实体的组件掩码 */
|
|
26
|
+
update_entity_mask(entityId: number, mask: number): void;
|
|
27
|
+
/** 批量更新实体掩码 */
|
|
28
|
+
batch_update_masks(entityIdsPtr: number, masksPtr: number, count: number): void;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* WebAssembly配置选项
|
|
32
|
+
*/
|
|
33
|
+
export interface WasmConfig {
|
|
34
|
+
/** WASM文件路径 */
|
|
35
|
+
wasmPath: string;
|
|
36
|
+
/** 内存页数,默认256页 */
|
|
37
|
+
memoryPages?: number;
|
|
38
|
+
/** 是否启用SIMD,默认true */
|
|
39
|
+
enableSIMD?: boolean;
|
|
40
|
+
/** 是否启用多线程,默认false */
|
|
41
|
+
enableThreads?: boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* WebAssembly加速提供者
|
|
45
|
+
*
|
|
46
|
+
* 提供WebAssembly后端实现,主要用于高性能的实体查询操作
|
|
47
|
+
*/
|
|
48
|
+
export declare class WebAssemblyProvider implements AccelerationProvider {
|
|
49
|
+
readonly name = "WebAssembly";
|
|
50
|
+
readonly version = "1.0.0";
|
|
51
|
+
readonly isWasm = true;
|
|
52
|
+
/** WASM模块实例 */
|
|
53
|
+
private wasmModule?;
|
|
54
|
+
/** 配置选项 */
|
|
55
|
+
private config;
|
|
56
|
+
/** 初始化状态 */
|
|
57
|
+
private initialized;
|
|
58
|
+
/** 实体查询提供者 */
|
|
59
|
+
query: QueryProvider;
|
|
60
|
+
/**
|
|
61
|
+
* 构造函数
|
|
62
|
+
* @param config WebAssembly配置选项
|
|
63
|
+
*/
|
|
64
|
+
constructor(config: WasmConfig);
|
|
65
|
+
/**
|
|
66
|
+
* 初始化WebAssembly模块
|
|
67
|
+
* @throws {Error} 初始化失败时抛出错误
|
|
68
|
+
*/
|
|
69
|
+
initialize(): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* 加载WASM字节码
|
|
72
|
+
* @returns WASM字节码的ArrayBuffer
|
|
73
|
+
* @private
|
|
74
|
+
*/
|
|
75
|
+
private loadWasmBytes;
|
|
76
|
+
/**
|
|
77
|
+
* 实例化WASM模块
|
|
78
|
+
* @param wasmBytes WASM字节码
|
|
79
|
+
* @returns 实例化的WASM模块
|
|
80
|
+
* @private
|
|
81
|
+
*/
|
|
82
|
+
private instantiateWasm;
|
|
83
|
+
/**
|
|
84
|
+
* 检查是否支持指定功能
|
|
85
|
+
* @param feature 功能名称
|
|
86
|
+
* @returns 是否支持该功能
|
|
87
|
+
*/
|
|
88
|
+
supports(feature: string): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* 获取性能信息
|
|
91
|
+
* @returns 性能统计信息
|
|
92
|
+
*/
|
|
93
|
+
getPerformanceInfo(): {
|
|
94
|
+
operationsPerSecond: number;
|
|
95
|
+
memoryUsage: number;
|
|
96
|
+
features: string[];
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* 释放资源
|
|
100
|
+
*/
|
|
101
|
+
dispose(): void;
|
|
102
|
+
/**
|
|
103
|
+
* 获取WASM模块(内部使用)
|
|
104
|
+
* @returns WASM模块实例
|
|
105
|
+
* @throws {Error} 模块未初始化时抛出错误
|
|
106
|
+
*/
|
|
107
|
+
getWasmModule(): WasmModule;
|
|
108
|
+
/**
|
|
109
|
+
* 分配WASM内存
|
|
110
|
+
* @param size 要分配的字节数
|
|
111
|
+
* @returns 内存指针
|
|
112
|
+
*/
|
|
113
|
+
malloc(size: number): number;
|
|
114
|
+
/**
|
|
115
|
+
* 释放WASM内存
|
|
116
|
+
* @param ptr 内存指针
|
|
117
|
+
*/
|
|
118
|
+
free(ptr: number): void;
|
|
119
|
+
/**
|
|
120
|
+
* 将JavaScript数组复制到WASM内存
|
|
121
|
+
* @param data 要复制的数据
|
|
122
|
+
* @returns WASM内存指针
|
|
123
|
+
*/
|
|
124
|
+
copyToWasm(data: Float32Array | Uint32Array): number;
|
|
125
|
+
/**
|
|
126
|
+
* 从WASM内存复制到JavaScript数组
|
|
127
|
+
* @param ptr WASM内存指针
|
|
128
|
+
* @param length 元素数量
|
|
129
|
+
* @param ArrayType 数组类型构造函数
|
|
130
|
+
* @returns 复制的JavaScript数组
|
|
131
|
+
*/
|
|
132
|
+
copyFromWasm(ptr: number, length: number, ArrayType: typeof Float32Array | typeof Uint32Array): Float32Array | Uint32Array;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* 创建WebAssembly提供者的工厂函数
|
|
136
|
+
* @param wasmPath WASM文件路径
|
|
137
|
+
* @param config 可选的配置参数
|
|
138
|
+
* @returns WebAssembly提供者实例
|
|
139
|
+
*/
|
|
140
|
+
export declare function createWebAssemblyProvider(wasmPath: string, config?: Partial<WasmConfig>): WebAssemblyProvider;
|
|
141
|
+
/**
|
|
142
|
+
* 检查WebAssembly支持
|
|
143
|
+
* @returns 是否支持WebAssembly
|
|
144
|
+
*/
|
|
145
|
+
export declare function isWebAssemblySupported(): boolean;
|
|
146
|
+
/**
|
|
147
|
+
* 检查SIMD支持
|
|
148
|
+
* @returns 是否支持SIMD
|
|
149
|
+
*/
|
|
150
|
+
export declare function isSIMDSupported(): Promise<boolean>;
|
|
151
|
+
export {};
|
|
152
|
+
//# sourceMappingURL=WasmBridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WasmBridge.d.ts","sourceRoot":"","sources":["../../src/Utils/WasmBridge.ts"],"names":[],"mappings":"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"}
|