@esengine/ecs-framework 2.1.4 → 2.1.5
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/README.md +385 -0
- package/{bin/index.d.ts → index.d.ts} +9 -6
- package/index.js +7 -0
- package/index.js.map +7 -0
- package/package.json +20 -46
- package/bin/Core.d.ts +0 -198
- package/bin/Core.d.ts.map +0 -1
- package/bin/Core.js +0 -247
- package/bin/Core.js.map +0 -1
- package/bin/ECS/Component.d.ts +0 -119
- package/bin/ECS/Component.d.ts.map +0 -1
- package/bin/ECS/Component.js +0 -129
- package/bin/ECS/Component.js.map +0 -1
- package/bin/ECS/Components/IUpdatable.d.ts +0 -22
- package/bin/ECS/Components/IUpdatable.d.ts.map +0 -1
- package/bin/ECS/Components/IUpdatable.js +0 -22
- package/bin/ECS/Components/IUpdatable.js.map +0 -1
- package/bin/ECS/Components/SceneComponent.d.ts +0 -40
- package/bin/ECS/Components/SceneComponent.d.ts.map +0 -1
- package/bin/ECS/Components/SceneComponent.js +0 -61
- package/bin/ECS/Components/SceneComponent.js.map +0 -1
- package/bin/ECS/Core/BitMaskOptimizer.d.ts +0 -75
- package/bin/ECS/Core/BitMaskOptimizer.d.ts.map +0 -1
- package/bin/ECS/Core/BitMaskOptimizer.js +0 -161
- package/bin/ECS/Core/BitMaskOptimizer.js.map +0 -1
- package/bin/ECS/Core/ComponentPool.d.ts +0 -72
- package/bin/ECS/Core/ComponentPool.d.ts.map +0 -1
- package/bin/ECS/Core/ComponentPool.js +0 -123
- package/bin/ECS/Core/ComponentPool.js.map +0 -1
- package/bin/ECS/Core/ComponentStorage.d.ts +0 -182
- package/bin/ECS/Core/ComponentStorage.d.ts.map +0 -1
- package/bin/ECS/Core/ComponentStorage.js +0 -346
- package/bin/ECS/Core/ComponentStorage.js.map +0 -1
- package/bin/ECS/Core/EventSystem.d.ts +0 -236
- package/bin/ECS/Core/EventSystem.d.ts.map +0 -1
- package/bin/ECS/Core/EventSystem.js +0 -476
- package/bin/ECS/Core/EventSystem.js.map +0 -1
- package/bin/ECS/Core/FluentAPI.d.ts +0 -371
- package/bin/ECS/Core/FluentAPI.d.ts.map +0 -1
- package/bin/ECS/Core/FluentAPI.js +0 -543
- package/bin/ECS/Core/FluentAPI.js.map +0 -1
- package/bin/ECS/Core/IndexUpdateBatcher.d.ts +0 -100
- package/bin/ECS/Core/IndexUpdateBatcher.d.ts.map +0 -1
- package/bin/ECS/Core/IndexUpdateBatcher.js +0 -219
- package/bin/ECS/Core/IndexUpdateBatcher.js.map +0 -1
- package/bin/ECS/Core/QuerySystem.d.ts +0 -422
- package/bin/ECS/Core/QuerySystem.d.ts.map +0 -1
- package/bin/ECS/Core/QuerySystem.js +0 -937
- package/bin/ECS/Core/QuerySystem.js.map +0 -1
- package/bin/ECS/CoreEvents.d.ts +0 -19
- package/bin/ECS/CoreEvents.d.ts.map +0 -1
- package/bin/ECS/CoreEvents.js +0 -20
- package/bin/ECS/CoreEvents.js.map +0 -1
- package/bin/ECS/Entity.d.ts +0 -538
- package/bin/ECS/Entity.d.ts.map +0 -1
- package/bin/ECS/Entity.js +0 -1030
- package/bin/ECS/Entity.js.map +0 -1
- package/bin/ECS/Scene.d.ts +0 -226
- package/bin/ECS/Scene.d.ts.map +0 -1
- package/bin/ECS/Scene.js +0 -308
- package/bin/ECS/Scene.js.map +0 -1
- package/bin/ECS/Systems/EntitySystem.d.ts +0 -185
- package/bin/ECS/Systems/EntitySystem.d.ts.map +0 -1
- package/bin/ECS/Systems/EntitySystem.js +0 -278
- package/bin/ECS/Systems/EntitySystem.js.map +0 -1
- package/bin/ECS/Systems/IntervalSystem.d.ts +0 -33
- package/bin/ECS/Systems/IntervalSystem.d.ts.map +0 -1
- package/bin/ECS/Systems/IntervalSystem.js +0 -50
- package/bin/ECS/Systems/IntervalSystem.js.map +0 -1
- package/bin/ECS/Systems/PassiveSystem.d.ts +0 -20
- package/bin/ECS/Systems/PassiveSystem.d.ts.map +0 -1
- package/bin/ECS/Systems/PassiveSystem.js +0 -21
- package/bin/ECS/Systems/PassiveSystem.js.map +0 -1
- package/bin/ECS/Systems/ProcessingSystem.d.ts +0 -24
- package/bin/ECS/Systems/ProcessingSystem.d.ts.map +0 -1
- package/bin/ECS/Systems/ProcessingSystem.js +0 -22
- package/bin/ECS/Systems/ProcessingSystem.js.map +0 -1
- package/bin/ECS/Systems/index.d.ts +0 -5
- package/bin/ECS/Systems/index.d.ts.map +0 -1
- package/bin/ECS/Systems/index.js +0 -6
- package/bin/ECS/Systems/index.js.map +0 -1
- package/bin/ECS/Utils/Bits.d.ts +0 -74
- package/bin/ECS/Utils/Bits.d.ts.map +0 -1
- package/bin/ECS/Utils/Bits.js +0 -142
- package/bin/ECS/Utils/Bits.js.map +0 -1
- package/bin/ECS/Utils/ComponentTypeManager.d.ts +0 -50
- package/bin/ECS/Utils/ComponentTypeManager.d.ts.map +0 -1
- package/bin/ECS/Utils/ComponentTypeManager.js +0 -84
- package/bin/ECS/Utils/ComponentTypeManager.js.map +0 -1
- package/bin/ECS/Utils/EntityList.d.ts +0 -108
- package/bin/ECS/Utils/EntityList.d.ts.map +0 -1
- package/bin/ECS/Utils/EntityList.js +0 -249
- package/bin/ECS/Utils/EntityList.js.map +0 -1
- package/bin/ECS/Utils/EntityProcessorList.d.ts +0 -53
- package/bin/ECS/Utils/EntityProcessorList.d.ts.map +0 -1
- package/bin/ECS/Utils/EntityProcessorList.js +0 -96
- package/bin/ECS/Utils/EntityProcessorList.js.map +0 -1
- package/bin/ECS/Utils/IdentifierPool.d.ts +0 -18
- package/bin/ECS/Utils/IdentifierPool.d.ts.map +0 -1
- package/bin/ECS/Utils/IdentifierPool.js +0 -27
- package/bin/ECS/Utils/IdentifierPool.js.map +0 -1
- package/bin/ECS/Utils/Matcher.d.ts +0 -63
- package/bin/ECS/Utils/Matcher.d.ts.map +0 -1
- package/bin/ECS/Utils/Matcher.js +0 -140
- package/bin/ECS/Utils/Matcher.js.map +0 -1
- package/bin/ECS/Utils/index.d.ts +0 -7
- package/bin/ECS/Utils/index.d.ts.map +0 -1
- package/bin/ECS/Utils/index.js +0 -8
- package/bin/ECS/Utils/index.js.map +0 -1
- package/bin/ECS/index.d.ts +0 -7
- package/bin/ECS/index.d.ts.map +0 -1
- package/bin/ECS/index.js +0 -29
- package/bin/ECS/index.js.map +0 -1
- package/bin/Testing/Performance/benchmark.d.ts +0 -6
- package/bin/Testing/Performance/benchmark.d.ts.map +0 -1
- package/bin/Testing/Performance/benchmark.js +0 -639
- package/bin/Testing/Performance/benchmark.js.map +0 -1
- package/bin/Testing/Performance/component-performance.d.ts +0 -2
- package/bin/Testing/Performance/component-performance.d.ts.map +0 -1
- package/bin/Testing/Performance/component-performance.js +0 -43
- package/bin/Testing/Performance/component-performance.js.map +0 -1
- package/bin/Testing/Unit/bitmask-optimizer.test.d.ts +0 -2
- package/bin/Testing/Unit/bitmask-optimizer.test.d.ts.map +0 -1
- package/bin/Testing/Unit/bitmask-optimizer.test.js +0 -164
- package/bin/Testing/Unit/bitmask-optimizer.test.js.map +0 -1
- package/bin/Testing/Unit/component-pool.test.d.ts +0 -5
- package/bin/Testing/Unit/component-pool.test.d.ts.map +0 -1
- package/bin/Testing/Unit/component-pool.test.js +0 -149
- package/bin/Testing/Unit/component-pool.test.js.map +0 -1
- package/bin/Testing/test-runner.d.ts +0 -51
- package/bin/Testing/test-runner.d.ts.map +0 -1
- package/bin/Testing/test-runner.js +0 -159
- package/bin/Testing/test-runner.js.map +0 -1
- package/bin/Types/index.d.ts +0 -22
- package/bin/Types/index.d.ts.map +0 -1
- package/bin/Types/index.js +0 -20
- package/bin/Types/index.js.map +0 -1
- package/bin/Utils/Emitter.d.ts +0 -43
- package/bin/Utils/Emitter.d.ts.map +0 -1
- package/bin/Utils/Emitter.js +0 -69
- package/bin/Utils/Emitter.js.map +0 -1
- package/bin/Utils/Extensions/NumberExtension.d.ts +0 -13
- package/bin/Utils/Extensions/NumberExtension.d.ts.map +0 -1
- package/bin/Utils/Extensions/NumberExtension.js +0 -17
- package/bin/Utils/Extensions/NumberExtension.js.map +0 -1
- package/bin/Utils/Extensions/TypeUtils.d.ts +0 -13
- package/bin/Utils/Extensions/TypeUtils.d.ts.map +0 -1
- package/bin/Utils/Extensions/TypeUtils.js +0 -15
- package/bin/Utils/Extensions/TypeUtils.js.map +0 -1
- package/bin/Utils/Extensions/index.d.ts +0 -3
- package/bin/Utils/Extensions/index.d.ts.map +0 -1
- package/bin/Utils/Extensions/index.js +0 -4
- package/bin/Utils/Extensions/index.js.map +0 -1
- package/bin/Utils/GlobalManager.d.ts +0 -32
- package/bin/Utils/GlobalManager.d.ts.map +0 -1
- package/bin/Utils/GlobalManager.js +0 -53
- package/bin/Utils/GlobalManager.js.map +0 -1
- package/bin/Utils/PerformanceMonitor.d.ts +0 -211
- package/bin/Utils/PerformanceMonitor.d.ts.map +0 -1
- package/bin/Utils/PerformanceMonitor.js +0 -270
- package/bin/Utils/PerformanceMonitor.js.map +0 -1
- package/bin/Utils/Pool.d.ts +0 -239
- package/bin/Utils/Pool.d.ts.map +0 -1
- package/bin/Utils/Pool.js +0 -449
- package/bin/Utils/Pool.js.map +0 -1
- package/bin/Utils/Time.d.ts +0 -55
- package/bin/Utils/Time.d.ts.map +0 -1
- package/bin/Utils/Time.js +0 -78
- package/bin/Utils/Time.js.map +0 -1
- package/bin/Utils/Timers/ITimer.d.ts +0 -16
- package/bin/Utils/Timers/ITimer.d.ts.map +0 -1
- package/bin/Utils/Timers/ITimer.js +0 -2
- package/bin/Utils/Timers/ITimer.js.map +0 -1
- package/bin/Utils/Timers/Timer.d.ts +0 -22
- package/bin/Utils/Timers/Timer.d.ts.map +0 -1
- package/bin/Utils/Timers/Timer.js +0 -46
- package/bin/Utils/Timers/Timer.js.map +0 -1
- package/bin/Utils/Timers/TimerManager.d.ts +0 -19
- package/bin/Utils/Timers/TimerManager.d.ts.map +0 -1
- package/bin/Utils/Timers/TimerManager.js +0 -33
- package/bin/Utils/Timers/TimerManager.js.map +0 -1
- package/bin/Utils/WasmCore.d.ts +0 -234
- package/bin/Utils/WasmCore.d.ts.map +0 -1
- package/bin/Utils/WasmCore.js +0 -596
- package/bin/Utils/WasmCore.js.map +0 -1
- package/bin/Utils/index.d.ts +0 -16
- package/bin/Utils/index.d.ts.map +0 -1
- package/bin/Utils/index.js +0 -37
- package/bin/Utils/index.js.map +0 -1
- package/bin/index.cjs +0 -51
- package/bin/index.d.ts.map +0 -1
- package/bin/index.esm.d.ts +0 -45
- package/bin/index.esm.d.ts.map +0 -1
- package/bin/index.esm.js +0 -46
- package/bin/index.esm.js.map +0 -1
- package/bin/index.js.map +0 -1
- package/bin/wasm/ecs_wasm_core.d.ts +0 -141
- package/bin/wasm/ecs_wasm_core.js +0 -415
- package/bin/wasm/ecs_wasm_core_bg.wasm +0 -0
- package/bin/wasm/ecs_wasm_core_bg.wasm.d.ts +0 -29
- package/bin/wasm/package.json +0 -15
|
@@ -1,543 +0,0 @@
|
|
|
1
|
-
import { Entity } from '../Entity';
|
|
2
|
-
import { Scene } from '../Scene';
|
|
3
|
-
import { QueryBuilder } from './QuerySystem';
|
|
4
|
-
/**
|
|
5
|
-
* 实体构建器 - 提供流式API创建和配置实体
|
|
6
|
-
*/
|
|
7
|
-
export class EntityBuilder {
|
|
8
|
-
constructor(scene, storageManager) {
|
|
9
|
-
this.scene = scene;
|
|
10
|
-
this.storageManager = storageManager;
|
|
11
|
-
this.entity = new Entity("", scene.identifierPool.checkOut());
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* 设置实体名称
|
|
15
|
-
* @param name 实体名称
|
|
16
|
-
* @returns 实体构建器
|
|
17
|
-
*/
|
|
18
|
-
named(name) {
|
|
19
|
-
this.entity.name = name;
|
|
20
|
-
return this;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* 设置实体标签
|
|
24
|
-
* @param tag 标签
|
|
25
|
-
* @returns 实体构建器
|
|
26
|
-
*/
|
|
27
|
-
tagged(tag) {
|
|
28
|
-
this.entity.tag = tag;
|
|
29
|
-
return this;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* 添加组件
|
|
33
|
-
* @param component 组件实例
|
|
34
|
-
* @returns 实体构建器
|
|
35
|
-
*/
|
|
36
|
-
with(component) {
|
|
37
|
-
this.entity.addComponent(component);
|
|
38
|
-
return this;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* 添加多个组件
|
|
42
|
-
* @param components 组件数组
|
|
43
|
-
* @returns 实体构建器
|
|
44
|
-
*/
|
|
45
|
-
withComponents(...components) {
|
|
46
|
-
for (const component of components) {
|
|
47
|
-
this.entity.addComponent(component);
|
|
48
|
-
}
|
|
49
|
-
return this;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* 条件性添加组件
|
|
53
|
-
* @param condition 条件
|
|
54
|
-
* @param component 组件实例
|
|
55
|
-
* @returns 实体构建器
|
|
56
|
-
*/
|
|
57
|
-
withIf(condition, component) {
|
|
58
|
-
if (condition) {
|
|
59
|
-
this.entity.addComponent(component);
|
|
60
|
-
}
|
|
61
|
-
return this;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* 使用工厂函数创建并添加组件
|
|
65
|
-
* @param factory 组件工厂函数
|
|
66
|
-
* @returns 实体构建器
|
|
67
|
-
*/
|
|
68
|
-
withFactory(factory) {
|
|
69
|
-
const component = factory();
|
|
70
|
-
this.entity.addComponent(component);
|
|
71
|
-
return this;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* 配置组件属性
|
|
75
|
-
* @param componentType 组件类型
|
|
76
|
-
* @param configurator 配置函数
|
|
77
|
-
* @returns 实体构建器
|
|
78
|
-
*/
|
|
79
|
-
configure(componentType, configurator) {
|
|
80
|
-
const component = this.entity.getComponent(componentType);
|
|
81
|
-
if (component) {
|
|
82
|
-
configurator(component);
|
|
83
|
-
}
|
|
84
|
-
return this;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* 设置实体为启用状态
|
|
88
|
-
* @param enabled 是否启用
|
|
89
|
-
* @returns 实体构建器
|
|
90
|
-
*/
|
|
91
|
-
enabled(enabled = true) {
|
|
92
|
-
this.entity.enabled = enabled;
|
|
93
|
-
return this;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* 设置实体为活跃状态
|
|
97
|
-
* @param active 是否活跃
|
|
98
|
-
* @returns 实体构建器
|
|
99
|
-
*/
|
|
100
|
-
active(active = true) {
|
|
101
|
-
this.entity.active = active;
|
|
102
|
-
return this;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* 添加子实体
|
|
106
|
-
* @param childBuilder 子实体构建器
|
|
107
|
-
* @returns 实体构建器
|
|
108
|
-
*/
|
|
109
|
-
withChild(childBuilder) {
|
|
110
|
-
const child = childBuilder.build();
|
|
111
|
-
this.entity.addChild(child);
|
|
112
|
-
return this;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* 批量添加子实体
|
|
116
|
-
* @param childBuilders 子实体构建器数组
|
|
117
|
-
* @returns 实体构建器
|
|
118
|
-
*/
|
|
119
|
-
withChildren(...childBuilders) {
|
|
120
|
-
for (const childBuilder of childBuilders) {
|
|
121
|
-
const child = childBuilder.build();
|
|
122
|
-
this.entity.addChild(child);
|
|
123
|
-
}
|
|
124
|
-
return this;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* 使用工厂函数创建子实体
|
|
128
|
-
* @param childFactory 子实体工厂函数
|
|
129
|
-
* @returns 实体构建器
|
|
130
|
-
*/
|
|
131
|
-
withChildFactory(childFactory) {
|
|
132
|
-
const childBuilder = childFactory(this.entity);
|
|
133
|
-
const child = childBuilder.build();
|
|
134
|
-
this.entity.addChild(child);
|
|
135
|
-
return this;
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* 条件性添加子实体
|
|
139
|
-
* @param condition 条件
|
|
140
|
-
* @param childBuilder 子实体构建器
|
|
141
|
-
* @returns 实体构建器
|
|
142
|
-
*/
|
|
143
|
-
withChildIf(condition, childBuilder) {
|
|
144
|
-
if (condition) {
|
|
145
|
-
const child = childBuilder.build();
|
|
146
|
-
this.entity.addChild(child);
|
|
147
|
-
}
|
|
148
|
-
return this;
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* 构建并返回实体
|
|
152
|
-
* @returns 构建的实体
|
|
153
|
-
*/
|
|
154
|
-
build() {
|
|
155
|
-
return this.entity;
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* 构建实体并添加到场景
|
|
159
|
-
* @returns 构建的实体
|
|
160
|
-
*/
|
|
161
|
-
spawn() {
|
|
162
|
-
this.scene.addEntity(this.entity);
|
|
163
|
-
return this.entity;
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* 克隆当前构建器
|
|
167
|
-
* @returns 新的实体构建器
|
|
168
|
-
*/
|
|
169
|
-
clone() {
|
|
170
|
-
const newBuilder = new EntityBuilder(this.scene, this.storageManager);
|
|
171
|
-
// 这里需要深度克隆实体,简化实现
|
|
172
|
-
newBuilder.entity = this.entity; // 实际应该是深度克隆
|
|
173
|
-
return newBuilder;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* 场景构建器 - 提供流式API创建和配置场景
|
|
178
|
-
*/
|
|
179
|
-
export class SceneBuilder {
|
|
180
|
-
constructor() {
|
|
181
|
-
this.scene = new Scene();
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* 设置场景名称
|
|
185
|
-
* @param name 场景名称
|
|
186
|
-
* @returns 场景构建器
|
|
187
|
-
*/
|
|
188
|
-
named(name) {
|
|
189
|
-
this.scene.name = name;
|
|
190
|
-
return this;
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* 添加实体
|
|
194
|
-
* @param entity 实体
|
|
195
|
-
* @returns 场景构建器
|
|
196
|
-
*/
|
|
197
|
-
withEntity(entity) {
|
|
198
|
-
this.scene.addEntity(entity);
|
|
199
|
-
return this;
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* 使用实体构建器添加实体
|
|
203
|
-
* @param builderFn 实体构建器函数
|
|
204
|
-
* @returns 场景构建器
|
|
205
|
-
*/
|
|
206
|
-
withEntityBuilder(builderFn) {
|
|
207
|
-
const builder = new EntityBuilder(this.scene, this.scene.componentStorageManager);
|
|
208
|
-
const configuredBuilder = builderFn(builder);
|
|
209
|
-
const entity = configuredBuilder.build();
|
|
210
|
-
this.scene.addEntity(entity);
|
|
211
|
-
return this;
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* 批量添加实体
|
|
215
|
-
* @param entities 实体数组
|
|
216
|
-
* @returns 场景构建器
|
|
217
|
-
*/
|
|
218
|
-
withEntities(...entities) {
|
|
219
|
-
for (const entity of entities) {
|
|
220
|
-
this.scene.addEntity(entity);
|
|
221
|
-
}
|
|
222
|
-
return this;
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* 添加系统
|
|
226
|
-
* @param system 系统实例
|
|
227
|
-
* @returns 场景构建器
|
|
228
|
-
*/
|
|
229
|
-
withSystem(system) {
|
|
230
|
-
this.scene.addSystem(system);
|
|
231
|
-
return this;
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* 批量添加系统
|
|
235
|
-
* @param systems 系统数组
|
|
236
|
-
* @returns 场景构建器
|
|
237
|
-
*/
|
|
238
|
-
withSystems(...systems) {
|
|
239
|
-
for (const system of systems) {
|
|
240
|
-
this.scene.addSystem(system);
|
|
241
|
-
}
|
|
242
|
-
return this;
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* 构建并返回场景
|
|
246
|
-
* @returns 构建的场景
|
|
247
|
-
*/
|
|
248
|
-
build() {
|
|
249
|
-
return this.scene;
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* 组件构建器 - 提供流式API创建组件
|
|
254
|
-
*/
|
|
255
|
-
export class ComponentBuilder {
|
|
256
|
-
constructor(componentClass, ...args) {
|
|
257
|
-
this.component = new componentClass(...args);
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* 设置组件属性
|
|
261
|
-
* @param property 属性名
|
|
262
|
-
* @param value 属性值
|
|
263
|
-
* @returns 组件构建器
|
|
264
|
-
*/
|
|
265
|
-
set(property, value) {
|
|
266
|
-
this.component[property] = value;
|
|
267
|
-
return this;
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* 使用配置函数设置组件
|
|
271
|
-
* @param configurator 配置函数
|
|
272
|
-
* @returns 组件构建器
|
|
273
|
-
*/
|
|
274
|
-
configure(configurator) {
|
|
275
|
-
configurator(this.component);
|
|
276
|
-
return this;
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* 条件性设置属性
|
|
280
|
-
* @param condition 条件
|
|
281
|
-
* @param property 属性名
|
|
282
|
-
* @param value 属性值
|
|
283
|
-
* @returns 组件构建器
|
|
284
|
-
*/
|
|
285
|
-
setIf(condition, property, value) {
|
|
286
|
-
if (condition) {
|
|
287
|
-
this.component[property] = value;
|
|
288
|
-
}
|
|
289
|
-
return this;
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* 构建并返回组件
|
|
293
|
-
* @returns 构建的组件
|
|
294
|
-
*/
|
|
295
|
-
build() {
|
|
296
|
-
return this.component;
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* ECS流式API主入口
|
|
301
|
-
* 提供统一的流式接口
|
|
302
|
-
*/
|
|
303
|
-
export class ECSFluentAPI {
|
|
304
|
-
constructor(scene, querySystem, eventSystem) {
|
|
305
|
-
this.scene = scene;
|
|
306
|
-
this.querySystem = querySystem;
|
|
307
|
-
this.eventSystem = eventSystem;
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* 创建实体构建器
|
|
311
|
-
* @returns 实体构建器
|
|
312
|
-
*/
|
|
313
|
-
createEntity() {
|
|
314
|
-
return new EntityBuilder(this.scene, this.scene.componentStorageManager);
|
|
315
|
-
}
|
|
316
|
-
/**
|
|
317
|
-
* 创建场景构建器
|
|
318
|
-
* @returns 场景构建器
|
|
319
|
-
*/
|
|
320
|
-
createScene() {
|
|
321
|
-
return new SceneBuilder();
|
|
322
|
-
}
|
|
323
|
-
/**
|
|
324
|
-
* 创建组件构建器
|
|
325
|
-
* @param componentClass 组件类
|
|
326
|
-
* @param args 构造参数
|
|
327
|
-
* @returns 组件构建器
|
|
328
|
-
*/
|
|
329
|
-
createComponent(componentClass, ...args) {
|
|
330
|
-
return new ComponentBuilder(componentClass, ...args);
|
|
331
|
-
}
|
|
332
|
-
/**
|
|
333
|
-
* 创建查询构建器
|
|
334
|
-
* @returns 查询构建器
|
|
335
|
-
*/
|
|
336
|
-
query() {
|
|
337
|
-
return new QueryBuilder(this.querySystem);
|
|
338
|
-
}
|
|
339
|
-
/**
|
|
340
|
-
* 查找实体(简化版)
|
|
341
|
-
* @param componentTypes 组件类型
|
|
342
|
-
* @returns 实体数组
|
|
343
|
-
*/
|
|
344
|
-
find(...componentTypes) {
|
|
345
|
-
return this.querySystem.queryAll(...componentTypes).entities;
|
|
346
|
-
}
|
|
347
|
-
/**
|
|
348
|
-
* 查找第一个匹配的实体
|
|
349
|
-
* @param componentTypes 组件类型
|
|
350
|
-
* @returns 实体或null
|
|
351
|
-
*/
|
|
352
|
-
findFirst(...componentTypes) {
|
|
353
|
-
const result = this.querySystem.queryAll(...componentTypes);
|
|
354
|
-
return result.entities.length > 0 ? result.entities[0] : null;
|
|
355
|
-
}
|
|
356
|
-
/**
|
|
357
|
-
* 按名称查找实体
|
|
358
|
-
* @param name 实体名称
|
|
359
|
-
* @returns 实体或null
|
|
360
|
-
*/
|
|
361
|
-
findByName(name) {
|
|
362
|
-
return this.scene.getEntityByName(name);
|
|
363
|
-
}
|
|
364
|
-
/**
|
|
365
|
-
* 按标签查找实体
|
|
366
|
-
* @param tag 标签
|
|
367
|
-
* @returns 实体数组
|
|
368
|
-
*/
|
|
369
|
-
findByTag(tag) {
|
|
370
|
-
return this.scene.getEntitiesByTag(tag);
|
|
371
|
-
}
|
|
372
|
-
/**
|
|
373
|
-
* 触发事件
|
|
374
|
-
* @param eventType 事件类型
|
|
375
|
-
* @param event 事件数据
|
|
376
|
-
*/
|
|
377
|
-
emit(eventType, event) {
|
|
378
|
-
this.eventSystem.emitSync(eventType, event);
|
|
379
|
-
}
|
|
380
|
-
/**
|
|
381
|
-
* 异步触发事件
|
|
382
|
-
* @param eventType 事件类型
|
|
383
|
-
* @param event 事件数据
|
|
384
|
-
*/
|
|
385
|
-
async emitAsync(eventType, event) {
|
|
386
|
-
await this.eventSystem.emit(eventType, event);
|
|
387
|
-
}
|
|
388
|
-
/**
|
|
389
|
-
* 监听事件
|
|
390
|
-
* @param eventType 事件类型
|
|
391
|
-
* @param handler 事件处理器
|
|
392
|
-
* @returns 监听器ID
|
|
393
|
-
*/
|
|
394
|
-
on(eventType, handler) {
|
|
395
|
-
return this.eventSystem.on(eventType, handler);
|
|
396
|
-
}
|
|
397
|
-
/**
|
|
398
|
-
* 一次性监听事件
|
|
399
|
-
* @param eventType 事件类型
|
|
400
|
-
* @param handler 事件处理器
|
|
401
|
-
* @returns 监听器ID
|
|
402
|
-
*/
|
|
403
|
-
once(eventType, handler) {
|
|
404
|
-
return this.eventSystem.once(eventType, handler);
|
|
405
|
-
}
|
|
406
|
-
/**
|
|
407
|
-
* 移除事件监听器
|
|
408
|
-
* @param eventType 事件类型
|
|
409
|
-
* @param listenerId 监听器ID
|
|
410
|
-
*/
|
|
411
|
-
off(eventType, listenerId) {
|
|
412
|
-
this.eventSystem.off(eventType, listenerId);
|
|
413
|
-
}
|
|
414
|
-
/**
|
|
415
|
-
* 批量操作实体
|
|
416
|
-
* @param entities 实体数组
|
|
417
|
-
* @returns 批量操作器
|
|
418
|
-
*/
|
|
419
|
-
batch(entities) {
|
|
420
|
-
return new EntityBatchOperator(entities);
|
|
421
|
-
}
|
|
422
|
-
/**
|
|
423
|
-
* 获取场景统计信息
|
|
424
|
-
* @returns 统计信息
|
|
425
|
-
*/
|
|
426
|
-
getStats() {
|
|
427
|
-
return {
|
|
428
|
-
entityCount: this.scene.entities.count,
|
|
429
|
-
systemCount: this.scene.systems.length,
|
|
430
|
-
componentStats: this.scene.componentStorageManager.getAllStats(),
|
|
431
|
-
queryStats: this.querySystem.getStats(),
|
|
432
|
-
eventStats: this.eventSystem.getStats()
|
|
433
|
-
};
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
/**
|
|
437
|
-
* 实体批量操作器
|
|
438
|
-
* 提供对多个实体的批量操作
|
|
439
|
-
*/
|
|
440
|
-
export class EntityBatchOperator {
|
|
441
|
-
constructor(entities) {
|
|
442
|
-
this.entities = entities;
|
|
443
|
-
}
|
|
444
|
-
/**
|
|
445
|
-
* 批量添加组件
|
|
446
|
-
* @param component 组件实例
|
|
447
|
-
* @returns 批量操作器
|
|
448
|
-
*/
|
|
449
|
-
addComponent(component) {
|
|
450
|
-
for (const entity of this.entities) {
|
|
451
|
-
entity.addComponent(component);
|
|
452
|
-
}
|
|
453
|
-
return this;
|
|
454
|
-
}
|
|
455
|
-
/**
|
|
456
|
-
* 批量移除组件
|
|
457
|
-
* @param componentType 组件类型
|
|
458
|
-
* @returns 批量操作器
|
|
459
|
-
*/
|
|
460
|
-
removeComponent(componentType) {
|
|
461
|
-
for (const entity of this.entities) {
|
|
462
|
-
entity.removeComponentByType(componentType);
|
|
463
|
-
}
|
|
464
|
-
return this;
|
|
465
|
-
}
|
|
466
|
-
/**
|
|
467
|
-
* 批量设置活跃状态
|
|
468
|
-
* @param active 是否活跃
|
|
469
|
-
* @returns 批量操作器
|
|
470
|
-
*/
|
|
471
|
-
setActive(active) {
|
|
472
|
-
for (const entity of this.entities) {
|
|
473
|
-
entity.active = active;
|
|
474
|
-
}
|
|
475
|
-
return this;
|
|
476
|
-
}
|
|
477
|
-
/**
|
|
478
|
-
* 批量设置标签
|
|
479
|
-
* @param tag 标签
|
|
480
|
-
* @returns 批量操作器
|
|
481
|
-
*/
|
|
482
|
-
setTag(tag) {
|
|
483
|
-
for (const entity of this.entities) {
|
|
484
|
-
entity.tag = tag;
|
|
485
|
-
}
|
|
486
|
-
return this;
|
|
487
|
-
}
|
|
488
|
-
/**
|
|
489
|
-
* 批量执行操作
|
|
490
|
-
* @param operation 操作函数
|
|
491
|
-
* @returns 批量操作器
|
|
492
|
-
*/
|
|
493
|
-
forEach(operation) {
|
|
494
|
-
this.entities.forEach(operation);
|
|
495
|
-
return this;
|
|
496
|
-
}
|
|
497
|
-
/**
|
|
498
|
-
* 过滤实体
|
|
499
|
-
* @param predicate 过滤条件
|
|
500
|
-
* @returns 新的批量操作器
|
|
501
|
-
*/
|
|
502
|
-
filter(predicate) {
|
|
503
|
-
return new EntityBatchOperator(this.entities.filter(predicate));
|
|
504
|
-
}
|
|
505
|
-
/**
|
|
506
|
-
* 获取实体数组
|
|
507
|
-
* @returns 实体数组
|
|
508
|
-
*/
|
|
509
|
-
toArray() {
|
|
510
|
-
return this.entities.slice();
|
|
511
|
-
}
|
|
512
|
-
/**
|
|
513
|
-
* 获取实体数量
|
|
514
|
-
* @returns 实体数量
|
|
515
|
-
*/
|
|
516
|
-
count() {
|
|
517
|
-
return this.entities.length;
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
/**
|
|
521
|
-
* 创建ECS流式API实例
|
|
522
|
-
* @param scene 场景
|
|
523
|
-
* @param querySystem 查询系统
|
|
524
|
-
* @param eventSystem 事件系统
|
|
525
|
-
* @returns ECS流式API实例
|
|
526
|
-
*/
|
|
527
|
-
export function createECSAPI(scene, querySystem, eventSystem) {
|
|
528
|
-
return new ECSFluentAPI(scene, querySystem, eventSystem);
|
|
529
|
-
}
|
|
530
|
-
/**
|
|
531
|
-
* 全局ECS流式API实例(需要在使用前初始化)
|
|
532
|
-
*/
|
|
533
|
-
export let ECS;
|
|
534
|
-
/**
|
|
535
|
-
* 初始化全局ECS API
|
|
536
|
-
* @param scene 场景
|
|
537
|
-
* @param querySystem 查询系统
|
|
538
|
-
* @param eventSystem 事件系统
|
|
539
|
-
*/
|
|
540
|
-
export function initializeECS(scene, querySystem, eventSystem) {
|
|
541
|
-
ECS = createECSAPI(scene, querySystem, eventSystem);
|
|
542
|
-
}
|
|
543
|
-
//# sourceMappingURL=FluentAPI.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FluentAPI.js","sourceRoot":"","sources":["../../../src/ECS/Core/FluentAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { Entity } from '../Entity';
|
|
2
|
-
/**
|
|
3
|
-
* 索引更新操作类型
|
|
4
|
-
*/
|
|
5
|
-
export declare enum IndexUpdateType {
|
|
6
|
-
ADD_ENTITY = "add_entity",
|
|
7
|
-
REMOVE_ENTITY = "remove_entity",
|
|
8
|
-
UPDATE_ENTITY = "update_entity"
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* 索引更新操作
|
|
12
|
-
*/
|
|
13
|
-
export interface IndexUpdateOperation {
|
|
14
|
-
type: IndexUpdateType;
|
|
15
|
-
entity: Entity;
|
|
16
|
-
oldMask?: bigint;
|
|
17
|
-
newMask?: bigint;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* 延迟索引更新器,用于批量更新查询索引以提高性能
|
|
21
|
-
*/
|
|
22
|
-
export declare class IndexUpdateBatcher {
|
|
23
|
-
private pendingOperations;
|
|
24
|
-
private isProcessing;
|
|
25
|
-
private batchSize;
|
|
26
|
-
private flushTimeout;
|
|
27
|
-
private flushDelay;
|
|
28
|
-
/**
|
|
29
|
-
* 添加索引更新操作
|
|
30
|
-
*/
|
|
31
|
-
addOperation(operation: IndexUpdateOperation): void;
|
|
32
|
-
/**
|
|
33
|
-
* 批量添加实体
|
|
34
|
-
*/
|
|
35
|
-
addEntities(entities: Entity[]): void;
|
|
36
|
-
/**
|
|
37
|
-
* 批量移除实体
|
|
38
|
-
*/
|
|
39
|
-
removeEntities(entities: Entity[]): void;
|
|
40
|
-
/**
|
|
41
|
-
* 批量更新实体
|
|
42
|
-
*/
|
|
43
|
-
updateEntities(updates: Array<{
|
|
44
|
-
entity: Entity;
|
|
45
|
-
oldMask: bigint;
|
|
46
|
-
newMask: bigint;
|
|
47
|
-
}>): void;
|
|
48
|
-
/**
|
|
49
|
-
* 安排延迟刷新
|
|
50
|
-
*/
|
|
51
|
-
private scheduleFlush;
|
|
52
|
-
/**
|
|
53
|
-
* 立即处理所有待处理的操作
|
|
54
|
-
*/
|
|
55
|
-
flush(): void;
|
|
56
|
-
/**
|
|
57
|
-
* 处理批量操作
|
|
58
|
-
*/
|
|
59
|
-
private processBatch;
|
|
60
|
-
/**
|
|
61
|
-
* 批量处理添加操作
|
|
62
|
-
*/
|
|
63
|
-
private processBatchAdd;
|
|
64
|
-
/**
|
|
65
|
-
* 批量处理移除操作
|
|
66
|
-
*/
|
|
67
|
-
private processBatchRemove;
|
|
68
|
-
/**
|
|
69
|
-
* 批量处理更新操作
|
|
70
|
-
*/
|
|
71
|
-
private processBatchUpdate;
|
|
72
|
-
/**
|
|
73
|
-
* 设置批量大小
|
|
74
|
-
*/
|
|
75
|
-
setBatchSize(size: number): void;
|
|
76
|
-
/**
|
|
77
|
-
* 设置刷新延迟
|
|
78
|
-
*/
|
|
79
|
-
setFlushDelay(delay: number): void;
|
|
80
|
-
/**
|
|
81
|
-
* 获取待处理操作数量
|
|
82
|
-
*/
|
|
83
|
-
getPendingCount(): number;
|
|
84
|
-
/**
|
|
85
|
-
* 清空所有待处理操作
|
|
86
|
-
*/
|
|
87
|
-
clear(): void;
|
|
88
|
-
/**
|
|
89
|
-
* 检查是否有待处理操作
|
|
90
|
-
*/
|
|
91
|
-
hasPendingOperations(): boolean;
|
|
92
|
-
onBatchAdd?: (entities: Entity[]) => void;
|
|
93
|
-
onBatchRemove?: (entities: Entity[]) => void;
|
|
94
|
-
onBatchUpdate?: (updates: Array<{
|
|
95
|
-
entity: Entity;
|
|
96
|
-
oldMask: bigint;
|
|
97
|
-
newMask: bigint;
|
|
98
|
-
}>) => void;
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=IndexUpdateBatcher.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IndexUpdateBatcher.d.ts","sourceRoot":"","sources":["../../../src/ECS/Core/IndexUpdateBatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC;;GAEG;AACH,oBAAY,eAAe;IACvB,UAAU,eAAe;IACzB,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,UAAU,CAAM;IAExB;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAYnD;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAerC;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAexC;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAiB1F;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;IACH,KAAK,IAAI,IAAI;IAmBb;;OAEG;IACH,OAAO,CAAC,YAAY;IA2CpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAKxB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC7C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;CACzG"}
|