@esengine/ecs-framework 2.1.28 → 2.1.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/Core.d.ts +279 -0
- package/bin/Core.d.ts.map +1 -0
- package/bin/Core.js +400 -0
- package/bin/Core.js.map +1 -0
- package/bin/ECS/Component.d.ts +120 -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/ArchetypeSystem.d.ts +100 -0
- package/bin/ECS/Core/ArchetypeSystem.d.ts.map +1 -0
- package/bin/ECS/Core/ArchetypeSystem.js +193 -0
- package/bin/ECS/Core/ArchetypeSystem.js.map +1 -0
- package/bin/ECS/Core/ComponentIndex.d.ts +151 -0
- package/bin/ECS/Core/ComponentIndex.d.ts.map +1 -0
- package/bin/ECS/Core/ComponentIndex.js +405 -0
- package/bin/ECS/Core/ComponentIndex.js.map +1 -0
- package/bin/ECS/Core/ComponentPool.d.ts +88 -0
- package/bin/ECS/Core/ComponentPool.d.ts.map +1 -0
- package/bin/ECS/Core/ComponentPool.js +159 -0
- package/bin/ECS/Core/ComponentPool.js.map +1 -0
- package/bin/ECS/Core/ComponentStorage/ComponentRegistry.d.ts +92 -0
- package/bin/ECS/Core/ComponentStorage/ComponentRegistry.d.ts.map +1 -0
- package/bin/ECS/Core/ComponentStorage/ComponentRegistry.js +167 -0
- package/bin/ECS/Core/ComponentStorage/ComponentRegistry.js.map +1 -0
- package/bin/ECS/Core/ComponentStorage.d.ts +233 -0
- package/bin/ECS/Core/ComponentStorage.d.ts.map +1 -0
- package/bin/ECS/Core/ComponentStorage.js +463 -0
- package/bin/ECS/Core/ComponentStorage.js.map +1 -0
- package/bin/ECS/Core/DirtyTrackingSystem.d.ts +197 -0
- package/bin/ECS/Core/DirtyTrackingSystem.d.ts.map +1 -0
- package/bin/ECS/Core/DirtyTrackingSystem.js +297 -0
- package/bin/ECS/Core/DirtyTrackingSystem.js.map +1 -0
- package/bin/ECS/Core/EntityManager.d.ts +379 -0
- package/bin/ECS/Core/EntityManager.d.ts.map +1 -0
- package/bin/ECS/Core/EntityManager.js +686 -0
- package/bin/ECS/Core/EntityManager.js.map +1 -0
- package/bin/ECS/Core/EventBus.d.ts +218 -0
- package/bin/ECS/Core/EventBus.d.ts.map +1 -0
- package/bin/ECS/Core/EventBus.js +402 -0
- package/bin/ECS/Core/EventBus.js.map +1 -0
- package/bin/ECS/Core/EventSystem.d.ts +237 -0
- package/bin/ECS/Core/EventSystem.d.ts.map +1 -0
- package/bin/ECS/Core/EventSystem.js +478 -0
- package/bin/ECS/Core/EventSystem.js.map +1 -0
- package/bin/ECS/Core/Events/index.d.ts +3 -0
- package/bin/ECS/Core/Events/index.d.ts.map +1 -0
- package/bin/ECS/Core/Events/index.js +3 -0
- package/bin/ECS/Core/Events/index.js.map +1 -0
- package/bin/ECS/Core/FluentAPI/ComponentBuilder.d.ts +35 -0
- package/bin/ECS/Core/FluentAPI/ComponentBuilder.d.ts.map +1 -0
- package/bin/ECS/Core/FluentAPI/ComponentBuilder.js +48 -0
- package/bin/ECS/Core/FluentAPI/ComponentBuilder.js.map +1 -0
- package/bin/ECS/Core/FluentAPI/ECSFluentAPI.d.ts +135 -0
- package/bin/ECS/Core/FluentAPI/ECSFluentAPI.d.ts.map +1 -0
- package/bin/ECS/Core/FluentAPI/ECSFluentAPI.js +166 -0
- package/bin/ECS/Core/FluentAPI/ECSFluentAPI.js.map +1 -0
- package/bin/ECS/Core/FluentAPI/EntityBatchOperator.d.ts +58 -0
- package/bin/ECS/Core/FluentAPI/EntityBatchOperator.d.ts.map +1 -0
- package/bin/ECS/Core/FluentAPI/EntityBatchOperator.js +85 -0
- package/bin/ECS/Core/FluentAPI/EntityBatchOperator.js.map +1 -0
- package/bin/ECS/Core/FluentAPI/EntityBuilder.d.ts +110 -0
- package/bin/ECS/Core/FluentAPI/EntityBuilder.d.ts.map +1 -0
- package/bin/ECS/Core/FluentAPI/EntityBuilder.js +174 -0
- package/bin/ECS/Core/FluentAPI/EntityBuilder.js.map +1 -0
- package/bin/ECS/Core/FluentAPI/SceneBuilder.d.ts +53 -0
- package/bin/ECS/Core/FluentAPI/SceneBuilder.d.ts.map +1 -0
- package/bin/ECS/Core/FluentAPI/SceneBuilder.js +79 -0
- package/bin/ECS/Core/FluentAPI/SceneBuilder.js.map +1 -0
- package/bin/ECS/Core/FluentAPI/index.d.ts +6 -0
- package/bin/ECS/Core/FluentAPI/index.d.ts.map +1 -0
- package/bin/ECS/Core/FluentAPI/index.js +6 -0
- package/bin/ECS/Core/FluentAPI/index.js.map +1 -0
- package/bin/ECS/Core/FluentAPI.d.ts +2 -0
- package/bin/ECS/Core/FluentAPI.d.ts.map +1 -0
- package/bin/ECS/Core/FluentAPI.js +3 -0
- package/bin/ECS/Core/FluentAPI.js.map +1 -0
- package/bin/ECS/Core/Performance/index.d.ts +4 -0
- package/bin/ECS/Core/Performance/index.d.ts.map +1 -0
- package/bin/ECS/Core/Performance/index.js +4 -0
- package/bin/ECS/Core/Performance/index.js.map +1 -0
- package/bin/ECS/Core/Query/index.d.ts +4 -0
- package/bin/ECS/Core/Query/index.d.ts.map +1 -0
- package/bin/ECS/Core/Query/index.js +4 -0
- package/bin/ECS/Core/Query/index.js.map +1 -0
- package/bin/ECS/Core/QuerySystem.d.ts +438 -0
- package/bin/ECS/Core/QuerySystem.d.ts.map +1 -0
- package/bin/ECS/Core/QuerySystem.js +974 -0
- package/bin/ECS/Core/QuerySystem.js.map +1 -0
- package/bin/ECS/Core/SoAStorage.d.ts +97 -0
- package/bin/ECS/Core/SoAStorage.d.ts.map +1 -0
- package/bin/ECS/Core/SoAStorage.js +548 -0
- package/bin/ECS/Core/SoAStorage.js.map +1 -0
- package/bin/ECS/Core/Storage/index.d.ts +4 -0
- package/bin/ECS/Core/Storage/index.d.ts.map +1 -0
- package/bin/ECS/Core/Storage/index.js +4 -0
- package/bin/ECS/Core/Storage/index.js.map +1 -0
- package/bin/ECS/CoreEvents.d.ts +131 -0
- package/bin/ECS/CoreEvents.d.ts.map +1 -0
- package/bin/ECS/CoreEvents.js +163 -0
- package/bin/ECS/CoreEvents.js.map +1 -0
- package/bin/ECS/Entity.d.ts +455 -0
- package/bin/ECS/Entity.d.ts.map +1 -0
- package/bin/ECS/Entity.js +837 -0
- package/bin/ECS/Entity.js.map +1 -0
- package/bin/ECS/Scene.d.ts +225 -0
- package/bin/ECS/Scene.d.ts.map +1 -0
- package/bin/ECS/Scene.js +325 -0
- package/bin/ECS/Scene.js.map +1 -0
- package/bin/ECS/Systems/EntitySystem.d.ts +200 -0
- package/bin/ECS/Systems/EntitySystem.d.ts.map +1 -0
- package/bin/ECS/Systems/EntitySystem.js +431 -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 +17 -0
- package/bin/ECS/Systems/PassiveSystem.d.ts.map +1 -0
- package/bin/ECS/Systems/PassiveSystem.js +19 -0
- package/bin/ECS/Systems/PassiveSystem.js.map +1 -0
- package/bin/ECS/Systems/ProcessingSystem.d.ts +21 -0
- package/bin/ECS/Systems/ProcessingSystem.d.ts.map +1 -0
- package/bin/ECS/Systems/ProcessingSystem.js +20 -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/Utils/BigIntCompatibility.d.ts +164 -0
- package/bin/ECS/Utils/BigIntCompatibility.d.ts.map +1 -0
- package/bin/ECS/Utils/BigIntCompatibility.js +578 -0
- package/bin/ECS/Utils/BigIntCompatibility.js.map +1 -0
- package/bin/ECS/Utils/Bits.d.ts +163 -0
- package/bin/ECS/Utils/Bits.d.ts.map +1 -0
- package/bin/ECS/Utils/Bits.js +286 -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 +262 -0
- package/bin/ECS/Utils/EntityList.js.map +1 -0
- package/bin/ECS/Utils/EntityProcessorList.d.ts +56 -0
- package/bin/ECS/Utils/EntityProcessorList.d.ts.map +1 -0
- package/bin/ECS/Utils/EntityProcessorList.js +102 -0
- package/bin/ECS/Utils/EntityProcessorList.js.map +1 -0
- package/bin/ECS/Utils/IdentifierPool.d.ts +203 -0
- package/bin/ECS/Utils/IdentifierPool.d.ts.map +1 -0
- package/bin/ECS/Utils/IdentifierPool.js +325 -0
- package/bin/ECS/Utils/IdentifierPool.js.map +1 -0
- package/bin/ECS/Utils/Matcher.d.ts +143 -0
- package/bin/ECS/Utils/Matcher.d.ts.map +1 -0
- package/bin/ECS/Utils/Matcher.js +249 -0
- package/bin/ECS/Utils/Matcher.js.map +1 -0
- package/bin/ECS/Utils/index.d.ts +8 -0
- package/bin/ECS/Utils/index.d.ts.map +1 -0
- package/bin/ECS/Utils/index.js +9 -0
- package/bin/ECS/Utils/index.js.map +1 -0
- package/bin/ECS/index.d.ts +12 -0
- package/bin/ECS/index.d.ts.map +1 -0
- package/bin/ECS/index.js +12 -0
- package/bin/ECS/index.js.map +1 -0
- package/bin/Types/index.d.ts +471 -0
- package/bin/Types/index.d.ts.map +1 -0
- package/bin/Types/index.js +5 -0
- package/bin/Types/index.js.map +1 -0
- package/bin/Utils/Debug/ComponentDataCollector.d.ts +28 -0
- package/bin/Utils/Debug/ComponentDataCollector.d.ts.map +1 -0
- package/bin/Utils/Debug/ComponentDataCollector.js +248 -0
- package/bin/Utils/Debug/ComponentDataCollector.js.map +1 -0
- package/bin/Utils/Debug/DebugDataFormatter.d.ts +22 -0
- package/bin/Utils/Debug/DebugDataFormatter.d.ts.map +1 -0
- package/bin/Utils/Debug/DebugDataFormatter.js +117 -0
- package/bin/Utils/Debug/DebugDataFormatter.js.map +1 -0
- package/bin/Utils/Debug/DebugManager.d.ts +104 -0
- package/bin/Utils/Debug/DebugManager.d.ts.map +1 -0
- package/bin/Utils/Debug/DebugManager.js +647 -0
- package/bin/Utils/Debug/DebugManager.js.map +1 -0
- package/bin/Utils/Debug/EntityDataCollector.d.ts +92 -0
- package/bin/Utils/Debug/EntityDataCollector.d.ts.map +1 -0
- package/bin/Utils/Debug/EntityDataCollector.js +864 -0
- package/bin/Utils/Debug/EntityDataCollector.js.map +1 -0
- package/bin/Utils/Debug/PerformanceDataCollector.d.ts +32 -0
- package/bin/Utils/Debug/PerformanceDataCollector.d.ts.map +1 -0
- package/bin/Utils/Debug/PerformanceDataCollector.js +217 -0
- package/bin/Utils/Debug/PerformanceDataCollector.js.map +1 -0
- package/bin/Utils/Debug/SceneDataCollector.d.ts +16 -0
- package/bin/Utils/Debug/SceneDataCollector.d.ts.map +1 -0
- package/bin/Utils/Debug/SceneDataCollector.js +46 -0
- package/bin/Utils/Debug/SceneDataCollector.js.map +1 -0
- package/bin/Utils/Debug/SystemDataCollector.d.ts +11 -0
- package/bin/Utils/Debug/SystemDataCollector.d.ts.map +1 -0
- package/bin/Utils/Debug/SystemDataCollector.js +59 -0
- package/bin/Utils/Debug/SystemDataCollector.js.map +1 -0
- package/bin/Utils/Debug/WebSocketManager.d.ts +59 -0
- package/bin/Utils/Debug/WebSocketManager.d.ts.map +1 -0
- package/bin/Utils/Debug/WebSocketManager.js +148 -0
- package/bin/Utils/Debug/WebSocketManager.js.map +1 -0
- package/bin/Utils/Debug/index.d.ts +8 -0
- package/bin/Utils/Debug/index.d.ts.map +1 -0
- package/bin/Utils/Debug/index.js +8 -0
- package/bin/Utils/Debug/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/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 +3 -0
- package/bin/Utils/Extensions/index.d.ts.map +1 -0
- package/bin/Utils/Extensions/index.js +4 -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/Logger.d.ts +156 -0
- package/bin/Utils/Logger.d.ts.map +1 -0
- package/bin/Utils/Logger.js +256 -0
- package/bin/Utils/Logger.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/IPoolable.d.ts +29 -0
- package/bin/Utils/Pool/IPoolable.d.ts.map +1 -0
- package/bin/Utils/Pool/IPoolable.js +2 -0
- package/bin/Utils/Pool/IPoolable.js.map +1 -0
- package/bin/Utils/Pool/Pool.d.ts +109 -0
- package/bin/Utils/Pool/Pool.d.ts.map +1 -0
- package/bin/Utils/Pool/Pool.js +238 -0
- package/bin/Utils/Pool/Pool.js.map +1 -0
- package/bin/Utils/Pool/PoolManager.d.ts +91 -0
- package/bin/Utils/Pool/PoolManager.d.ts.map +1 -0
- package/bin/Utils/Pool/PoolManager.js +197 -0
- package/bin/Utils/Pool/PoolManager.js.map +1 -0
- package/bin/Utils/Pool/index.d.ts +4 -0
- package/bin/Utils/Pool/index.d.ts.map +1 -0
- package/bin/Utils/Pool/index.js +4 -0
- package/bin/Utils/Pool/index.js.map +1 -0
- package/bin/Utils/Time.d.ts +47 -0
- package/bin/Utils/Time.d.ts.map +1 -0
- package/bin/Utils/Time.js +64 -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 +30 -0
- package/bin/Utils/Timers/Timer.d.ts.map +1 -0
- package/bin/Utils/Timers/Timer.js +58 -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 +9 -0
- package/bin/Utils/index.d.ts.map +1 -0
- package/bin/Utils/index.js +9 -0
- package/bin/Utils/index.js.map +1 -0
- package/bin/index.d.ts +16 -0
- package/bin/index.d.ts.map +1 -0
- package/bin/index.js +19 -0
- package/bin/index.js.map +1 -0
- package/package.json +52 -25
- package/.npmignore +0 -40
- package/LICENSE +0 -201
- package/README.md +0 -438
- package/SECURITY.md +0 -53
- package/index.cjs +0 -2
- package/index.cjs.map +0 -1
- package/index.d.ts +0 -6383
- package/index.mjs +0 -2
- package/index.mjs.map +0 -1
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Entity } from '../../Entity';
|
|
2
|
+
import { Component } from '../../Component';
|
|
3
|
+
import { Scene } from '../../Scene';
|
|
4
|
+
import { ComponentType } from '../ComponentStorage';
|
|
5
|
+
import { QuerySystem, QueryBuilder } from '../QuerySystem';
|
|
6
|
+
import { TypeSafeEventSystem } from '../EventSystem';
|
|
7
|
+
import { EntityBuilder } from './EntityBuilder';
|
|
8
|
+
import { SceneBuilder } from './SceneBuilder';
|
|
9
|
+
import { ComponentBuilder } from './ComponentBuilder';
|
|
10
|
+
import { EntityBatchOperator } from './EntityBatchOperator';
|
|
11
|
+
/**
|
|
12
|
+
* ECS流式API主入口
|
|
13
|
+
* 提供统一的流式接口
|
|
14
|
+
*/
|
|
15
|
+
export declare class ECSFluentAPI {
|
|
16
|
+
private scene;
|
|
17
|
+
private querySystem;
|
|
18
|
+
private eventSystem;
|
|
19
|
+
constructor(scene: Scene, querySystem: QuerySystem, eventSystem: TypeSafeEventSystem);
|
|
20
|
+
/**
|
|
21
|
+
* 创建实体构建器
|
|
22
|
+
* @returns 实体构建器
|
|
23
|
+
*/
|
|
24
|
+
createEntity(): EntityBuilder;
|
|
25
|
+
/**
|
|
26
|
+
* 创建场景构建器
|
|
27
|
+
* @returns 场景构建器
|
|
28
|
+
*/
|
|
29
|
+
createScene(): SceneBuilder;
|
|
30
|
+
/**
|
|
31
|
+
* 创建组件构建器
|
|
32
|
+
* @param componentClass 组件类
|
|
33
|
+
* @param args 构造参数
|
|
34
|
+
* @returns 组件构建器
|
|
35
|
+
*/
|
|
36
|
+
createComponent<T extends Component>(componentClass: new (...args: unknown[]) => T, ...args: unknown[]): ComponentBuilder<T>;
|
|
37
|
+
/**
|
|
38
|
+
* 创建查询构建器
|
|
39
|
+
* @returns 查询构建器
|
|
40
|
+
*/
|
|
41
|
+
query(): QueryBuilder;
|
|
42
|
+
/**
|
|
43
|
+
* 查找实体(简化版)
|
|
44
|
+
* @param componentTypes 组件类型
|
|
45
|
+
* @returns 实体数组
|
|
46
|
+
*/
|
|
47
|
+
find(...componentTypes: ComponentType[]): Entity[];
|
|
48
|
+
/**
|
|
49
|
+
* 查找第一个匹配的实体
|
|
50
|
+
* @param componentTypes 组件类型
|
|
51
|
+
* @returns 实体或null
|
|
52
|
+
*/
|
|
53
|
+
findFirst(...componentTypes: ComponentType[]): Entity | null;
|
|
54
|
+
/**
|
|
55
|
+
* 按名称查找实体
|
|
56
|
+
* @param name 实体名称
|
|
57
|
+
* @returns 实体或null
|
|
58
|
+
*/
|
|
59
|
+
findByName(name: string): Entity | null;
|
|
60
|
+
/**
|
|
61
|
+
* 按标签查找实体
|
|
62
|
+
* @param tag 标签
|
|
63
|
+
* @returns 实体数组
|
|
64
|
+
*/
|
|
65
|
+
findByTag(tag: number): Entity[];
|
|
66
|
+
/**
|
|
67
|
+
* 触发事件
|
|
68
|
+
* @param eventType 事件类型
|
|
69
|
+
* @param event 事件数据
|
|
70
|
+
*/
|
|
71
|
+
emit<T>(eventType: string, event: T): void;
|
|
72
|
+
/**
|
|
73
|
+
* 异步触发事件
|
|
74
|
+
* @param eventType 事件类型
|
|
75
|
+
* @param event 事件数据
|
|
76
|
+
*/
|
|
77
|
+
emitAsync<T>(eventType: string, event: T): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* 监听事件
|
|
80
|
+
* @param eventType 事件类型
|
|
81
|
+
* @param handler 事件处理器
|
|
82
|
+
* @returns 监听器ID
|
|
83
|
+
*/
|
|
84
|
+
on<T>(eventType: string, handler: (event: T) => void): string;
|
|
85
|
+
/**
|
|
86
|
+
* 一次性监听事件
|
|
87
|
+
* @param eventType 事件类型
|
|
88
|
+
* @param handler 事件处理器
|
|
89
|
+
* @returns 监听器ID
|
|
90
|
+
*/
|
|
91
|
+
once<T>(eventType: string, handler: (event: T) => void): string;
|
|
92
|
+
/**
|
|
93
|
+
* 移除事件监听器
|
|
94
|
+
* @param eventType 事件类型
|
|
95
|
+
* @param listenerId 监听器ID
|
|
96
|
+
*/
|
|
97
|
+
off(eventType: string, listenerId: string): void;
|
|
98
|
+
/**
|
|
99
|
+
* 批量操作实体
|
|
100
|
+
* @param entities 实体数组
|
|
101
|
+
* @returns 批量操作器
|
|
102
|
+
*/
|
|
103
|
+
batch(entities: Entity[]): EntityBatchOperator;
|
|
104
|
+
/**
|
|
105
|
+
* 获取场景统计信息
|
|
106
|
+
* @returns 统计信息
|
|
107
|
+
*/
|
|
108
|
+
getStats(): {
|
|
109
|
+
entityCount: number;
|
|
110
|
+
systemCount: number;
|
|
111
|
+
componentStats: Map<string, any>;
|
|
112
|
+
queryStats: unknown;
|
|
113
|
+
eventStats: Map<string, any>;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* 创建ECS流式API实例
|
|
118
|
+
* @param scene 场景
|
|
119
|
+
* @param querySystem 查询系统
|
|
120
|
+
* @param eventSystem 事件系统
|
|
121
|
+
* @returns ECS流式API实例
|
|
122
|
+
*/
|
|
123
|
+
export declare function createECSAPI(scene: Scene, querySystem: QuerySystem, eventSystem: TypeSafeEventSystem): ECSFluentAPI;
|
|
124
|
+
/**
|
|
125
|
+
* 全局ECS流式API实例(需要在使用前初始化)
|
|
126
|
+
*/
|
|
127
|
+
export declare let ECS: ECSFluentAPI;
|
|
128
|
+
/**
|
|
129
|
+
* 初始化全局ECS API
|
|
130
|
+
* @param scene 场景
|
|
131
|
+
* @param querySystem 查询系统
|
|
132
|
+
* @param eventSystem 事件系统
|
|
133
|
+
*/
|
|
134
|
+
export declare function initializeECS(scene: Scene, querySystem: QuerySystem, eventSystem: TypeSafeEventSystem): void;
|
|
135
|
+
//# sourceMappingURL=ECSFluentAPI.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ECSFluentAPI.d.ts","sourceRoot":"","sources":["../../../../src/ECS/Core/FluentAPI/ECSFluentAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { QueryBuilder } from '../QuerySystem';
|
|
2
|
+
import { EntityBuilder } from './EntityBuilder';
|
|
3
|
+
import { SceneBuilder } from './SceneBuilder';
|
|
4
|
+
import { ComponentBuilder } from './ComponentBuilder';
|
|
5
|
+
import { EntityBatchOperator } from './EntityBatchOperator';
|
|
6
|
+
/**
|
|
7
|
+
* ECS流式API主入口
|
|
8
|
+
* 提供统一的流式接口
|
|
9
|
+
*/
|
|
10
|
+
export class ECSFluentAPI {
|
|
11
|
+
constructor(scene, querySystem, eventSystem) {
|
|
12
|
+
this.scene = scene;
|
|
13
|
+
this.querySystem = querySystem;
|
|
14
|
+
this.eventSystem = eventSystem;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 创建实体构建器
|
|
18
|
+
* @returns 实体构建器
|
|
19
|
+
*/
|
|
20
|
+
createEntity() {
|
|
21
|
+
return new EntityBuilder(this.scene, this.scene.componentStorageManager);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 创建场景构建器
|
|
25
|
+
* @returns 场景构建器
|
|
26
|
+
*/
|
|
27
|
+
createScene() {
|
|
28
|
+
return new SceneBuilder();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 创建组件构建器
|
|
32
|
+
* @param componentClass 组件类
|
|
33
|
+
* @param args 构造参数
|
|
34
|
+
* @returns 组件构建器
|
|
35
|
+
*/
|
|
36
|
+
createComponent(componentClass, ...args) {
|
|
37
|
+
return new ComponentBuilder(componentClass, ...args);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 创建查询构建器
|
|
41
|
+
* @returns 查询构建器
|
|
42
|
+
*/
|
|
43
|
+
query() {
|
|
44
|
+
return new QueryBuilder(this.querySystem);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 查找实体(简化版)
|
|
48
|
+
* @param componentTypes 组件类型
|
|
49
|
+
* @returns 实体数组
|
|
50
|
+
*/
|
|
51
|
+
find(...componentTypes) {
|
|
52
|
+
return this.querySystem.queryAll(...componentTypes).entities;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 查找第一个匹配的实体
|
|
56
|
+
* @param componentTypes 组件类型
|
|
57
|
+
* @returns 实体或null
|
|
58
|
+
*/
|
|
59
|
+
findFirst(...componentTypes) {
|
|
60
|
+
const result = this.querySystem.queryAll(...componentTypes);
|
|
61
|
+
return result.entities.length > 0 ? result.entities[0] : null;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 按名称查找实体
|
|
65
|
+
* @param name 实体名称
|
|
66
|
+
* @returns 实体或null
|
|
67
|
+
*/
|
|
68
|
+
findByName(name) {
|
|
69
|
+
return this.scene.getEntityByName(name);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 按标签查找实体
|
|
73
|
+
* @param tag 标签
|
|
74
|
+
* @returns 实体数组
|
|
75
|
+
*/
|
|
76
|
+
findByTag(tag) {
|
|
77
|
+
return this.scene.getEntitiesByTag(tag);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 触发事件
|
|
81
|
+
* @param eventType 事件类型
|
|
82
|
+
* @param event 事件数据
|
|
83
|
+
*/
|
|
84
|
+
emit(eventType, event) {
|
|
85
|
+
this.eventSystem.emitSync(eventType, event);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* 异步触发事件
|
|
89
|
+
* @param eventType 事件类型
|
|
90
|
+
* @param event 事件数据
|
|
91
|
+
*/
|
|
92
|
+
async emitAsync(eventType, event) {
|
|
93
|
+
await this.eventSystem.emit(eventType, event);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* 监听事件
|
|
97
|
+
* @param eventType 事件类型
|
|
98
|
+
* @param handler 事件处理器
|
|
99
|
+
* @returns 监听器ID
|
|
100
|
+
*/
|
|
101
|
+
on(eventType, handler) {
|
|
102
|
+
return this.eventSystem.on(eventType, handler);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* 一次性监听事件
|
|
106
|
+
* @param eventType 事件类型
|
|
107
|
+
* @param handler 事件处理器
|
|
108
|
+
* @returns 监听器ID
|
|
109
|
+
*/
|
|
110
|
+
once(eventType, handler) {
|
|
111
|
+
return this.eventSystem.once(eventType, handler);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* 移除事件监听器
|
|
115
|
+
* @param eventType 事件类型
|
|
116
|
+
* @param listenerId 监听器ID
|
|
117
|
+
*/
|
|
118
|
+
off(eventType, listenerId) {
|
|
119
|
+
this.eventSystem.off(eventType, listenerId);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* 批量操作实体
|
|
123
|
+
* @param entities 实体数组
|
|
124
|
+
* @returns 批量操作器
|
|
125
|
+
*/
|
|
126
|
+
batch(entities) {
|
|
127
|
+
return new EntityBatchOperator(entities);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* 获取场景统计信息
|
|
131
|
+
* @returns 统计信息
|
|
132
|
+
*/
|
|
133
|
+
getStats() {
|
|
134
|
+
return {
|
|
135
|
+
entityCount: this.scene.entities.count,
|
|
136
|
+
systemCount: this.scene.systems.length,
|
|
137
|
+
componentStats: this.scene.componentStorageManager.getAllStats(),
|
|
138
|
+
queryStats: this.querySystem.getStats(),
|
|
139
|
+
eventStats: this.eventSystem.getStats()
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* 创建ECS流式API实例
|
|
145
|
+
* @param scene 场景
|
|
146
|
+
* @param querySystem 查询系统
|
|
147
|
+
* @param eventSystem 事件系统
|
|
148
|
+
* @returns ECS流式API实例
|
|
149
|
+
*/
|
|
150
|
+
export function createECSAPI(scene, querySystem, eventSystem) {
|
|
151
|
+
return new ECSFluentAPI(scene, querySystem, eventSystem);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* 全局ECS流式API实例(需要在使用前初始化)
|
|
155
|
+
*/
|
|
156
|
+
export let ECS;
|
|
157
|
+
/**
|
|
158
|
+
* 初始化全局ECS API
|
|
159
|
+
* @param scene 场景
|
|
160
|
+
* @param querySystem 查询系统
|
|
161
|
+
* @param eventSystem 事件系统
|
|
162
|
+
*/
|
|
163
|
+
export function initializeECS(scene, querySystem, eventSystem) {
|
|
164
|
+
ECS = createECSAPI(scene, querySystem, eventSystem);
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=ECSFluentAPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ECSFluentAPI.js","sourceRoot":"","sources":["../../../../src/ECS/Core/FluentAPI/ECSFluentAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Entity } from '../../Entity';
|
|
2
|
+
import { Component } from '../../Component';
|
|
3
|
+
import { ComponentType } from '../ComponentStorage';
|
|
4
|
+
/**
|
|
5
|
+
* 实体批量操作器
|
|
6
|
+
* 提供对多个实体的批量操作
|
|
7
|
+
*/
|
|
8
|
+
export declare class EntityBatchOperator {
|
|
9
|
+
private entities;
|
|
10
|
+
constructor(entities: Entity[]);
|
|
11
|
+
/**
|
|
12
|
+
* 批量添加组件
|
|
13
|
+
* @param component 组件实例
|
|
14
|
+
* @returns 批量操作器
|
|
15
|
+
*/
|
|
16
|
+
addComponent<T extends Component>(component: T): EntityBatchOperator;
|
|
17
|
+
/**
|
|
18
|
+
* 批量移除组件
|
|
19
|
+
* @param componentType 组件类型
|
|
20
|
+
* @returns 批量操作器
|
|
21
|
+
*/
|
|
22
|
+
removeComponent<T extends Component>(componentType: ComponentType<T>): EntityBatchOperator;
|
|
23
|
+
/**
|
|
24
|
+
* 批量设置活跃状态
|
|
25
|
+
* @param active 是否活跃
|
|
26
|
+
* @returns 批量操作器
|
|
27
|
+
*/
|
|
28
|
+
setActive(active: boolean): EntityBatchOperator;
|
|
29
|
+
/**
|
|
30
|
+
* 批量设置标签
|
|
31
|
+
* @param tag 标签
|
|
32
|
+
* @returns 批量操作器
|
|
33
|
+
*/
|
|
34
|
+
setTag(tag: number): EntityBatchOperator;
|
|
35
|
+
/**
|
|
36
|
+
* 批量执行操作
|
|
37
|
+
* @param operation 操作函数
|
|
38
|
+
* @returns 批量操作器
|
|
39
|
+
*/
|
|
40
|
+
forEach(operation: (entity: Entity, index: number) => void): EntityBatchOperator;
|
|
41
|
+
/**
|
|
42
|
+
* 过滤实体
|
|
43
|
+
* @param predicate 过滤条件
|
|
44
|
+
* @returns 新的批量操作器
|
|
45
|
+
*/
|
|
46
|
+
filter(predicate: (entity: Entity) => boolean): EntityBatchOperator;
|
|
47
|
+
/**
|
|
48
|
+
* 获取实体数组
|
|
49
|
+
* @returns 实体数组
|
|
50
|
+
*/
|
|
51
|
+
toArray(): Entity[];
|
|
52
|
+
/**
|
|
53
|
+
* 获取实体数量
|
|
54
|
+
* @returns 实体数量
|
|
55
|
+
*/
|
|
56
|
+
count(): number;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=EntityBatchOperator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityBatchOperator.d.ts","sourceRoot":"","sources":["../../../../src/ECS/Core/FluentAPI/EntityBatchOperator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;GAGG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,QAAQ,CAAW;gBAEf,QAAQ,EAAE,MAAM,EAAE;IAI9B;;;;OAIG;IACI,YAAY,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,mBAAmB;IAO3E;;;;OAIG;IACI,eAAe,CAAC,CAAC,SAAS,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,mBAAmB;IAOjG;;;;OAIG;IACI,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,mBAAmB;IAOtD;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB;IAO/C;;;;OAIG;IACI,OAAO,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,mBAAmB;IAKvF;;;;OAIG;IACI,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,GAAG,mBAAmB;IAI1E;;;OAGG;IACI,OAAO,IAAI,MAAM,EAAE;IAI1B;;;OAGG;IACI,KAAK,IAAI,MAAM;CAGzB"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 实体批量操作器
|
|
3
|
+
* 提供对多个实体的批量操作
|
|
4
|
+
*/
|
|
5
|
+
export class EntityBatchOperator {
|
|
6
|
+
constructor(entities) {
|
|
7
|
+
this.entities = entities;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 批量添加组件
|
|
11
|
+
* @param component 组件实例
|
|
12
|
+
* @returns 批量操作器
|
|
13
|
+
*/
|
|
14
|
+
addComponent(component) {
|
|
15
|
+
for (const entity of this.entities) {
|
|
16
|
+
entity.addComponent(component);
|
|
17
|
+
}
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 批量移除组件
|
|
22
|
+
* @param componentType 组件类型
|
|
23
|
+
* @returns 批量操作器
|
|
24
|
+
*/
|
|
25
|
+
removeComponent(componentType) {
|
|
26
|
+
for (const entity of this.entities) {
|
|
27
|
+
entity.removeComponentByType(componentType);
|
|
28
|
+
}
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 批量设置活跃状态
|
|
33
|
+
* @param active 是否活跃
|
|
34
|
+
* @returns 批量操作器
|
|
35
|
+
*/
|
|
36
|
+
setActive(active) {
|
|
37
|
+
for (const entity of this.entities) {
|
|
38
|
+
entity.active = active;
|
|
39
|
+
}
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 批量设置标签
|
|
44
|
+
* @param tag 标签
|
|
45
|
+
* @returns 批量操作器
|
|
46
|
+
*/
|
|
47
|
+
setTag(tag) {
|
|
48
|
+
for (const entity of this.entities) {
|
|
49
|
+
entity.tag = tag;
|
|
50
|
+
}
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 批量执行操作
|
|
55
|
+
* @param operation 操作函数
|
|
56
|
+
* @returns 批量操作器
|
|
57
|
+
*/
|
|
58
|
+
forEach(operation) {
|
|
59
|
+
this.entities.forEach(operation);
|
|
60
|
+
return this;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 过滤实体
|
|
64
|
+
* @param predicate 过滤条件
|
|
65
|
+
* @returns 新的批量操作器
|
|
66
|
+
*/
|
|
67
|
+
filter(predicate) {
|
|
68
|
+
return new EntityBatchOperator(this.entities.filter(predicate));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 获取实体数组
|
|
72
|
+
* @returns 实体数组
|
|
73
|
+
*/
|
|
74
|
+
toArray() {
|
|
75
|
+
return this.entities.slice();
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* 获取实体数量
|
|
79
|
+
* @returns 实体数量
|
|
80
|
+
*/
|
|
81
|
+
count() {
|
|
82
|
+
return this.entities.length;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=EntityBatchOperator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityBatchOperator.js","sourceRoot":"","sources":["../../../../src/ECS/Core/FluentAPI/EntityBatchOperator.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IAG5B,YAAY,QAAkB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAsB,SAAY;QACjD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACI,eAAe,CAAsB,aAA+B;QACvE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,MAAe;QAC5B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,GAAW;QACrB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,SAAkD;QAC7D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,SAAsC;QAChD,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IACpE,CAAC;IAED;;;OAGG;IACI,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED;;;OAGG;IACI,KAAK;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAChC,CAAC;CACJ"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { Entity } from '../../Entity';
|
|
2
|
+
import { Component } from '../../Component';
|
|
3
|
+
import { Scene } from '../../Scene';
|
|
4
|
+
import { ComponentType, ComponentStorageManager } from '../ComponentStorage';
|
|
5
|
+
/**
|
|
6
|
+
* 实体构建器 - 提供流式API创建和配置实体
|
|
7
|
+
*/
|
|
8
|
+
export declare class EntityBuilder {
|
|
9
|
+
private entity;
|
|
10
|
+
private scene;
|
|
11
|
+
private storageManager;
|
|
12
|
+
constructor(scene: Scene, storageManager: ComponentStorageManager);
|
|
13
|
+
/**
|
|
14
|
+
* 设置实体名称
|
|
15
|
+
* @param name 实体名称
|
|
16
|
+
* @returns 实体构建器
|
|
17
|
+
*/
|
|
18
|
+
named(name: string): EntityBuilder;
|
|
19
|
+
/**
|
|
20
|
+
* 设置实体标签
|
|
21
|
+
* @param tag 标签
|
|
22
|
+
* @returns 实体构建器
|
|
23
|
+
*/
|
|
24
|
+
tagged(tag: number): EntityBuilder;
|
|
25
|
+
/**
|
|
26
|
+
* 添加组件
|
|
27
|
+
* @param component 组件实例
|
|
28
|
+
* @returns 实体构建器
|
|
29
|
+
*/
|
|
30
|
+
with<T extends Component>(component: T): EntityBuilder;
|
|
31
|
+
/**
|
|
32
|
+
* 添加多个组件
|
|
33
|
+
* @param components 组件数组
|
|
34
|
+
* @returns 实体构建器
|
|
35
|
+
*/
|
|
36
|
+
withComponents(...components: Component[]): EntityBuilder;
|
|
37
|
+
/**
|
|
38
|
+
* 条件性添加组件
|
|
39
|
+
* @param condition 条件
|
|
40
|
+
* @param component 组件实例
|
|
41
|
+
* @returns 实体构建器
|
|
42
|
+
*/
|
|
43
|
+
withIf<T extends Component>(condition: boolean, component: T): EntityBuilder;
|
|
44
|
+
/**
|
|
45
|
+
* 使用工厂函数创建并添加组件
|
|
46
|
+
* @param factory 组件工厂函数
|
|
47
|
+
* @returns 实体构建器
|
|
48
|
+
*/
|
|
49
|
+
withFactory<T extends Component>(factory: () => T): EntityBuilder;
|
|
50
|
+
/**
|
|
51
|
+
* 配置组件属性
|
|
52
|
+
* @param componentType 组件类型
|
|
53
|
+
* @param configurator 配置函数
|
|
54
|
+
* @returns 实体构建器
|
|
55
|
+
*/
|
|
56
|
+
configure<T extends Component>(componentType: ComponentType<T>, configurator: (component: T) => void): EntityBuilder;
|
|
57
|
+
/**
|
|
58
|
+
* 设置实体为启用状态
|
|
59
|
+
* @param enabled 是否启用
|
|
60
|
+
* @returns 实体构建器
|
|
61
|
+
*/
|
|
62
|
+
enabled(enabled?: boolean): EntityBuilder;
|
|
63
|
+
/**
|
|
64
|
+
* 设置实体为活跃状态
|
|
65
|
+
* @param active 是否活跃
|
|
66
|
+
* @returns 实体构建器
|
|
67
|
+
*/
|
|
68
|
+
active(active?: boolean): EntityBuilder;
|
|
69
|
+
/**
|
|
70
|
+
* 添加子实体
|
|
71
|
+
* @param childBuilder 子实体构建器
|
|
72
|
+
* @returns 实体构建器
|
|
73
|
+
*/
|
|
74
|
+
withChild(childBuilder: EntityBuilder): EntityBuilder;
|
|
75
|
+
/**
|
|
76
|
+
* 批量添加子实体
|
|
77
|
+
* @param childBuilders 子实体构建器数组
|
|
78
|
+
* @returns 实体构建器
|
|
79
|
+
*/
|
|
80
|
+
withChildren(...childBuilders: EntityBuilder[]): EntityBuilder;
|
|
81
|
+
/**
|
|
82
|
+
* 使用工厂函数创建子实体
|
|
83
|
+
* @param childFactory 子实体工厂函数
|
|
84
|
+
* @returns 实体构建器
|
|
85
|
+
*/
|
|
86
|
+
withChildFactory(childFactory: (parent: Entity) => EntityBuilder): EntityBuilder;
|
|
87
|
+
/**
|
|
88
|
+
* 条件性添加子实体
|
|
89
|
+
* @param condition 条件
|
|
90
|
+
* @param childBuilder 子实体构建器
|
|
91
|
+
* @returns 实体构建器
|
|
92
|
+
*/
|
|
93
|
+
withChildIf(condition: boolean, childBuilder: EntityBuilder): EntityBuilder;
|
|
94
|
+
/**
|
|
95
|
+
* 构建并返回实体
|
|
96
|
+
* @returns 构建的实体
|
|
97
|
+
*/
|
|
98
|
+
build(): Entity;
|
|
99
|
+
/**
|
|
100
|
+
* 构建实体并添加到场景
|
|
101
|
+
* @returns 构建的实体
|
|
102
|
+
*/
|
|
103
|
+
spawn(): Entity;
|
|
104
|
+
/**
|
|
105
|
+
* 克隆当前构建器
|
|
106
|
+
* @returns 新的实体构建器
|
|
107
|
+
*/
|
|
108
|
+
clone(): EntityBuilder;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=EntityBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityBuilder.d.ts","sourceRoot":"","sources":["../../../../src/ECS/Core/FluentAPI/EntityBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE7E;;GAEG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,cAAc,CAA0B;gBAEpC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,uBAAuB;IAMjE;;;;OAIG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAKzC;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa;IAKzC;;;;OAIG;IACI,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,aAAa;IAK7D;;;;OAIG;IACI,cAAc,CAAC,GAAG,UAAU,EAAE,SAAS,EAAE,GAAG,aAAa;IAOhE;;;;;OAKG;IACI,MAAM,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,aAAa;IAOnF;;;;OAIG;IACI,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,aAAa;IAMxE;;;;;OAKG;IACI,SAAS,CAAC,CAAC,SAAS,SAAS,EAChC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAC/B,YAAY,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,IAAI,GACrC,aAAa;IAQhB;;;;OAIG;IACI,OAAO,CAAC,OAAO,GAAE,OAAc,GAAG,aAAa;IAKtD;;;;OAIG;IACI,MAAM,CAAC,MAAM,GAAE,OAAc,GAAG,aAAa;IAKpD;;;;OAIG;IACI,SAAS,CAAC,YAAY,EAAE,aAAa,GAAG,aAAa;IAM5D;;;;OAIG;IACI,YAAY,CAAC,GAAG,aAAa,EAAE,aAAa,EAAE,GAAG,aAAa;IAQrE;;;;OAIG;IACI,gBAAgB,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,GAAG,aAAa;IAOvF;;;;;OAKG;IACI,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,GAAG,aAAa;IAQlF;;;OAGG;IACI,KAAK,IAAI,MAAM;IAItB;;;OAGG;IACI,KAAK,IAAI,MAAM;IAKtB;;;OAGG;IACI,KAAK,IAAI,aAAa;CAMhC"}
|