@esengine/ecs-framework 2.1.4 → 2.1.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/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 +21 -46
- package/{bin/wasm → wasm}/ecs_wasm_core_bg.wasm +0 -0
- 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 → wasm}/ecs_wasm_core.d.ts +0 -0
- /package/{bin/wasm → wasm}/ecs_wasm_core.js +0 -0
- /package/{bin/wasm → wasm}/ecs_wasm_core_bg.wasm.d.ts +0 -0
- /package/{bin/wasm → wasm}/package.json +0 -0
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import { Entity } from '../Entity';
|
|
2
|
-
import { Matcher } from '../Utils/Matcher';
|
|
3
|
-
import type { Scene } from '../Scene';
|
|
4
|
-
/**
|
|
5
|
-
* 实体系统的基类
|
|
6
|
-
*
|
|
7
|
-
* 用于处理一组符合特定条件的实体。系统是ECS架构中的逻辑处理单元,
|
|
8
|
-
* 负责对拥有特定组件组合的实体执行业务逻辑。
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```typescript
|
|
12
|
-
* class MovementSystem extends EntitySystem {
|
|
13
|
-
* constructor() {
|
|
14
|
-
* super(Matcher.empty().all(Transform, Velocity));
|
|
15
|
-
* }
|
|
16
|
-
*
|
|
17
|
-
* protected process(entities: Entity[]): void {
|
|
18
|
-
* for (const entity of entities) {
|
|
19
|
-
* const transform = entity.getComponent(Transform);
|
|
20
|
-
* const velocity = entity.getComponent(Velocity);
|
|
21
|
-
* transform.position.add(velocity.value);
|
|
22
|
-
* }
|
|
23
|
-
* }
|
|
24
|
-
* }
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
export declare abstract class EntitySystem {
|
|
28
|
-
private _entities;
|
|
29
|
-
private _updateOrder;
|
|
30
|
-
private _enabled;
|
|
31
|
-
private _performanceMonitor;
|
|
32
|
-
private _systemName;
|
|
33
|
-
/**
|
|
34
|
-
* 获取系统处理的实体列表
|
|
35
|
-
*/
|
|
36
|
-
get entities(): readonly Entity[];
|
|
37
|
-
/**
|
|
38
|
-
* 获取系统的更新时序
|
|
39
|
-
*/
|
|
40
|
-
get updateOrder(): number;
|
|
41
|
-
set updateOrder(value: number);
|
|
42
|
-
/**
|
|
43
|
-
* 获取系统的启用状态
|
|
44
|
-
*/
|
|
45
|
-
get enabled(): boolean;
|
|
46
|
-
/**
|
|
47
|
-
* 设置系统的启用状态
|
|
48
|
-
*/
|
|
49
|
-
set enabled(value: boolean);
|
|
50
|
-
/**
|
|
51
|
-
* 获取系统名称
|
|
52
|
-
*/
|
|
53
|
-
get systemName(): string;
|
|
54
|
-
constructor(matcher?: Matcher);
|
|
55
|
-
private _scene;
|
|
56
|
-
/**
|
|
57
|
-
* 这个系统所属的场景
|
|
58
|
-
*/
|
|
59
|
-
get scene(): Scene;
|
|
60
|
-
set scene(value: Scene);
|
|
61
|
-
private _matcher;
|
|
62
|
-
/**
|
|
63
|
-
* 获取实体匹配器
|
|
64
|
-
*/
|
|
65
|
-
get matcher(): Matcher;
|
|
66
|
-
/**
|
|
67
|
-
* 设置更新时序
|
|
68
|
-
* @param order 更新时序
|
|
69
|
-
*/
|
|
70
|
-
setUpdateOrder(order: number): void;
|
|
71
|
-
/**
|
|
72
|
-
* 系统初始化
|
|
73
|
-
*
|
|
74
|
-
* 在系统创建时调用,子类可以重写此方法进行初始化操作。
|
|
75
|
-
*/
|
|
76
|
-
initialize(): void;
|
|
77
|
-
/**
|
|
78
|
-
* 当实体的组件发生变化时调用
|
|
79
|
-
*
|
|
80
|
-
* 检查实体是否仍然符合系统的匹配条件,并相应地添加或移除实体。
|
|
81
|
-
*
|
|
82
|
-
* @param entity 发生变化的实体
|
|
83
|
-
*/
|
|
84
|
-
onChanged(entity: Entity): void;
|
|
85
|
-
/**
|
|
86
|
-
* 添加实体到系统
|
|
87
|
-
*
|
|
88
|
-
* @param entity 要添加的实体
|
|
89
|
-
*/
|
|
90
|
-
add(entity: Entity): void;
|
|
91
|
-
/**
|
|
92
|
-
* 当实体被添加到系统时调用
|
|
93
|
-
*
|
|
94
|
-
* 子类可以重写此方法来处理实体添加事件。
|
|
95
|
-
*
|
|
96
|
-
* @param entity 被添加的实体
|
|
97
|
-
*/
|
|
98
|
-
protected onAdded(entity: Entity): void;
|
|
99
|
-
/**
|
|
100
|
-
* 从系统中移除实体
|
|
101
|
-
*
|
|
102
|
-
* @param entity 要移除的实体
|
|
103
|
-
*/
|
|
104
|
-
remove(entity: Entity): void;
|
|
105
|
-
/**
|
|
106
|
-
* 当实体从系统中移除时调用
|
|
107
|
-
*
|
|
108
|
-
* 子类可以重写此方法来处理实体移除事件。
|
|
109
|
-
*
|
|
110
|
-
* @param entity 被移除的实体
|
|
111
|
-
*/
|
|
112
|
-
protected onRemoved(entity: Entity): void;
|
|
113
|
-
/**
|
|
114
|
-
* 更新系统
|
|
115
|
-
*
|
|
116
|
-
* 在每帧调用,处理系统的主要逻辑。
|
|
117
|
-
*/
|
|
118
|
-
update(): void;
|
|
119
|
-
/**
|
|
120
|
-
* 后期更新系统
|
|
121
|
-
*
|
|
122
|
-
* 在所有系统的update方法执行完毕后调用。
|
|
123
|
-
*/
|
|
124
|
-
lateUpdate(): void;
|
|
125
|
-
/**
|
|
126
|
-
* 在系统处理开始前调用
|
|
127
|
-
*
|
|
128
|
-
* 子类可以重写此方法进行预处理操作。
|
|
129
|
-
*/
|
|
130
|
-
protected begin(): void;
|
|
131
|
-
/**
|
|
132
|
-
* 处理实体列表
|
|
133
|
-
*
|
|
134
|
-
* 系统的核心逻辑,子类必须实现此方法来定义具体的处理逻辑。
|
|
135
|
-
*
|
|
136
|
-
* @param entities 要处理的实体列表
|
|
137
|
-
*/
|
|
138
|
-
protected process(entities: Entity[]): void;
|
|
139
|
-
/**
|
|
140
|
-
* 后期处理实体列表
|
|
141
|
-
*
|
|
142
|
-
* 在主要处理逻辑之后执行,子类可以重写此方法。
|
|
143
|
-
*
|
|
144
|
-
* @param entities 要处理的实体列表
|
|
145
|
-
*/
|
|
146
|
-
protected lateProcess(entities: Entity[]): void;
|
|
147
|
-
/**
|
|
148
|
-
* 系统处理完毕后调用
|
|
149
|
-
*
|
|
150
|
-
* 子类可以重写此方法进行后处理操作。
|
|
151
|
-
*/
|
|
152
|
-
protected end(): void;
|
|
153
|
-
/**
|
|
154
|
-
* 检查系统是否需要处理
|
|
155
|
-
*
|
|
156
|
-
* 在启用系统时有用,但仅偶尔需要处理。
|
|
157
|
-
* 这只影响处理,不影响事件或订阅列表。
|
|
158
|
-
*
|
|
159
|
-
* @returns 如果系统应该处理,则为true,如果不处理则为false
|
|
160
|
-
*/
|
|
161
|
-
protected checkProcessing(): boolean;
|
|
162
|
-
/**
|
|
163
|
-
* 获取系统的性能数据
|
|
164
|
-
*
|
|
165
|
-
* @returns 性能数据或undefined
|
|
166
|
-
*/
|
|
167
|
-
getPerformanceData(): import("../../Utils/PerformanceMonitor").PerformanceData | undefined;
|
|
168
|
-
/**
|
|
169
|
-
* 获取系统的性能统计
|
|
170
|
-
*
|
|
171
|
-
* @returns 性能统计或undefined
|
|
172
|
-
*/
|
|
173
|
-
getPerformanceStats(): import("../../Utils/PerformanceMonitor").PerformanceStats | undefined;
|
|
174
|
-
/**
|
|
175
|
-
* 重置系统的性能数据
|
|
176
|
-
*/
|
|
177
|
-
resetPerformanceData(): void;
|
|
178
|
-
/**
|
|
179
|
-
* 获取系统信息的字符串表示
|
|
180
|
-
*
|
|
181
|
-
* @returns 系统信息字符串
|
|
182
|
-
*/
|
|
183
|
-
toString(): string;
|
|
184
|
-
}
|
|
185
|
-
//# sourceMappingURL=EntitySystem.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EntitySystem.d.ts","sourceRoot":"","sources":["../../../src/ECS/Systems/EntitySystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,8BAAsB,YAAY;IAC9B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,mBAAmB,CAA+B;IAC1D,OAAO,CAAC,WAAW,CAAS;IAE5B;;OAEG;IACH,IAAW,QAAQ,IAAI,SAAS,MAAM,EAAE,CAEvC;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,WAAW,CAAC,KAAK,EAAE,MAAM,EAEnC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAW,OAAO,CAAC,KAAK,EAAE,OAAO,EAEhC;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,MAAM,CAE9B;gBAEW,OAAO,CAAC,EAAE,OAAO;IAM7B,OAAO,CAAC,MAAM,CAAS;IAEvB;;OAEG;IACH,IAAW,KAAK,IAAI,KAAK,CAExB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,KAAK,EAG5B;IAED,OAAO,CAAC,QAAQ,CAAU;IAE1B;;OAEG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;;OAGG;IACI,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1C;;;;OAIG;IACI,UAAU,IAAI,IAAI;IAIzB;;;;;;OAMG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAWtC;;;;OAIG;IACI,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOhC;;;;;;OAMG;IACH,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIvC;;;;OAIG;IACI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQnC;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzC;;;;OAIG;IACI,MAAM,IAAI,IAAI;IAerB;;;;OAIG;IACI,UAAU,IAAI,IAAI;IAezB;;;;OAIG;IACH,SAAS,CAAC,KAAK,IAAI,IAAI;IAIvB;;;;;;OAMG;IACH,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAI3C;;;;;;OAMG;IACH,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAI/C;;;;OAIG;IACH,SAAS,CAAC,GAAG,IAAI,IAAI;IAIrB;;;;;;;OAOG;IACH,SAAS,CAAC,eAAe,IAAI,OAAO;IAIpC;;;;OAIG;IACI,kBAAkB;IAIzB;;;;OAIG;IACI,mBAAmB;IAI1B;;OAEG;IACI,oBAAoB,IAAI,IAAI;IAInC;;;;OAIG;IACI,QAAQ,IAAI,MAAM;CAO5B"}
|
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
import { Matcher } from '../Utils/Matcher';
|
|
2
|
-
import { PerformanceMonitor } from '../../Utils/PerformanceMonitor';
|
|
3
|
-
/**
|
|
4
|
-
* 实体系统的基类
|
|
5
|
-
*
|
|
6
|
-
* 用于处理一组符合特定条件的实体。系统是ECS架构中的逻辑处理单元,
|
|
7
|
-
* 负责对拥有特定组件组合的实体执行业务逻辑。
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```typescript
|
|
11
|
-
* class MovementSystem extends EntitySystem {
|
|
12
|
-
* constructor() {
|
|
13
|
-
* super(Matcher.empty().all(Transform, Velocity));
|
|
14
|
-
* }
|
|
15
|
-
*
|
|
16
|
-
* protected process(entities: Entity[]): void {
|
|
17
|
-
* for (const entity of entities) {
|
|
18
|
-
* const transform = entity.getComponent(Transform);
|
|
19
|
-
* const velocity = entity.getComponent(Velocity);
|
|
20
|
-
* transform.position.add(velocity.value);
|
|
21
|
-
* }
|
|
22
|
-
* }
|
|
23
|
-
* }
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
export class EntitySystem {
|
|
27
|
-
/**
|
|
28
|
-
* 获取系统处理的实体列表
|
|
29
|
-
*/
|
|
30
|
-
get entities() {
|
|
31
|
-
return this._entities;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* 获取系统的更新时序
|
|
35
|
-
*/
|
|
36
|
-
get updateOrder() {
|
|
37
|
-
return this._updateOrder;
|
|
38
|
-
}
|
|
39
|
-
set updateOrder(value) {
|
|
40
|
-
this.setUpdateOrder(value);
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* 获取系统的启用状态
|
|
44
|
-
*/
|
|
45
|
-
get enabled() {
|
|
46
|
-
return this._enabled;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* 设置系统的启用状态
|
|
50
|
-
*/
|
|
51
|
-
set enabled(value) {
|
|
52
|
-
this._enabled = value;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* 获取系统名称
|
|
56
|
-
*/
|
|
57
|
-
get systemName() {
|
|
58
|
-
return this._systemName;
|
|
59
|
-
}
|
|
60
|
-
constructor(matcher) {
|
|
61
|
-
this._entities = [];
|
|
62
|
-
this._updateOrder = 0;
|
|
63
|
-
this._enabled = true;
|
|
64
|
-
this._performanceMonitor = PerformanceMonitor.instance;
|
|
65
|
-
this._matcher = matcher ? matcher : Matcher.empty();
|
|
66
|
-
this._systemName = this.constructor.name;
|
|
67
|
-
this.initialize();
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* 这个系统所属的场景
|
|
71
|
-
*/
|
|
72
|
-
get scene() {
|
|
73
|
-
return this._scene;
|
|
74
|
-
}
|
|
75
|
-
set scene(value) {
|
|
76
|
-
this._scene = value;
|
|
77
|
-
this._entities = [];
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* 获取实体匹配器
|
|
81
|
-
*/
|
|
82
|
-
get matcher() {
|
|
83
|
-
return this._matcher;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* 设置更新时序
|
|
87
|
-
* @param order 更新时序
|
|
88
|
-
*/
|
|
89
|
-
setUpdateOrder(order) {
|
|
90
|
-
this._updateOrder = order;
|
|
91
|
-
this.scene.entityProcessors.setDirty();
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* 系统初始化
|
|
95
|
-
*
|
|
96
|
-
* 在系统创建时调用,子类可以重写此方法进行初始化操作。
|
|
97
|
-
*/
|
|
98
|
-
initialize() {
|
|
99
|
-
// 子类可以重写此方法
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* 当实体的组件发生变化时调用
|
|
103
|
-
*
|
|
104
|
-
* 检查实体是否仍然符合系统的匹配条件,并相应地添加或移除实体。
|
|
105
|
-
*
|
|
106
|
-
* @param entity 发生变化的实体
|
|
107
|
-
*/
|
|
108
|
-
onChanged(entity) {
|
|
109
|
-
const contains = this._entities.includes(entity);
|
|
110
|
-
const interest = this._matcher.isInterestedEntity(entity);
|
|
111
|
-
if (interest && !contains) {
|
|
112
|
-
this.add(entity);
|
|
113
|
-
}
|
|
114
|
-
else if (!interest && contains) {
|
|
115
|
-
this.remove(entity);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* 添加实体到系统
|
|
120
|
-
*
|
|
121
|
-
* @param entity 要添加的实体
|
|
122
|
-
*/
|
|
123
|
-
add(entity) {
|
|
124
|
-
if (!this._entities.includes(entity)) {
|
|
125
|
-
this._entities.push(entity);
|
|
126
|
-
this.onAdded(entity);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* 当实体被添加到系统时调用
|
|
131
|
-
*
|
|
132
|
-
* 子类可以重写此方法来处理实体添加事件。
|
|
133
|
-
*
|
|
134
|
-
* @param entity 被添加的实体
|
|
135
|
-
*/
|
|
136
|
-
onAdded(entity) {
|
|
137
|
-
// 子类可以重写此方法
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* 从系统中移除实体
|
|
141
|
-
*
|
|
142
|
-
* @param entity 要移除的实体
|
|
143
|
-
*/
|
|
144
|
-
remove(entity) {
|
|
145
|
-
const index = this._entities.indexOf(entity);
|
|
146
|
-
if (index !== -1) {
|
|
147
|
-
this._entities.splice(index, 1);
|
|
148
|
-
this.onRemoved(entity);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* 当实体从系统中移除时调用
|
|
153
|
-
*
|
|
154
|
-
* 子类可以重写此方法来处理实体移除事件。
|
|
155
|
-
*
|
|
156
|
-
* @param entity 被移除的实体
|
|
157
|
-
*/
|
|
158
|
-
onRemoved(entity) {
|
|
159
|
-
// 子类可以重写此方法
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* 更新系统
|
|
163
|
-
*
|
|
164
|
-
* 在每帧调用,处理系统的主要逻辑。
|
|
165
|
-
*/
|
|
166
|
-
update() {
|
|
167
|
-
if (!this._enabled || !this.checkProcessing()) {
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
const startTime = this._performanceMonitor.startMonitoring(this._systemName);
|
|
171
|
-
try {
|
|
172
|
-
this.begin();
|
|
173
|
-
this.process(this._entities);
|
|
174
|
-
}
|
|
175
|
-
finally {
|
|
176
|
-
this._performanceMonitor.endMonitoring(this._systemName, startTime, this._entities.length);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* 后期更新系统
|
|
181
|
-
*
|
|
182
|
-
* 在所有系统的update方法执行完毕后调用。
|
|
183
|
-
*/
|
|
184
|
-
lateUpdate() {
|
|
185
|
-
if (!this._enabled || !this.checkProcessing()) {
|
|
186
|
-
return;
|
|
187
|
-
}
|
|
188
|
-
const startTime = this._performanceMonitor.startMonitoring(`${this._systemName}_Late`);
|
|
189
|
-
try {
|
|
190
|
-
this.lateProcess(this._entities);
|
|
191
|
-
this.end();
|
|
192
|
-
}
|
|
193
|
-
finally {
|
|
194
|
-
this._performanceMonitor.endMonitoring(`${this._systemName}_Late`, startTime, this._entities.length);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* 在系统处理开始前调用
|
|
199
|
-
*
|
|
200
|
-
* 子类可以重写此方法进行预处理操作。
|
|
201
|
-
*/
|
|
202
|
-
begin() {
|
|
203
|
-
// 子类可以重写此方法
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* 处理实体列表
|
|
207
|
-
*
|
|
208
|
-
* 系统的核心逻辑,子类必须实现此方法来定义具体的处理逻辑。
|
|
209
|
-
*
|
|
210
|
-
* @param entities 要处理的实体列表
|
|
211
|
-
*/
|
|
212
|
-
process(entities) {
|
|
213
|
-
// 子类必须实现此方法
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* 后期处理实体列表
|
|
217
|
-
*
|
|
218
|
-
* 在主要处理逻辑之后执行,子类可以重写此方法。
|
|
219
|
-
*
|
|
220
|
-
* @param entities 要处理的实体列表
|
|
221
|
-
*/
|
|
222
|
-
lateProcess(entities) {
|
|
223
|
-
// 子类可以重写此方法
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* 系统处理完毕后调用
|
|
227
|
-
*
|
|
228
|
-
* 子类可以重写此方法进行后处理操作。
|
|
229
|
-
*/
|
|
230
|
-
end() {
|
|
231
|
-
// 子类可以重写此方法
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* 检查系统是否需要处理
|
|
235
|
-
*
|
|
236
|
-
* 在启用系统时有用,但仅偶尔需要处理。
|
|
237
|
-
* 这只影响处理,不影响事件或订阅列表。
|
|
238
|
-
*
|
|
239
|
-
* @returns 如果系统应该处理,则为true,如果不处理则为false
|
|
240
|
-
*/
|
|
241
|
-
checkProcessing() {
|
|
242
|
-
return true;
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* 获取系统的性能数据
|
|
246
|
-
*
|
|
247
|
-
* @returns 性能数据或undefined
|
|
248
|
-
*/
|
|
249
|
-
getPerformanceData() {
|
|
250
|
-
return this._performanceMonitor.getSystemData(this._systemName);
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* 获取系统的性能统计
|
|
254
|
-
*
|
|
255
|
-
* @returns 性能统计或undefined
|
|
256
|
-
*/
|
|
257
|
-
getPerformanceStats() {
|
|
258
|
-
return this._performanceMonitor.getSystemStats(this._systemName);
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* 重置系统的性能数据
|
|
262
|
-
*/
|
|
263
|
-
resetPerformanceData() {
|
|
264
|
-
this._performanceMonitor.resetSystem(this._systemName);
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* 获取系统信息的字符串表示
|
|
268
|
-
*
|
|
269
|
-
* @returns 系统信息字符串
|
|
270
|
-
*/
|
|
271
|
-
toString() {
|
|
272
|
-
const entityCount = this._entities.length;
|
|
273
|
-
const perfData = this.getPerformanceData();
|
|
274
|
-
const perfInfo = perfData ? ` (${perfData.executionTime.toFixed(2)}ms)` : '';
|
|
275
|
-
return `${this._systemName}[${entityCount} entities]${perfInfo}`;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
//# sourceMappingURL=EntitySystem.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EntitySystem.js","sourceRoot":"","sources":["../../../src/ECS/Systems/EntitySystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { EntitySystem } from './EntitySystem';
|
|
2
|
-
import { Matcher } from '../Utils/Matcher';
|
|
3
|
-
/**
|
|
4
|
-
* 间隔系统抽象类
|
|
5
|
-
* 定义一个按时间间隔处理的抽象类,继承自EntitySystem类
|
|
6
|
-
* 子类需要实现process方法,用于实现具体的处理逻辑
|
|
7
|
-
*/
|
|
8
|
-
export declare abstract class IntervalSystem extends EntitySystem {
|
|
9
|
-
/** 累积增量以跟踪间隔 */
|
|
10
|
-
private acc;
|
|
11
|
-
/** 更新之间需要等待多长时间 */
|
|
12
|
-
private readonly interval;
|
|
13
|
-
/** 时间间隔的余数,用于计算下一次需要等待的时间 */
|
|
14
|
-
private intervalRemainder;
|
|
15
|
-
/**
|
|
16
|
-
* 构造函数,初始化时间间隔
|
|
17
|
-
* @param matcher 实体匹配器
|
|
18
|
-
* @param interval 时间间隔
|
|
19
|
-
*/
|
|
20
|
-
constructor(matcher: Matcher, interval: number);
|
|
21
|
-
/**
|
|
22
|
-
* 判断是否需要进行处理
|
|
23
|
-
* 如果需要进行处理,则更新累积增量和时间间隔余数,返回true
|
|
24
|
-
* 否则返回false
|
|
25
|
-
*/
|
|
26
|
-
protected checkProcessing(): boolean;
|
|
27
|
-
/**
|
|
28
|
-
* 获取本系统上次处理后的实际delta值
|
|
29
|
-
* 实际delta值等于时间间隔加上时间间隔余数
|
|
30
|
-
*/
|
|
31
|
-
protected getIntervalDelta(): number;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=IntervalSystem.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IntervalSystem.d.ts","sourceRoot":"","sources":["../../../src/ECS/Systems/IntervalSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C;;;;GAIG;AACH,8BAAsB,cAAe,SAAQ,YAAY;IACrD,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAa;IACxB,mBAAmB;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,6BAA6B;IAC7B,OAAO,CAAC,iBAAiB,CAAa;IAEtC;;;;OAIG;gBACS,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;IAK9C;;;;OAIG;cACgB,eAAe,IAAI,OAAO;IAkB7C;;;OAGG;IACH,SAAS,CAAC,gBAAgB,IAAI,MAAM;CAGvC"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { EntitySystem } from './EntitySystem';
|
|
2
|
-
import { Time } from '../../Utils/Time';
|
|
3
|
-
/**
|
|
4
|
-
* 间隔系统抽象类
|
|
5
|
-
* 定义一个按时间间隔处理的抽象类,继承自EntitySystem类
|
|
6
|
-
* 子类需要实现process方法,用于实现具体的处理逻辑
|
|
7
|
-
*/
|
|
8
|
-
export class IntervalSystem extends EntitySystem {
|
|
9
|
-
/**
|
|
10
|
-
* 构造函数,初始化时间间隔
|
|
11
|
-
* @param matcher 实体匹配器
|
|
12
|
-
* @param interval 时间间隔
|
|
13
|
-
*/
|
|
14
|
-
constructor(matcher, interval) {
|
|
15
|
-
super(matcher);
|
|
16
|
-
/** 累积增量以跟踪间隔 */
|
|
17
|
-
this.acc = 0;
|
|
18
|
-
/** 时间间隔的余数,用于计算下一次需要等待的时间 */
|
|
19
|
-
this.intervalRemainder = 0;
|
|
20
|
-
this.interval = interval;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* 判断是否需要进行处理
|
|
24
|
-
* 如果需要进行处理,则更新累积增量和时间间隔余数,返回true
|
|
25
|
-
* 否则返回false
|
|
26
|
-
*/
|
|
27
|
-
checkProcessing() {
|
|
28
|
-
// 更新累积增量
|
|
29
|
-
this.acc += Time.deltaTime;
|
|
30
|
-
// 如果累积增量超过时间间隔,则进行处理
|
|
31
|
-
if (this.acc >= this.interval) {
|
|
32
|
-
// 更新时间间隔余数
|
|
33
|
-
this.intervalRemainder = this.acc - this.interval;
|
|
34
|
-
// 重置累积增量
|
|
35
|
-
this.acc = 0;
|
|
36
|
-
// 返回true,表示需要进行处理
|
|
37
|
-
return true;
|
|
38
|
-
}
|
|
39
|
-
// 返回false,表示不需要进行处理
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* 获取本系统上次处理后的实际delta值
|
|
44
|
-
* 实际delta值等于时间间隔加上时间间隔余数
|
|
45
|
-
*/
|
|
46
|
-
getIntervalDelta() {
|
|
47
|
-
return this.interval + this.intervalRemainder;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=IntervalSystem.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IntervalSystem.js","sourceRoot":"","sources":["../../../src/ECS/Systems/IntervalSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC;;;;GAIG;AACH,MAAM,OAAgB,cAAe,SAAQ,YAAY;IAQrD;;;;OAIG;IACH,YAAY,OAAgB,EAAE,QAAgB;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QAbnB,gBAAgB;QACR,QAAG,GAAW,CAAC,CAAC;QAGxB,6BAA6B;QACrB,sBAAiB,GAAW,CAAC,CAAC;QASlC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACgB,eAAe;QAC9B,SAAS;QACT,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;QAE3B,qBAAqB;QACrB,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,WAAW;YACX,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClD,SAAS;YACT,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YACb,kBAAkB;YAClB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,oBAAoB;QACpB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;OAGG;IACO,gBAAgB;QACtB,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC;IAClD,CAAC;CACJ"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { EntitySystem } from './EntitySystem';
|
|
2
|
-
import { Entity } from '../Entity';
|
|
3
|
-
/**
|
|
4
|
-
* 被动实体系统
|
|
5
|
-
* 定义一个被动的实体系统,继承自EntitySystem类
|
|
6
|
-
* 被动的实体系统不会对实体进行任何修改,只会被动地接收实体的变化事件
|
|
7
|
-
*/
|
|
8
|
-
export declare abstract class PassiveSystem extends EntitySystem {
|
|
9
|
-
/**
|
|
10
|
-
* 当实体发生变化时,不进行任何操作
|
|
11
|
-
* @param entity 发生变化的实体
|
|
12
|
-
*/
|
|
13
|
-
onChanged(entity: Entity): void;
|
|
14
|
-
/**
|
|
15
|
-
* 不进行任何处理
|
|
16
|
-
* @param entities 实体数组,未被使用
|
|
17
|
-
*/
|
|
18
|
-
protected process(entities: Entity[]): void;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=PassiveSystem.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PassiveSystem.d.ts","sourceRoot":"","sources":["../../../src/ECS/Systems/PassiveSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC;;;;GAIG;AACH,8BAAsB,aAAc,SAAQ,YAAY;IACpD;;;OAGG;IACa,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAE/C;;;OAGG;cACgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;CAGvD"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { EntitySystem } from './EntitySystem';
|
|
2
|
-
/**
|
|
3
|
-
* 被动实体系统
|
|
4
|
-
* 定义一个被动的实体系统,继承自EntitySystem类
|
|
5
|
-
* 被动的实体系统不会对实体进行任何修改,只会被动地接收实体的变化事件
|
|
6
|
-
*/
|
|
7
|
-
export class PassiveSystem extends EntitySystem {
|
|
8
|
-
/**
|
|
9
|
-
* 当实体发生变化时,不进行任何操作
|
|
10
|
-
* @param entity 发生变化的实体
|
|
11
|
-
*/
|
|
12
|
-
onChanged(entity) { }
|
|
13
|
-
/**
|
|
14
|
-
* 不进行任何处理
|
|
15
|
-
* @param entities 实体数组,未被使用
|
|
16
|
-
*/
|
|
17
|
-
process(entities) {
|
|
18
|
-
// 被动系统不进行任何处理
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=PassiveSystem.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PassiveSystem.js","sourceRoot":"","sources":["../../../src/ECS/Systems/PassiveSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;;;GAIG;AACH,MAAM,OAAgB,aAAc,SAAQ,YAAY;IACpD;;;OAGG;IACa,SAAS,CAAC,MAAc,IAAU,CAAC;IAEnD;;;OAGG;IACgB,OAAO,CAAC,QAAkB;QACzC,cAAc;IAClB,CAAC;CACJ"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { EntitySystem } from './EntitySystem';
|
|
2
|
-
import { Entity } from '../Entity';
|
|
3
|
-
/**
|
|
4
|
-
* 处理系统抽象类
|
|
5
|
-
* 定义一个处理实体的抽象类,继承自EntitySystem类
|
|
6
|
-
* 子类需要实现processSystem方法,用于实现具体的处理逻辑
|
|
7
|
-
*/
|
|
8
|
-
export declare abstract class ProcessingSystem extends EntitySystem {
|
|
9
|
-
/**
|
|
10
|
-
* 当实体发生变化时,不进行任何操作
|
|
11
|
-
* @param entity 发生变化的实体
|
|
12
|
-
*/
|
|
13
|
-
onChanged(entity: Entity): void;
|
|
14
|
-
/**
|
|
15
|
-
* 处理实体,每帧调用processSystem方法进行处理
|
|
16
|
-
* @param entities 实体数组,未被使用
|
|
17
|
-
*/
|
|
18
|
-
protected process(entities: Entity[]): void;
|
|
19
|
-
/**
|
|
20
|
-
* 处理实体的具体方法,由子类实现
|
|
21
|
-
*/
|
|
22
|
-
abstract processSystem(): void;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=ProcessingSystem.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProcessingSystem.d.ts","sourceRoot":"","sources":["../../../src/ECS/Systems/ProcessingSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC;;;;GAIG;AACH,8BAAsB,gBAAiB,SAAQ,YAAY;IACvD;;;OAGG;IACa,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAE/C;;;OAGG;cACgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAKpD;;OAEG;aACa,aAAa,IAAI,IAAI;CACxC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { EntitySystem } from './EntitySystem';
|
|
2
|
-
/**
|
|
3
|
-
* 处理系统抽象类
|
|
4
|
-
* 定义一个处理实体的抽象类,继承自EntitySystem类
|
|
5
|
-
* 子类需要实现processSystem方法,用于实现具体的处理逻辑
|
|
6
|
-
*/
|
|
7
|
-
export class ProcessingSystem extends EntitySystem {
|
|
8
|
-
/**
|
|
9
|
-
* 当实体发生变化时,不进行任何操作
|
|
10
|
-
* @param entity 发生变化的实体
|
|
11
|
-
*/
|
|
12
|
-
onChanged(entity) { }
|
|
13
|
-
/**
|
|
14
|
-
* 处理实体,每帧调用processSystem方法进行处理
|
|
15
|
-
* @param entities 实体数组,未被使用
|
|
16
|
-
*/
|
|
17
|
-
process(entities) {
|
|
18
|
-
// 调用子类实现的processSystem方法进行实体处理
|
|
19
|
-
this.processSystem();
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=ProcessingSystem.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProcessingSystem.js","sourceRoot":"","sources":["../../../src/ECS/Systems/ProcessingSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;;;GAIG;AACH,MAAM,OAAgB,gBAAiB,SAAQ,YAAY;IACvD;;;OAGG;IACa,SAAS,CAAC,MAAc,IAAU,CAAC;IAEnD;;;OAGG;IACgB,OAAO,CAAC,QAAkB;QACzC,+BAA+B;QAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;CAMJ"}
|