@esengine/ecs-framework 2.0.3
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/LICENSE +201 -0
- package/README.md +277 -0
- package/bin/Core.d.ts +198 -0
- package/bin/Core.d.ts.map +1 -0
- package/bin/Core.js +249 -0
- package/bin/Core.js.map +1 -0
- package/bin/ECS/Component.d.ts +119 -0
- package/bin/ECS/Component.d.ts.map +1 -0
- package/bin/ECS/Component.js +129 -0
- package/bin/ECS/Component.js.map +1 -0
- package/bin/ECS/Components/IUpdatable.d.ts +22 -0
- package/bin/ECS/Components/IUpdatable.d.ts.map +1 -0
- package/bin/ECS/Components/IUpdatable.js +17 -0
- package/bin/ECS/Components/IUpdatable.js.map +1 -0
- package/bin/ECS/Components/SceneComponent.d.ts +40 -0
- package/bin/ECS/Components/SceneComponent.d.ts.map +1 -0
- package/bin/ECS/Components/SceneComponent.js +57 -0
- package/bin/ECS/Components/SceneComponent.js.map +1 -0
- package/bin/ECS/Core/ComponentStorage.d.ts +182 -0
- package/bin/ECS/Core/ComponentStorage.d.ts.map +1 -0
- package/bin/ECS/Core/ComponentStorage.js +346 -0
- package/bin/ECS/Core/ComponentStorage.js.map +1 -0
- package/bin/ECS/Core/EventSystem.d.ts +236 -0
- package/bin/ECS/Core/EventSystem.d.ts.map +1 -0
- package/bin/ECS/Core/EventSystem.js +476 -0
- package/bin/ECS/Core/EventSystem.js.map +1 -0
- package/bin/ECS/Core/FluentAPI.d.ts +392 -0
- package/bin/ECS/Core/FluentAPI.d.ts.map +1 -0
- package/bin/ECS/Core/FluentAPI.js +575 -0
- package/bin/ECS/Core/FluentAPI.js.map +1 -0
- package/bin/ECS/Core/QuerySystem.d.ts +574 -0
- package/bin/ECS/Core/QuerySystem.d.ts.map +1 -0
- package/bin/ECS/Core/QuerySystem.js +1356 -0
- package/bin/ECS/Core/QuerySystem.js.map +1 -0
- package/bin/ECS/CoreEvents.d.ts +19 -0
- package/bin/ECS/CoreEvents.d.ts.map +1 -0
- package/bin/ECS/CoreEvents.js +20 -0
- package/bin/ECS/CoreEvents.js.map +1 -0
- package/bin/ECS/Entity.d.ts +585 -0
- package/bin/ECS/Entity.d.ts.map +1 -0
- package/bin/ECS/Entity.js +1079 -0
- package/bin/ECS/Entity.js.map +1 -0
- package/bin/ECS/Scene.d.ts +210 -0
- package/bin/ECS/Scene.d.ts.map +1 -0
- package/bin/ECS/Scene.js +267 -0
- package/bin/ECS/Scene.js.map +1 -0
- package/bin/ECS/Systems/EntitySystem.d.ts +185 -0
- package/bin/ECS/Systems/EntitySystem.d.ts.map +1 -0
- package/bin/ECS/Systems/EntitySystem.js +278 -0
- package/bin/ECS/Systems/EntitySystem.js.map +1 -0
- package/bin/ECS/Systems/IntervalSystem.d.ts +33 -0
- package/bin/ECS/Systems/IntervalSystem.d.ts.map +1 -0
- package/bin/ECS/Systems/IntervalSystem.js +50 -0
- package/bin/ECS/Systems/IntervalSystem.js.map +1 -0
- package/bin/ECS/Systems/PassiveSystem.d.ts +20 -0
- package/bin/ECS/Systems/PassiveSystem.d.ts.map +1 -0
- package/bin/ECS/Systems/PassiveSystem.js +21 -0
- package/bin/ECS/Systems/PassiveSystem.js.map +1 -0
- package/bin/ECS/Systems/ProcessingSystem.d.ts +24 -0
- package/bin/ECS/Systems/ProcessingSystem.d.ts.map +1 -0
- package/bin/ECS/Systems/ProcessingSystem.js +22 -0
- package/bin/ECS/Systems/ProcessingSystem.js.map +1 -0
- package/bin/ECS/Systems/index.d.ts +5 -0
- package/bin/ECS/Systems/index.d.ts.map +1 -0
- package/bin/ECS/Systems/index.js +6 -0
- package/bin/ECS/Systems/index.js.map +1 -0
- package/bin/ECS/Transform.d.ts +178 -0
- package/bin/ECS/Transform.d.ts.map +1 -0
- package/bin/ECS/Transform.js +249 -0
- package/bin/ECS/Transform.js.map +1 -0
- package/bin/ECS/Utils/Bits.d.ts +74 -0
- package/bin/ECS/Utils/Bits.d.ts.map +1 -0
- package/bin/ECS/Utils/Bits.js +142 -0
- package/bin/ECS/Utils/Bits.js.map +1 -0
- package/bin/ECS/Utils/ComponentTypeManager.d.ts +50 -0
- package/bin/ECS/Utils/ComponentTypeManager.d.ts.map +1 -0
- package/bin/ECS/Utils/ComponentTypeManager.js +84 -0
- package/bin/ECS/Utils/ComponentTypeManager.js.map +1 -0
- package/bin/ECS/Utils/EntityList.d.ts +108 -0
- package/bin/ECS/Utils/EntityList.d.ts.map +1 -0
- package/bin/ECS/Utils/EntityList.js +249 -0
- package/bin/ECS/Utils/EntityList.js.map +1 -0
- package/bin/ECS/Utils/EntityProcessorList.d.ts +53 -0
- package/bin/ECS/Utils/EntityProcessorList.d.ts.map +1 -0
- package/bin/ECS/Utils/EntityProcessorList.js +96 -0
- package/bin/ECS/Utils/EntityProcessorList.js.map +1 -0
- package/bin/ECS/Utils/IdentifierPool.d.ts +18 -0
- package/bin/ECS/Utils/IdentifierPool.d.ts.map +1 -0
- package/bin/ECS/Utils/IdentifierPool.js +27 -0
- package/bin/ECS/Utils/IdentifierPool.js.map +1 -0
- package/bin/ECS/Utils/Matcher.d.ts +63 -0
- package/bin/ECS/Utils/Matcher.d.ts.map +1 -0
- package/bin/ECS/Utils/Matcher.js +140 -0
- package/bin/ECS/Utils/Matcher.js.map +1 -0
- package/bin/ECS/Utils/index.d.ts +7 -0
- package/bin/ECS/Utils/index.d.ts.map +1 -0
- package/bin/ECS/Utils/index.js +8 -0
- package/bin/ECS/Utils/index.js.map +1 -0
- package/bin/ECS/index.d.ts +8 -0
- package/bin/ECS/index.d.ts.map +1 -0
- package/bin/ECS/index.js +9 -0
- package/bin/ECS/index.js.map +1 -0
- package/bin/Math/Edge.d.ts +23 -0
- package/bin/Math/Edge.d.ts.map +1 -0
- package/bin/Math/Edge.js +24 -0
- package/bin/Math/Edge.js.map +1 -0
- package/bin/Math/MathHelper.d.ts +75 -0
- package/bin/Math/MathHelper.d.ts.map +1 -0
- package/bin/Math/MathHelper.js +91 -0
- package/bin/Math/MathHelper.js.map +1 -0
- package/bin/Math/Rectangle.d.ts +126 -0
- package/bin/Math/Rectangle.d.ts.map +1 -0
- package/bin/Math/Rectangle.js +181 -0
- package/bin/Math/Rectangle.js.map +1 -0
- package/bin/Math/Vector2.d.ts +229 -0
- package/bin/Math/Vector2.d.ts.map +1 -0
- package/bin/Math/Vector2.js +338 -0
- package/bin/Math/Vector2.js.map +1 -0
- package/bin/Math/index.d.ts +5 -0
- package/bin/Math/index.d.ts.map +1 -0
- package/bin/Math/index.js +6 -0
- package/bin/Math/index.js.map +1 -0
- package/bin/Types/index.d.ts +22 -0
- package/bin/Types/index.d.ts.map +1 -0
- package/bin/Types/index.js +20 -0
- package/bin/Types/index.js.map +1 -0
- package/bin/Utils/Emitter.d.ts +43 -0
- package/bin/Utils/Emitter.d.ts.map +1 -0
- package/bin/Utils/Emitter.js +69 -0
- package/bin/Utils/Emitter.js.map +1 -0
- package/bin/Utils/Extensions/EdgeExt.d.ts +26 -0
- package/bin/Utils/Extensions/EdgeExt.d.ts.map +1 -0
- package/bin/Utils/Extensions/EdgeExt.js +41 -0
- package/bin/Utils/Extensions/EdgeExt.js.map +1 -0
- package/bin/Utils/Extensions/NumberExtension.d.ts +13 -0
- package/bin/Utils/Extensions/NumberExtension.d.ts.map +1 -0
- package/bin/Utils/Extensions/NumberExtension.js +17 -0
- package/bin/Utils/Extensions/NumberExtension.js.map +1 -0
- package/bin/Utils/Extensions/TypeUtils.d.ts +13 -0
- package/bin/Utils/Extensions/TypeUtils.d.ts.map +1 -0
- package/bin/Utils/Extensions/TypeUtils.js +15 -0
- package/bin/Utils/Extensions/TypeUtils.js.map +1 -0
- package/bin/Utils/Extensions/index.d.ts +4 -0
- package/bin/Utils/Extensions/index.d.ts.map +1 -0
- package/bin/Utils/Extensions/index.js +5 -0
- package/bin/Utils/Extensions/index.js.map +1 -0
- package/bin/Utils/GlobalManager.d.ts +32 -0
- package/bin/Utils/GlobalManager.d.ts.map +1 -0
- package/bin/Utils/GlobalManager.js +53 -0
- package/bin/Utils/GlobalManager.js.map +1 -0
- package/bin/Utils/PerformanceMonitor.d.ts +211 -0
- package/bin/Utils/PerformanceMonitor.d.ts.map +1 -0
- package/bin/Utils/PerformanceMonitor.js +270 -0
- package/bin/Utils/PerformanceMonitor.js.map +1 -0
- package/bin/Utils/Pool.d.ts +239 -0
- package/bin/Utils/Pool.d.ts.map +1 -0
- package/bin/Utils/Pool.js +449 -0
- package/bin/Utils/Pool.js.map +1 -0
- package/bin/Utils/Screen.d.ts +12 -0
- package/bin/Utils/Screen.d.ts.map +1 -0
- package/bin/Utils/Screen.js +14 -0
- package/bin/Utils/Screen.js.map +1 -0
- package/bin/Utils/Time.d.ts +55 -0
- package/bin/Utils/Time.d.ts.map +1 -0
- package/bin/Utils/Time.js +78 -0
- package/bin/Utils/Time.js.map +1 -0
- package/bin/Utils/Timers/ITimer.d.ts +16 -0
- package/bin/Utils/Timers/ITimer.d.ts.map +1 -0
- package/bin/Utils/Timers/ITimer.js +2 -0
- package/bin/Utils/Timers/ITimer.js.map +1 -0
- package/bin/Utils/Timers/Timer.d.ts +22 -0
- package/bin/Utils/Timers/Timer.d.ts.map +1 -0
- package/bin/Utils/Timers/Timer.js +46 -0
- package/bin/Utils/Timers/Timer.js.map +1 -0
- package/bin/Utils/Timers/TimerManager.d.ts +19 -0
- package/bin/Utils/Timers/TimerManager.d.ts.map +1 -0
- package/bin/Utils/Timers/TimerManager.js +33 -0
- package/bin/Utils/Timers/TimerManager.js.map +1 -0
- package/bin/Utils/index.d.ts +6 -0
- package/bin/Utils/index.d.ts.map +1 -0
- package/bin/Utils/index.js +7 -0
- package/bin/Utils/index.js.map +1 -0
- package/bin/index.d.ts +21 -0
- package/bin/index.d.ts.map +1 -0
- package/bin/index.js +26 -0
- package/bin/index.js.map +1 -0
- package/package.json +68 -0
package/bin/Core.js
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { Emitter } from './Utils/Emitter';
|
|
2
|
+
import { CoreEvents } from './ECS/CoreEvents';
|
|
3
|
+
import { TimerManager } from './Utils/Timers/TimerManager';
|
|
4
|
+
import { Time } from './Utils/Time';
|
|
5
|
+
import { PerformanceMonitor } from './Utils/PerformanceMonitor';
|
|
6
|
+
import { PoolManager } from './Utils/Pool';
|
|
7
|
+
import { createECSAPI } from './ECS/Core/FluentAPI';
|
|
8
|
+
/**
|
|
9
|
+
* 游戏引擎核心类
|
|
10
|
+
*
|
|
11
|
+
* 负责管理游戏的生命周期、场景切换、全局管理器和定时器系统。
|
|
12
|
+
* 提供统一的游戏循环和事件分发机制。
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* // 创建核心实例
|
|
17
|
+
* const core = Core.create(true);
|
|
18
|
+
*
|
|
19
|
+
* // 设置场景
|
|
20
|
+
* Core.scene = new MyScene();
|
|
21
|
+
*
|
|
22
|
+
* // 调度定时器
|
|
23
|
+
* Core.schedule(1.0, false, null, (timer) => {
|
|
24
|
+
* console.log("1秒后执行");
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export class Core {
|
|
29
|
+
/**
|
|
30
|
+
* 创建核心实例
|
|
31
|
+
*
|
|
32
|
+
* @param debug - 是否启用调试模式,默认为true
|
|
33
|
+
* @param enableEntitySystems - 是否启用实体系统,默认为true
|
|
34
|
+
*/
|
|
35
|
+
constructor(debug = true, enableEntitySystems = true) {
|
|
36
|
+
/**
|
|
37
|
+
* 待切换的场景
|
|
38
|
+
*
|
|
39
|
+
* 存储下一帧要切换到的场景实例。
|
|
40
|
+
*/
|
|
41
|
+
this._nextScene = null;
|
|
42
|
+
/**
|
|
43
|
+
* 全局管理器集合
|
|
44
|
+
*
|
|
45
|
+
* 存储所有注册的全局管理器实例。
|
|
46
|
+
*/
|
|
47
|
+
this._globalManagers = [];
|
|
48
|
+
Core._instance = this;
|
|
49
|
+
Core.emitter = new Emitter();
|
|
50
|
+
Core.emitter.addObserver(CoreEvents.frameUpdated, this.update, this);
|
|
51
|
+
// 初始化管理器
|
|
52
|
+
this._timerManager = new TimerManager();
|
|
53
|
+
Core.registerGlobalManager(this._timerManager);
|
|
54
|
+
// 初始化性能监控器
|
|
55
|
+
this._performanceMonitor = PerformanceMonitor.instance;
|
|
56
|
+
// 初始化对象池管理器
|
|
57
|
+
this._poolManager = PoolManager.getInstance();
|
|
58
|
+
Core.entitySystemsEnabled = enableEntitySystems;
|
|
59
|
+
this.debug = debug;
|
|
60
|
+
this.initialize();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 获取核心实例
|
|
64
|
+
*
|
|
65
|
+
* @returns 全局核心实例
|
|
66
|
+
*/
|
|
67
|
+
static get Instance() {
|
|
68
|
+
return this._instance;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 获取当前活动的场景
|
|
72
|
+
*
|
|
73
|
+
* @returns 当前场景实例,如果没有则返回null
|
|
74
|
+
*/
|
|
75
|
+
static get scene() {
|
|
76
|
+
if (!this._instance)
|
|
77
|
+
return null;
|
|
78
|
+
return this._instance._scene || null;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* 设置当前活动的场景
|
|
82
|
+
*
|
|
83
|
+
* 如果当前没有场景,会立即切换;否则会在下一帧切换。
|
|
84
|
+
*
|
|
85
|
+
* @param value - 要设置的场景实例
|
|
86
|
+
* @throws {Error} 当场景为空时抛出错误
|
|
87
|
+
*/
|
|
88
|
+
static set scene(value) {
|
|
89
|
+
if (!value)
|
|
90
|
+
return;
|
|
91
|
+
if (!value) {
|
|
92
|
+
throw new Error("场景不能为空");
|
|
93
|
+
}
|
|
94
|
+
if (this._instance._scene == null) {
|
|
95
|
+
this._instance._scene = value;
|
|
96
|
+
this._instance.onSceneChanged();
|
|
97
|
+
this._instance._scene.begin();
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this._instance._nextScene = value;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* 创建Core实例
|
|
105
|
+
*
|
|
106
|
+
* 如果实例已存在,则返回现有实例。
|
|
107
|
+
*
|
|
108
|
+
* @param debug - 是否为调试模式,默认为true
|
|
109
|
+
* @returns Core实例
|
|
110
|
+
*/
|
|
111
|
+
static create(debug = true) {
|
|
112
|
+
if (this._instance == null) {
|
|
113
|
+
this._instance = new Core(debug);
|
|
114
|
+
}
|
|
115
|
+
return this._instance;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 注册全局管理器
|
|
119
|
+
*
|
|
120
|
+
* 将管理器添加到全局管理器列表中,并启用它。
|
|
121
|
+
*
|
|
122
|
+
* @param manager - 要注册的全局管理器
|
|
123
|
+
*/
|
|
124
|
+
static registerGlobalManager(manager) {
|
|
125
|
+
this._instance._globalManagers.push(manager);
|
|
126
|
+
manager.enabled = true;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* 注销全局管理器
|
|
130
|
+
*
|
|
131
|
+
* 从全局管理器列表中移除管理器,并禁用它。
|
|
132
|
+
*
|
|
133
|
+
* @param manager - 要注销的全局管理器
|
|
134
|
+
*/
|
|
135
|
+
static unregisterGlobalManager(manager) {
|
|
136
|
+
this._instance._globalManagers.splice(this._instance._globalManagers.indexOf(manager), 1);
|
|
137
|
+
manager.enabled = false;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* 获取指定类型的全局管理器
|
|
141
|
+
*
|
|
142
|
+
* @param type - 管理器类型构造函数
|
|
143
|
+
* @returns 管理器实例,如果未找到则返回null
|
|
144
|
+
*/
|
|
145
|
+
static getGlobalManager(type) {
|
|
146
|
+
for (const manager of this._instance._globalManagers) {
|
|
147
|
+
if (manager instanceof type)
|
|
148
|
+
return manager;
|
|
149
|
+
}
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* 调度定时器
|
|
154
|
+
*
|
|
155
|
+
* 创建一个定时器,在指定时间后执行回调函数。
|
|
156
|
+
*
|
|
157
|
+
* @param timeInSeconds - 延迟时间(秒)
|
|
158
|
+
* @param repeats - 是否重复执行,默认为false
|
|
159
|
+
* @param context - 回调函数的上下文,默认为null
|
|
160
|
+
* @param onTime - 定时器触发时的回调函数
|
|
161
|
+
* @returns 创建的定时器实例
|
|
162
|
+
*/
|
|
163
|
+
static schedule(timeInSeconds, repeats = false, context = null, onTime) {
|
|
164
|
+
return this._instance._timerManager.schedule(timeInSeconds, repeats, context, onTime);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* 获取ECS流式API
|
|
168
|
+
*
|
|
169
|
+
* @returns ECS API实例,如果未初始化则返回null
|
|
170
|
+
*/
|
|
171
|
+
static get ecsAPI() {
|
|
172
|
+
var _a;
|
|
173
|
+
return ((_a = this._instance) === null || _a === void 0 ? void 0 : _a._ecsAPI) || null;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* 场景切换回调
|
|
177
|
+
*
|
|
178
|
+
* 在场景切换时调用,用于重置时间系统等。
|
|
179
|
+
*/
|
|
180
|
+
onSceneChanged() {
|
|
181
|
+
Time.sceneChanged();
|
|
182
|
+
// 初始化ECS API(如果场景支持)
|
|
183
|
+
if (this._scene && typeof this._scene.querySystem !== 'undefined') {
|
|
184
|
+
const scene = this._scene;
|
|
185
|
+
this._ecsAPI = createECSAPI(scene, scene.querySystem, scene.eventSystem);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* 初始化核心系统
|
|
190
|
+
*
|
|
191
|
+
* 执行核心系统的初始化逻辑。
|
|
192
|
+
*/
|
|
193
|
+
initialize() {
|
|
194
|
+
// 核心系统初始化
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* 游戏主循环更新
|
|
198
|
+
*
|
|
199
|
+
* 每帧调用,负责更新时间系统、全局管理器和当前场景。
|
|
200
|
+
*
|
|
201
|
+
* @param currentTime - 当前时间戳,默认为-1(使用系统时间)
|
|
202
|
+
*/
|
|
203
|
+
update(currentTime = -1) {
|
|
204
|
+
var _a;
|
|
205
|
+
if (Core.paused)
|
|
206
|
+
return;
|
|
207
|
+
// 开始性能监控
|
|
208
|
+
const frameStartTime = this._performanceMonitor.startMonitoring('Core.update');
|
|
209
|
+
Time.update(currentTime);
|
|
210
|
+
// 更新FPS监控(如果性能监控器支持)
|
|
211
|
+
if (typeof this._performanceMonitor.updateFPS === 'function') {
|
|
212
|
+
this._performanceMonitor.updateFPS(Time.deltaTime);
|
|
213
|
+
}
|
|
214
|
+
// 更新全局管理器
|
|
215
|
+
const managersStartTime = this._performanceMonitor.startMonitoring('GlobalManagers.update');
|
|
216
|
+
for (const globalManager of this._globalManagers) {
|
|
217
|
+
if (globalManager.enabled)
|
|
218
|
+
globalManager.update();
|
|
219
|
+
}
|
|
220
|
+
this._performanceMonitor.endMonitoring('GlobalManagers.update', managersStartTime, this._globalManagers.length);
|
|
221
|
+
// 更新对象池管理器
|
|
222
|
+
this._poolManager.update();
|
|
223
|
+
// 处理场景切换
|
|
224
|
+
if (this._nextScene != null) {
|
|
225
|
+
if (this._scene != null)
|
|
226
|
+
this._scene.end();
|
|
227
|
+
this._scene = this._nextScene;
|
|
228
|
+
this._nextScene = null;
|
|
229
|
+
this.onSceneChanged();
|
|
230
|
+
this._scene.begin();
|
|
231
|
+
}
|
|
232
|
+
// 更新当前场景
|
|
233
|
+
if (this._scene != null && this._scene.update) {
|
|
234
|
+
const sceneStartTime = this._performanceMonitor.startMonitoring('Scene.update');
|
|
235
|
+
this._scene.update();
|
|
236
|
+
const entityCount = ((_a = this._scene.entities) === null || _a === void 0 ? void 0 : _a.count) || 0;
|
|
237
|
+
this._performanceMonitor.endMonitoring('Scene.update', sceneStartTime, entityCount);
|
|
238
|
+
}
|
|
239
|
+
// 结束性能监控
|
|
240
|
+
this._performanceMonitor.endMonitoring('Core.update', frameStartTime);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* 游戏暂停状态
|
|
245
|
+
*
|
|
246
|
+
* 当设置为true时,游戏循环将暂停执行。
|
|
247
|
+
*/
|
|
248
|
+
Core.paused = false;
|
|
249
|
+
//# sourceMappingURL=Core.js.map
|
package/bin/Core.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Core.js","sourceRoot":"","sources":["../src/Core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 游戏组件基类
|
|
3
|
+
*
|
|
4
|
+
* ECS架构中的组件(Component),用于实现具体的游戏功能。
|
|
5
|
+
* 组件包含数据和行为,可以被添加到实体上以扩展实体的功能。
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* class HealthComponent extends Component {
|
|
10
|
+
* public health: number = 100;
|
|
11
|
+
*
|
|
12
|
+
* public takeDamage(damage: number): void {
|
|
13
|
+
* this.health -= damage;
|
|
14
|
+
* if (this.health <= 0) {
|
|
15
|
+
* this.entity.destroy();
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare abstract class Component {
|
|
22
|
+
/**
|
|
23
|
+
* 组件ID生成器
|
|
24
|
+
*
|
|
25
|
+
* 用于为每个组件分配唯一的ID。
|
|
26
|
+
*/
|
|
27
|
+
static _idGenerator: number;
|
|
28
|
+
/**
|
|
29
|
+
* 组件唯一标识符
|
|
30
|
+
*
|
|
31
|
+
* 在整个游戏生命周期中唯一的数字ID。
|
|
32
|
+
*/
|
|
33
|
+
readonly id: number;
|
|
34
|
+
/**
|
|
35
|
+
* 组件所属的实体
|
|
36
|
+
*
|
|
37
|
+
* 指向拥有此组件的实体实例。
|
|
38
|
+
*/
|
|
39
|
+
entity: Entity;
|
|
40
|
+
/**
|
|
41
|
+
* 组件启用状态
|
|
42
|
+
*
|
|
43
|
+
* 控制组件是否参与更新循环。
|
|
44
|
+
*/
|
|
45
|
+
private _enabled;
|
|
46
|
+
/**
|
|
47
|
+
* 更新顺序
|
|
48
|
+
*
|
|
49
|
+
* 决定组件在更新循环中的执行顺序。
|
|
50
|
+
*/
|
|
51
|
+
private _updateOrder;
|
|
52
|
+
/**
|
|
53
|
+
* 创建组件实例
|
|
54
|
+
*
|
|
55
|
+
* 自动分配唯一ID给组件。
|
|
56
|
+
*/
|
|
57
|
+
constructor();
|
|
58
|
+
/**
|
|
59
|
+
* 获取组件启用状态
|
|
60
|
+
*
|
|
61
|
+
* 组件的实际启用状态取决于自身状态和所属实体的状态。
|
|
62
|
+
*
|
|
63
|
+
* @returns 如果组件和所属实体都启用则返回true
|
|
64
|
+
*/
|
|
65
|
+
get enabled(): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* 设置组件启用状态
|
|
68
|
+
*
|
|
69
|
+
* 当状态改变时会触发相应的生命周期回调。
|
|
70
|
+
*
|
|
71
|
+
* @param value - 新的启用状态
|
|
72
|
+
*/
|
|
73
|
+
set enabled(value: boolean);
|
|
74
|
+
/**
|
|
75
|
+
* 获取更新顺序
|
|
76
|
+
*
|
|
77
|
+
* @returns 组件的更新顺序值
|
|
78
|
+
*/
|
|
79
|
+
get updateOrder(): number;
|
|
80
|
+
/**
|
|
81
|
+
* 设置更新顺序
|
|
82
|
+
*
|
|
83
|
+
* @param value - 新的更新顺序值
|
|
84
|
+
*/
|
|
85
|
+
set updateOrder(value: number);
|
|
86
|
+
/**
|
|
87
|
+
* 组件添加到实体时的回调
|
|
88
|
+
*
|
|
89
|
+
* 当组件被添加到实体时调用,可以在此方法中进行初始化操作。
|
|
90
|
+
*/
|
|
91
|
+
onAddedToEntity(): void;
|
|
92
|
+
/**
|
|
93
|
+
* 组件从实体移除时的回调
|
|
94
|
+
*
|
|
95
|
+
* 当组件从实体中移除时调用,可以在此方法中进行清理操作。
|
|
96
|
+
*/
|
|
97
|
+
onRemovedFromEntity(): void;
|
|
98
|
+
/**
|
|
99
|
+
* 组件启用时的回调
|
|
100
|
+
*
|
|
101
|
+
* 当组件被启用时调用。
|
|
102
|
+
*/
|
|
103
|
+
onEnabled(): void;
|
|
104
|
+
/**
|
|
105
|
+
* 组件禁用时的回调
|
|
106
|
+
*
|
|
107
|
+
* 当组件被禁用时调用。
|
|
108
|
+
*/
|
|
109
|
+
onDisabled(): void;
|
|
110
|
+
/**
|
|
111
|
+
* 更新组件
|
|
112
|
+
*
|
|
113
|
+
* 每帧调用,用于更新组件的逻辑。
|
|
114
|
+
* 子类应该重写此方法来实现具体的更新逻辑。
|
|
115
|
+
*/
|
|
116
|
+
update(): void;
|
|
117
|
+
}
|
|
118
|
+
import type { Entity } from './Entity';
|
|
119
|
+
//# sourceMappingURL=Component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Component.d.ts","sourceRoot":"","sources":["../../src/ECS/Component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,8BAAsB,SAAS;IAC3B;;;;OAIG;IACH,OAAc,YAAY,EAAE,MAAM,CAAK;IAEvC;;;;OAIG;IACH,SAAgB,EAAE,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACI,MAAM,EAAG,MAAM,CAAC;IAEvB;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAiB;IAEjC;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAa;IAEjC;;;;OAIG;;IAKH;;;;;;OAMG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;;;;;OAMG;IACH,IAAW,OAAO,CAAC,KAAK,EAAE,OAAO,EAShC;IAED;;;;OAIG;IACH,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED;;;;OAIG;IACH,IAAW,WAAW,CAAC,KAAK,EAAE,MAAM,EAEnC;IAED;;;;OAIG;IACI,eAAe,IAAI,IAAI;IAG9B;;;;OAIG;IACI,mBAAmB,IAAI,IAAI;IAGlC;;;;OAIG;IACI,SAAS,IAAI,IAAI;IAGxB;;;;OAIG;IACI,UAAU,IAAI,IAAI;IAGzB;;;;;OAKG;IACI,MAAM,IAAI,IAAI;CAExB;AAGD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 游戏组件基类
|
|
3
|
+
*
|
|
4
|
+
* ECS架构中的组件(Component),用于实现具体的游戏功能。
|
|
5
|
+
* 组件包含数据和行为,可以被添加到实体上以扩展实体的功能。
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* class HealthComponent extends Component {
|
|
10
|
+
* public health: number = 100;
|
|
11
|
+
*
|
|
12
|
+
* public takeDamage(damage: number): void {
|
|
13
|
+
* this.health -= damage;
|
|
14
|
+
* if (this.health <= 0) {
|
|
15
|
+
* this.entity.destroy();
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export class Component {
|
|
22
|
+
/**
|
|
23
|
+
* 创建组件实例
|
|
24
|
+
*
|
|
25
|
+
* 自动分配唯一ID给组件。
|
|
26
|
+
*/
|
|
27
|
+
constructor() {
|
|
28
|
+
/**
|
|
29
|
+
* 组件启用状态
|
|
30
|
+
*
|
|
31
|
+
* 控制组件是否参与更新循环。
|
|
32
|
+
*/
|
|
33
|
+
this._enabled = true;
|
|
34
|
+
/**
|
|
35
|
+
* 更新顺序
|
|
36
|
+
*
|
|
37
|
+
* 决定组件在更新循环中的执行顺序。
|
|
38
|
+
*/
|
|
39
|
+
this._updateOrder = 0;
|
|
40
|
+
this.id = Component._idGenerator++;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 获取组件启用状态
|
|
44
|
+
*
|
|
45
|
+
* 组件的实际启用状态取决于自身状态和所属实体的状态。
|
|
46
|
+
*
|
|
47
|
+
* @returns 如果组件和所属实体都启用则返回true
|
|
48
|
+
*/
|
|
49
|
+
get enabled() {
|
|
50
|
+
return this.entity ? this.entity.enabled && this._enabled : this._enabled;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 设置组件启用状态
|
|
54
|
+
*
|
|
55
|
+
* 当状态改变时会触发相应的生命周期回调。
|
|
56
|
+
*
|
|
57
|
+
* @param value - 新的启用状态
|
|
58
|
+
*/
|
|
59
|
+
set enabled(value) {
|
|
60
|
+
if (this._enabled !== value) {
|
|
61
|
+
this._enabled = value;
|
|
62
|
+
if (this._enabled) {
|
|
63
|
+
this.onEnabled();
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.onDisabled();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 获取更新顺序
|
|
72
|
+
*
|
|
73
|
+
* @returns 组件的更新顺序值
|
|
74
|
+
*/
|
|
75
|
+
get updateOrder() {
|
|
76
|
+
return this._updateOrder;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 设置更新顺序
|
|
80
|
+
*
|
|
81
|
+
* @param value - 新的更新顺序值
|
|
82
|
+
*/
|
|
83
|
+
set updateOrder(value) {
|
|
84
|
+
this._updateOrder = value;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 组件添加到实体时的回调
|
|
88
|
+
*
|
|
89
|
+
* 当组件被添加到实体时调用,可以在此方法中进行初始化操作。
|
|
90
|
+
*/
|
|
91
|
+
onAddedToEntity() {
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 组件从实体移除时的回调
|
|
95
|
+
*
|
|
96
|
+
* 当组件从实体中移除时调用,可以在此方法中进行清理操作。
|
|
97
|
+
*/
|
|
98
|
+
onRemovedFromEntity() {
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 组件启用时的回调
|
|
102
|
+
*
|
|
103
|
+
* 当组件被启用时调用。
|
|
104
|
+
*/
|
|
105
|
+
onEnabled() {
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* 组件禁用时的回调
|
|
109
|
+
*
|
|
110
|
+
* 当组件被禁用时调用。
|
|
111
|
+
*/
|
|
112
|
+
onDisabled() {
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* 更新组件
|
|
116
|
+
*
|
|
117
|
+
* 每帧调用,用于更新组件的逻辑。
|
|
118
|
+
* 子类应该重写此方法来实现具体的更新逻辑。
|
|
119
|
+
*/
|
|
120
|
+
update() {
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* 组件ID生成器
|
|
125
|
+
*
|
|
126
|
+
* 用于为每个组件分配唯一的ID。
|
|
127
|
+
*/
|
|
128
|
+
Component._idGenerator = 0;
|
|
129
|
+
//# sourceMappingURL=Component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Component.js","sourceRoot":"","sources":["../../src/ECS/Component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAgB,SAAS;IAoC3B;;;;OAIG;IACH;QAnBA;;;;WAIG;QACK,aAAQ,GAAY,IAAI,CAAC;QAEjC;;;;WAIG;QACK,iBAAY,GAAW,CAAC,CAAC;QAQ7B,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACH,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC9E,CAAC;IAED;;;;;;OAMG;IACH,IAAW,OAAO,CAAC,KAAc;QAC7B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,IAAW,WAAW,CAAC,KAAa;QAChC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACI,eAAe;IACtB,CAAC;IAED;;;;OAIG;IACI,mBAAmB;IAC1B,CAAC;IAED;;;;OAIG;IACI,SAAS;IAChB,CAAC;IAED;;;;OAIG;IACI,UAAU;IACjB,CAAC;IAED;;;;;OAKG;IACI,MAAM;IACb,CAAC;;AAlID;;;;GAIG;AACW,sBAAY,GAAW,CAAC,AAAZ,CAAa"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 可更新接口
|
|
3
|
+
* 当添加到组件时,只要组件和实体被启用,就会在每帧调用update方法
|
|
4
|
+
*/
|
|
5
|
+
export interface IUpdatable {
|
|
6
|
+
enabled: boolean;
|
|
7
|
+
updateOrder: number;
|
|
8
|
+
update(): void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 用于比较组件更新排序的比较器
|
|
12
|
+
*/
|
|
13
|
+
export declare class IUpdatableComparer {
|
|
14
|
+
compare(a: IUpdatable, b: IUpdatable): number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 检查对象是否实现了IUpdatable接口
|
|
18
|
+
* @param props 要检查的对象
|
|
19
|
+
* @returns 如果实现了IUpdatable接口返回true,否则返回false
|
|
20
|
+
*/
|
|
21
|
+
export declare function isIUpdatable(props: any): props is IUpdatable;
|
|
22
|
+
//# sourceMappingURL=IUpdatable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IUpdatable.d.ts","sourceRoot":"","sources":["../../../src/ECS/Components/IUpdatable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,IAAI,IAAI,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IACpB,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM;CAGvD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,UAAU,CAE5D"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 用于比较组件更新排序的比较器
|
|
3
|
+
*/
|
|
4
|
+
export class IUpdatableComparer {
|
|
5
|
+
compare(a, b) {
|
|
6
|
+
return a.updateOrder - b.updateOrder;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 检查对象是否实现了IUpdatable接口
|
|
11
|
+
* @param props 要检查的对象
|
|
12
|
+
* @returns 如果实现了IUpdatable接口返回true,否则返回false
|
|
13
|
+
*/
|
|
14
|
+
export function isIUpdatable(props) {
|
|
15
|
+
return typeof props['update'] !== 'undefined';
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=IUpdatable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IUpdatable.js","sourceRoot":"","sources":["../../../src/ECS/Components/IUpdatable.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACpB,OAAO,CAAC,CAAa,EAAE,CAAa;QACvC,OAAO,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;IACzC,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAU;IACnC,OAAO,OAAQ,KAAoB,CAAC,QAAQ,CAAC,KAAK,WAAW,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Scene } from '../Scene';
|
|
2
|
+
/**
|
|
3
|
+
* 场景组件基类
|
|
4
|
+
* 附加到场景的组件,用于实现场景级别的功能
|
|
5
|
+
*/
|
|
6
|
+
export declare class SceneComponent {
|
|
7
|
+
/** 组件所属的场景 */
|
|
8
|
+
scene: Scene;
|
|
9
|
+
/** 更新顺序 */
|
|
10
|
+
updateOrder: number;
|
|
11
|
+
/** 是否启用 */
|
|
12
|
+
private _enabled;
|
|
13
|
+
/** 获取是否启用 */
|
|
14
|
+
get enabled(): boolean;
|
|
15
|
+
/** 设置是否启用 */
|
|
16
|
+
set enabled(value: boolean);
|
|
17
|
+
/**
|
|
18
|
+
* 当组件启用时调用
|
|
19
|
+
*/
|
|
20
|
+
onEnabled(): void;
|
|
21
|
+
/**
|
|
22
|
+
* 当组件禁用时调用
|
|
23
|
+
*/
|
|
24
|
+
onDisabled(): void;
|
|
25
|
+
/**
|
|
26
|
+
* 当组件从场景中移除时调用
|
|
27
|
+
*/
|
|
28
|
+
onRemovedFromScene(): void;
|
|
29
|
+
/**
|
|
30
|
+
* 每帧更新
|
|
31
|
+
*/
|
|
32
|
+
update(): void;
|
|
33
|
+
/**
|
|
34
|
+
* 比较组件的更新顺序
|
|
35
|
+
* @param other 其他组件
|
|
36
|
+
* @returns 比较结果
|
|
37
|
+
*/
|
|
38
|
+
compare(other: SceneComponent): number;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=SceneComponent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SceneComponent.d.ts","sourceRoot":"","sources":["../../../src/ECS/Components/SceneComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC;;;GAGG;AACH,qBAAa,cAAc;IACvB,cAAc;IACP,KAAK,EAAG,KAAK,CAAC;IACrB,WAAW;IACJ,WAAW,EAAE,MAAM,CAAK;IAC/B,WAAW;IACX,OAAO,CAAC,QAAQ,CAAiB;IAEjC,aAAa;IACb,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,aAAa;IACb,IAAW,OAAO,CAAC,KAAK,EAAE,OAAO,EAShC;IAED;;OAEG;IACI,SAAS,IAAI,IAAI;IAGxB;;OAEG;IACI,UAAU,IAAI,IAAI;IAGzB;;OAEG;IACI,kBAAkB,IAAI,IAAI;IAGjC;;OAEG;IACI,MAAM,IAAI,IAAI;IAGrB;;;;OAIG;IACI,OAAO,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM;CAGhD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 场景组件基类
|
|
3
|
+
* 附加到场景的组件,用于实现场景级别的功能
|
|
4
|
+
*/
|
|
5
|
+
export class SceneComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
/** 更新顺序 */
|
|
8
|
+
this.updateOrder = 0;
|
|
9
|
+
/** 是否启用 */
|
|
10
|
+
this._enabled = true;
|
|
11
|
+
}
|
|
12
|
+
/** 获取是否启用 */
|
|
13
|
+
get enabled() {
|
|
14
|
+
return this._enabled;
|
|
15
|
+
}
|
|
16
|
+
/** 设置是否启用 */
|
|
17
|
+
set enabled(value) {
|
|
18
|
+
if (this._enabled !== value) {
|
|
19
|
+
this._enabled = value;
|
|
20
|
+
if (this._enabled) {
|
|
21
|
+
this.onEnabled();
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
this.onDisabled();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 当组件启用时调用
|
|
30
|
+
*/
|
|
31
|
+
onEnabled() {
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 当组件禁用时调用
|
|
35
|
+
*/
|
|
36
|
+
onDisabled() {
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 当组件从场景中移除时调用
|
|
40
|
+
*/
|
|
41
|
+
onRemovedFromScene() {
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 每帧更新
|
|
45
|
+
*/
|
|
46
|
+
update() {
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 比较组件的更新顺序
|
|
50
|
+
* @param other 其他组件
|
|
51
|
+
* @returns 比较结果
|
|
52
|
+
*/
|
|
53
|
+
compare(other) {
|
|
54
|
+
return this.updateOrder - other.updateOrder;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=SceneComponent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SceneComponent.js","sourceRoot":"","sources":["../../../src/ECS/Components/SceneComponent.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,cAAc;IAA3B;QAGI,WAAW;QACJ,gBAAW,GAAW,CAAC,CAAC;QAC/B,WAAW;QACH,aAAQ,GAAY,IAAI,CAAC;IAmDrC,CAAC;IAjDG,aAAa;IACb,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,aAAa;IACb,IAAW,OAAO,CAAC,KAAc;QAC7B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACI,SAAS;IAChB,CAAC;IAED;;OAEG;IACI,UAAU;IACjB,CAAC;IAED;;OAEG;IACI,kBAAkB;IACzB,CAAC;IAED;;OAEG;IACI,MAAM;IACb,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,KAAqB;QAChC,OAAO,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IAChD,CAAC;CACJ"}
|