@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
|
@@ -0,0 +1,574 @@
|
|
|
1
|
+
import { Entity } from '../Entity';
|
|
2
|
+
import { Component } from '../Component';
|
|
3
|
+
import { ComponentType } from './ComponentStorage';
|
|
4
|
+
/**
|
|
5
|
+
* 查询条件类型
|
|
6
|
+
*/
|
|
7
|
+
export declare enum QueryConditionType {
|
|
8
|
+
/** 必须包含所有指定组件 */
|
|
9
|
+
ALL = "all",
|
|
10
|
+
/** 必须包含任意一个指定组件 */
|
|
11
|
+
ANY = "any",
|
|
12
|
+
/** 不能包含任何指定组件 */
|
|
13
|
+
NONE = "none"
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* 查询条件
|
|
17
|
+
*/
|
|
18
|
+
export interface QueryCondition {
|
|
19
|
+
type: QueryConditionType;
|
|
20
|
+
componentTypes: ComponentType[];
|
|
21
|
+
mask: bigint;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 组件元组类型
|
|
25
|
+
*/
|
|
26
|
+
export type ComponentTuple<T extends readonly ComponentType[]> = {
|
|
27
|
+
[K in keyof T]: T[K] extends ComponentType<infer C> ? C : never;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* 类型安全的查询结果
|
|
31
|
+
*/
|
|
32
|
+
export interface TypedQueryResult<T extends readonly ComponentType[]> {
|
|
33
|
+
entities: Entity[];
|
|
34
|
+
components: ComponentTuple<T>[];
|
|
35
|
+
count: number;
|
|
36
|
+
executionTime: number;
|
|
37
|
+
fromCache: boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 实体和组件的配对结果
|
|
41
|
+
*/
|
|
42
|
+
export interface EntityComponentPair<T extends readonly ComponentType[]> {
|
|
43
|
+
entity: Entity;
|
|
44
|
+
components: ComponentTuple<T>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 实体查询结果
|
|
48
|
+
*/
|
|
49
|
+
export interface QueryResult {
|
|
50
|
+
entities: Entity[];
|
|
51
|
+
count: number;
|
|
52
|
+
/** 查询执行时间(毫秒) */
|
|
53
|
+
executionTime: number;
|
|
54
|
+
/** 是否来自缓存 */
|
|
55
|
+
fromCache: boolean;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 查询性能统计
|
|
59
|
+
*/
|
|
60
|
+
interface QueryPerformanceStats {
|
|
61
|
+
totalQueries: number;
|
|
62
|
+
averageExecutionTime: number;
|
|
63
|
+
cacheHitRate: number;
|
|
64
|
+
indexHitRate: number;
|
|
65
|
+
slowQueries: Array<{
|
|
66
|
+
query: string;
|
|
67
|
+
executionTime: number;
|
|
68
|
+
timestamp: number;
|
|
69
|
+
}>;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 高性能实体查询系统
|
|
73
|
+
* 使用位掩码进行快速组件匹配,支持多级索引和智能缓存
|
|
74
|
+
*/
|
|
75
|
+
export declare class QuerySystem {
|
|
76
|
+
private entities;
|
|
77
|
+
private queryCache;
|
|
78
|
+
private cacheTimeout;
|
|
79
|
+
private maxCacheSize;
|
|
80
|
+
private cacheHits;
|
|
81
|
+
private cacheMisses;
|
|
82
|
+
private entityIndex;
|
|
83
|
+
private performanceStats;
|
|
84
|
+
private indexDirty;
|
|
85
|
+
private lastIndexUpdate;
|
|
86
|
+
private indexUpdateThreshold;
|
|
87
|
+
private pendingEntityAdds;
|
|
88
|
+
private pendingEntityRemoves;
|
|
89
|
+
private batchUpdateScheduled;
|
|
90
|
+
/**
|
|
91
|
+
* 设置实体列表
|
|
92
|
+
* @param entities 实体数组
|
|
93
|
+
*/
|
|
94
|
+
setEntities(entities: Entity[]): void;
|
|
95
|
+
/**
|
|
96
|
+
* 添加实体
|
|
97
|
+
* @param entity 实体
|
|
98
|
+
*/
|
|
99
|
+
addEntity(entity: Entity): void;
|
|
100
|
+
/**
|
|
101
|
+
* 批量添加实体
|
|
102
|
+
* @param entities 实体数组
|
|
103
|
+
*/
|
|
104
|
+
addEntities(entities: Entity[]): void;
|
|
105
|
+
/**
|
|
106
|
+
* 移除实体
|
|
107
|
+
* @param entity 实体
|
|
108
|
+
*/
|
|
109
|
+
removeEntity(entity: Entity): void;
|
|
110
|
+
/**
|
|
111
|
+
* 批量移除实体
|
|
112
|
+
* @param entities 实体数组
|
|
113
|
+
*/
|
|
114
|
+
removeEntities(entities: Entity[]): void;
|
|
115
|
+
/**
|
|
116
|
+
* 调度批量更新
|
|
117
|
+
*/
|
|
118
|
+
private scheduleBatchUpdate;
|
|
119
|
+
/**
|
|
120
|
+
* 处理批量更新
|
|
121
|
+
*/
|
|
122
|
+
private processBatchUpdates;
|
|
123
|
+
/**
|
|
124
|
+
* 强制立即处理所有待处理的更新
|
|
125
|
+
*/
|
|
126
|
+
flushUpdates(): void;
|
|
127
|
+
/**
|
|
128
|
+
* 无效化所有索引
|
|
129
|
+
*/
|
|
130
|
+
private invalidateIndexes;
|
|
131
|
+
/**
|
|
132
|
+
* 将实体添加到索引
|
|
133
|
+
* @param entity 实体
|
|
134
|
+
*/
|
|
135
|
+
private addEntityToIndexes;
|
|
136
|
+
/**
|
|
137
|
+
* 从索引中移除实体
|
|
138
|
+
* @param entity 实体
|
|
139
|
+
*/
|
|
140
|
+
private removeEntityFromIndexes;
|
|
141
|
+
/**
|
|
142
|
+
* 重建所有索引
|
|
143
|
+
*/
|
|
144
|
+
private rebuildIndexes;
|
|
145
|
+
/**
|
|
146
|
+
* 确保索引是最新的
|
|
147
|
+
*/
|
|
148
|
+
private ensureIndexesUpdated;
|
|
149
|
+
/**
|
|
150
|
+
* 查询包含所有指定组件的实体
|
|
151
|
+
* @param componentTypes 组件类型数组
|
|
152
|
+
* @returns 查询结果
|
|
153
|
+
*/
|
|
154
|
+
queryAll(...componentTypes: ComponentType[]): QueryResult;
|
|
155
|
+
/**
|
|
156
|
+
* 查询包含任意指定组件的实体
|
|
157
|
+
* @param componentTypes 组件类型数组
|
|
158
|
+
* @returns 查询结果
|
|
159
|
+
*/
|
|
160
|
+
queryAny(...componentTypes: ComponentType[]): QueryResult;
|
|
161
|
+
/**
|
|
162
|
+
* 查询不包含任何指定组件的实体
|
|
163
|
+
* @param componentTypes 组件类型数组
|
|
164
|
+
* @returns 查询结果
|
|
165
|
+
*/
|
|
166
|
+
queryNone(...componentTypes: ComponentType[]): QueryResult;
|
|
167
|
+
/**
|
|
168
|
+
* 复合查询:同时满足多个条件
|
|
169
|
+
* @param conditions 查询条件数组
|
|
170
|
+
* @returns 查询结果
|
|
171
|
+
*/
|
|
172
|
+
queryComplex(...conditions: QueryCondition[]): QueryResult;
|
|
173
|
+
/**
|
|
174
|
+
* 流式查询构建器
|
|
175
|
+
* @returns 查询构建器实例
|
|
176
|
+
*/
|
|
177
|
+
createQuery(): QueryBuilder;
|
|
178
|
+
/**
|
|
179
|
+
* 根据标签查询实体
|
|
180
|
+
* @param tag 标签
|
|
181
|
+
* @returns 查询结果
|
|
182
|
+
*/
|
|
183
|
+
queryByTag(tag: number): QueryResult;
|
|
184
|
+
/**
|
|
185
|
+
* 根据名称查询实体
|
|
186
|
+
* @param name 名称
|
|
187
|
+
* @returns 查询结果
|
|
188
|
+
*/
|
|
189
|
+
queryByName(name: string): QueryResult;
|
|
190
|
+
/**
|
|
191
|
+
* 根据单个组件类型快速查询
|
|
192
|
+
* @param componentType 组件类型
|
|
193
|
+
* @returns 查询结果
|
|
194
|
+
*/
|
|
195
|
+
queryByComponent<T extends Component>(componentType: ComponentType<T>): QueryResult;
|
|
196
|
+
/**
|
|
197
|
+
* 类型安全的查询所有指定组件的实体
|
|
198
|
+
* @param componentTypes 组件类型数组
|
|
199
|
+
* @returns 类型安全的查询结果
|
|
200
|
+
*/
|
|
201
|
+
queryAllTyped<T extends readonly ComponentType[]>(...componentTypes: T): TypedQueryResult<T>;
|
|
202
|
+
/**
|
|
203
|
+
* 查询具有特定组件组合的实体并返回组件实例
|
|
204
|
+
* @param componentTypes 组件类型数组
|
|
205
|
+
* @returns 实体和对应组件的映射
|
|
206
|
+
*/
|
|
207
|
+
queryWithComponents<T extends readonly ComponentType[]>(...componentTypes: T): EntityComponentPair<T>[];
|
|
208
|
+
/**
|
|
209
|
+
* 迭代查询结果,为每个匹配的实体执行回调
|
|
210
|
+
* @param componentTypes 组件类型数组
|
|
211
|
+
* @param callback 回调函数
|
|
212
|
+
*/
|
|
213
|
+
forEachWithComponents<T extends readonly ComponentType[]>(componentTypes: T, callback: (entity: Entity, components: ComponentTuple<T>) => void): void;
|
|
214
|
+
/**
|
|
215
|
+
* 查询单个组件类型的实体,返回类型安全的结果
|
|
216
|
+
* @param componentType 组件类型
|
|
217
|
+
* @returns 实体和组件的配对数组
|
|
218
|
+
*/
|
|
219
|
+
queryComponentTyped<T extends Component>(componentType: ComponentType<T>): Array<{
|
|
220
|
+
entity: Entity;
|
|
221
|
+
component: T;
|
|
222
|
+
}>;
|
|
223
|
+
/**
|
|
224
|
+
* 查询两个组件类型的实体,返回类型安全的结果
|
|
225
|
+
* @param componentType1 第一个组件类型
|
|
226
|
+
* @param componentType2 第二个组件类型
|
|
227
|
+
* @returns 实体和组件的配对数组
|
|
228
|
+
*/
|
|
229
|
+
queryTwoComponents<T1 extends Component, T2 extends Component>(componentType1: ComponentType<T1>, componentType2: ComponentType<T2>): Array<{
|
|
230
|
+
entity: Entity;
|
|
231
|
+
component1: T1;
|
|
232
|
+
component2: T2;
|
|
233
|
+
}>;
|
|
234
|
+
/**
|
|
235
|
+
* 查询三个组件类型的实体,返回类型安全的结果
|
|
236
|
+
* @param componentType1 第一个组件类型
|
|
237
|
+
* @param componentType2 第二个组件类型
|
|
238
|
+
* @param componentType3 第三个组件类型
|
|
239
|
+
* @returns 实体和组件的配对数组
|
|
240
|
+
*/
|
|
241
|
+
queryThreeComponents<T1 extends Component, T2 extends Component, T3 extends Component>(componentType1: ComponentType<T1>, componentType2: ComponentType<T2>, componentType3: ComponentType<T3>): Array<{
|
|
242
|
+
entity: Entity;
|
|
243
|
+
component1: T1;
|
|
244
|
+
component2: T2;
|
|
245
|
+
component3: T3;
|
|
246
|
+
}>;
|
|
247
|
+
/**
|
|
248
|
+
* 执行单个条件查询
|
|
249
|
+
* @param condition 查询条件
|
|
250
|
+
* @returns 查询结果
|
|
251
|
+
*/
|
|
252
|
+
private query;
|
|
253
|
+
/**
|
|
254
|
+
* 使用索引优化查询
|
|
255
|
+
* @param condition 查询条件
|
|
256
|
+
* @returns 查询结果或null(如果无法优化)
|
|
257
|
+
*/
|
|
258
|
+
private queryWithIndexOptimization;
|
|
259
|
+
/**
|
|
260
|
+
* 更新性能统计
|
|
261
|
+
* @param executionTime 执行时间
|
|
262
|
+
* @param fromIndex 是否来自索引
|
|
263
|
+
*/
|
|
264
|
+
private updatePerformanceStats;
|
|
265
|
+
/**
|
|
266
|
+
* 根据条件过滤实体
|
|
267
|
+
* @param entities 实体数组
|
|
268
|
+
* @param condition 查询条件
|
|
269
|
+
* @returns 过滤后的实体数组
|
|
270
|
+
*/
|
|
271
|
+
private filterEntitiesByCondition;
|
|
272
|
+
/**
|
|
273
|
+
* 检查实体是否匹配条件
|
|
274
|
+
* @param entity 实体
|
|
275
|
+
* @param condition 查询条件
|
|
276
|
+
* @returns 是否匹配
|
|
277
|
+
*/
|
|
278
|
+
private matchesCondition;
|
|
279
|
+
/**
|
|
280
|
+
* 创建组件类型的位掩码
|
|
281
|
+
* @param componentTypes 组件类型数组
|
|
282
|
+
* @returns 位掩码
|
|
283
|
+
*/
|
|
284
|
+
private createMask;
|
|
285
|
+
/**
|
|
286
|
+
* 生成缓存键
|
|
287
|
+
* @param condition 查询条件
|
|
288
|
+
* @returns 缓存键
|
|
289
|
+
*/
|
|
290
|
+
private generateCacheKey;
|
|
291
|
+
/**
|
|
292
|
+
* 生成复合查询的缓存键
|
|
293
|
+
* @param conditions 查询条件数组
|
|
294
|
+
* @returns 缓存键
|
|
295
|
+
*/
|
|
296
|
+
private generateComplexCacheKey;
|
|
297
|
+
/**
|
|
298
|
+
* 获取缓存结果
|
|
299
|
+
* @param cacheKey 缓存键
|
|
300
|
+
* @returns 缓存项或null
|
|
301
|
+
*/
|
|
302
|
+
private getCachedResult;
|
|
303
|
+
/**
|
|
304
|
+
* 缓存查询结果
|
|
305
|
+
* @param cacheKey 缓存键
|
|
306
|
+
* @param entities 实体数组
|
|
307
|
+
*/
|
|
308
|
+
private cacheResult;
|
|
309
|
+
/**
|
|
310
|
+
* 清空查询缓存
|
|
311
|
+
*/
|
|
312
|
+
clearCache(): void;
|
|
313
|
+
/**
|
|
314
|
+
* 删除最少使用的缓存项
|
|
315
|
+
*/
|
|
316
|
+
private evictLeastUsedCache;
|
|
317
|
+
/**
|
|
318
|
+
* 获取详细的查询统计信息
|
|
319
|
+
*/
|
|
320
|
+
getStats(): {
|
|
321
|
+
entityCount: number;
|
|
322
|
+
cacheSize: number;
|
|
323
|
+
cacheHits: number;
|
|
324
|
+
cacheMisses: number;
|
|
325
|
+
hitRate: number;
|
|
326
|
+
maxCacheSize: number;
|
|
327
|
+
indexStats: {
|
|
328
|
+
maskIndexSize: number;
|
|
329
|
+
componentIndexSize: number;
|
|
330
|
+
tagIndexSize: number;
|
|
331
|
+
nameIndexSize: number;
|
|
332
|
+
};
|
|
333
|
+
performanceStats: QueryPerformanceStats;
|
|
334
|
+
};
|
|
335
|
+
/**
|
|
336
|
+
* 获取性能报告
|
|
337
|
+
*/
|
|
338
|
+
getPerformanceReport(): string;
|
|
339
|
+
/**
|
|
340
|
+
* 优化索引配置
|
|
341
|
+
*/
|
|
342
|
+
optimizeIndexes(): void;
|
|
343
|
+
/**
|
|
344
|
+
* 批量查询多个条件
|
|
345
|
+
* @param queries 查询条件数组
|
|
346
|
+
* @returns 查询结果数组
|
|
347
|
+
*/
|
|
348
|
+
batchQuery(queries: QueryCondition[]): QueryResult[];
|
|
349
|
+
/**
|
|
350
|
+
* 设置缓存配置
|
|
351
|
+
* @param maxSize 最大缓存大小
|
|
352
|
+
* @param timeout 缓存超时时间(毫秒)
|
|
353
|
+
*/
|
|
354
|
+
setCacheConfig(maxSize: number, timeout: number): void;
|
|
355
|
+
/**
|
|
356
|
+
* 重置统计信息
|
|
357
|
+
*/
|
|
358
|
+
resetStats(): void;
|
|
359
|
+
/**
|
|
360
|
+
* 预热查询缓存
|
|
361
|
+
* @param commonQueries 常用查询条件数组
|
|
362
|
+
*/
|
|
363
|
+
warmUpCache(commonQueries: QueryCondition[]): void;
|
|
364
|
+
/**
|
|
365
|
+
* 获取实体变更监听器
|
|
366
|
+
* @param condition 查询条件
|
|
367
|
+
* @param callback 变更回调
|
|
368
|
+
* @returns 取消监听的函数
|
|
369
|
+
*/
|
|
370
|
+
watchQuery(condition: QueryCondition, callback: (entities: Entity[], changeType: 'added' | 'removed' | 'updated') => void): () => void;
|
|
371
|
+
/**
|
|
372
|
+
* 获取查询结果的快照
|
|
373
|
+
* @param condition 查询条件
|
|
374
|
+
* @returns 查询快照
|
|
375
|
+
*/
|
|
376
|
+
createSnapshot(condition: QueryCondition): {
|
|
377
|
+
entities: Entity[];
|
|
378
|
+
timestamp: number;
|
|
379
|
+
condition: QueryCondition;
|
|
380
|
+
};
|
|
381
|
+
/**
|
|
382
|
+
* 比较两个查询快照
|
|
383
|
+
* @param snapshot1 第一个快照
|
|
384
|
+
* @param snapshot2 第二个快照
|
|
385
|
+
* @returns 比较结果
|
|
386
|
+
*/
|
|
387
|
+
compareSnapshots(snapshot1: ReturnType<QuerySystem['createSnapshot']>, snapshot2: ReturnType<QuerySystem['createSnapshot']>): {
|
|
388
|
+
added: Entity[];
|
|
389
|
+
removed: Entity[];
|
|
390
|
+
unchanged: Entity[];
|
|
391
|
+
};
|
|
392
|
+
/**
|
|
393
|
+
* 执行并行查询
|
|
394
|
+
* @param conditions 查询条件数组
|
|
395
|
+
* @returns Promise<查询结果数组>
|
|
396
|
+
*/
|
|
397
|
+
parallelQuery(conditions: QueryCondition[]): Promise<QueryResult[]>;
|
|
398
|
+
/**
|
|
399
|
+
* 获取查询建议
|
|
400
|
+
* @param entities 实体数组
|
|
401
|
+
* @returns 查询优化建议
|
|
402
|
+
*/
|
|
403
|
+
getQuerySuggestions(entities: Entity[]): string[];
|
|
404
|
+
/**
|
|
405
|
+
* 导出查询统计数据
|
|
406
|
+
* @returns 统计数据的JSON字符串
|
|
407
|
+
*/
|
|
408
|
+
exportStats(): string;
|
|
409
|
+
/**
|
|
410
|
+
* 导入查询统计数据
|
|
411
|
+
* @param statsJson 统计数据的JSON字符串
|
|
412
|
+
*/
|
|
413
|
+
importStats(statsJson: string): void;
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* 流式查询构建器
|
|
417
|
+
* 提供链式调用的查询API
|
|
418
|
+
*/
|
|
419
|
+
export declare class QueryBuilder {
|
|
420
|
+
private conditions;
|
|
421
|
+
private querySystem;
|
|
422
|
+
constructor(querySystem: QuerySystem);
|
|
423
|
+
/**
|
|
424
|
+
* 添加"包含所有"条件
|
|
425
|
+
* @param componentTypes 组件类型
|
|
426
|
+
* @returns 查询构建器
|
|
427
|
+
*/
|
|
428
|
+
withAll(...componentTypes: ComponentType[]): QueryBuilder;
|
|
429
|
+
/**
|
|
430
|
+
* 添加"包含任意"条件
|
|
431
|
+
* @param componentTypes 组件类型
|
|
432
|
+
* @returns 查询构建器
|
|
433
|
+
*/
|
|
434
|
+
withAny(...componentTypes: ComponentType[]): QueryBuilder;
|
|
435
|
+
/**
|
|
436
|
+
* 添加"不包含"条件
|
|
437
|
+
* @param componentTypes 组件类型
|
|
438
|
+
* @returns 查询构建器
|
|
439
|
+
*/
|
|
440
|
+
without(...componentTypes: ComponentType[]): QueryBuilder;
|
|
441
|
+
/**
|
|
442
|
+
* 执行查询
|
|
443
|
+
* @returns 查询结果
|
|
444
|
+
*/
|
|
445
|
+
execute(): QueryResult;
|
|
446
|
+
/**
|
|
447
|
+
* 获取第一个匹配的实体
|
|
448
|
+
* @returns 实体或null
|
|
449
|
+
*/
|
|
450
|
+
first(): Entity | null;
|
|
451
|
+
/**
|
|
452
|
+
* 检查是否有匹配的实体
|
|
453
|
+
* @returns 是否有匹配
|
|
454
|
+
*/
|
|
455
|
+
any(): boolean;
|
|
456
|
+
/**
|
|
457
|
+
* 获取匹配实体的数量
|
|
458
|
+
* @returns 实体数量
|
|
459
|
+
*/
|
|
460
|
+
count(): number;
|
|
461
|
+
/**
|
|
462
|
+
* 对每个匹配的实体执行操作
|
|
463
|
+
* @param callback 回调函数
|
|
464
|
+
*/
|
|
465
|
+
forEach(callback: (entity: Entity, index: number) => void): void;
|
|
466
|
+
/**
|
|
467
|
+
* 转换为数组
|
|
468
|
+
* @returns 实体数组
|
|
469
|
+
*/
|
|
470
|
+
toArray(): Entity[];
|
|
471
|
+
/**
|
|
472
|
+
* 创建组件类型的位掩码
|
|
473
|
+
* @param componentTypes 组件类型数组
|
|
474
|
+
* @returns 位掩码
|
|
475
|
+
*/
|
|
476
|
+
private createMask;
|
|
477
|
+
/**
|
|
478
|
+
* 重置查询条件
|
|
479
|
+
* @returns 查询构建器
|
|
480
|
+
*/
|
|
481
|
+
reset(): QueryBuilder;
|
|
482
|
+
private tagFilter?;
|
|
483
|
+
private nameFilter?;
|
|
484
|
+
private limitCount?;
|
|
485
|
+
private offsetCount?;
|
|
486
|
+
private sortFunction?;
|
|
487
|
+
/**
|
|
488
|
+
* 添加标签过滤条件
|
|
489
|
+
* @param tag 标签
|
|
490
|
+
* @returns 查询构建器实例
|
|
491
|
+
*/
|
|
492
|
+
withTag(tag: number): QueryBuilder;
|
|
493
|
+
/**
|
|
494
|
+
* 添加名称过滤条件
|
|
495
|
+
* @param name 名称
|
|
496
|
+
* @returns 查询构建器实例
|
|
497
|
+
*/
|
|
498
|
+
withName(name: string): QueryBuilder;
|
|
499
|
+
/**
|
|
500
|
+
* 限制结果数量
|
|
501
|
+
* @param limit 最大结果数量
|
|
502
|
+
* @returns 查询构建器实例
|
|
503
|
+
*/
|
|
504
|
+
limit(limit: number): QueryBuilder;
|
|
505
|
+
/**
|
|
506
|
+
* 跳过指定数量的结果
|
|
507
|
+
* @param offset 跳过的数量
|
|
508
|
+
* @returns 查询构建器实例
|
|
509
|
+
*/
|
|
510
|
+
offset(offset: number): QueryBuilder;
|
|
511
|
+
/**
|
|
512
|
+
* 对结果进行排序
|
|
513
|
+
* @param compareFn 比较函数
|
|
514
|
+
* @returns 查询构建器实例
|
|
515
|
+
*/
|
|
516
|
+
orderBy(compareFn: (a: Entity, b: Entity) => number): QueryBuilder;
|
|
517
|
+
/**
|
|
518
|
+
* 按更新顺序排序
|
|
519
|
+
* @returns 查询构建器实例
|
|
520
|
+
*/
|
|
521
|
+
orderByUpdateOrder(): QueryBuilder;
|
|
522
|
+
/**
|
|
523
|
+
* 按ID排序
|
|
524
|
+
* @returns 查询构建器实例
|
|
525
|
+
*/
|
|
526
|
+
orderById(): QueryBuilder;
|
|
527
|
+
/**
|
|
528
|
+
* 按名称排序
|
|
529
|
+
* @returns 查询构建器实例
|
|
530
|
+
*/
|
|
531
|
+
orderByName(): QueryBuilder;
|
|
532
|
+
/**
|
|
533
|
+
* 克隆查询构建器
|
|
534
|
+
* @returns 新的查询构建器
|
|
535
|
+
*/
|
|
536
|
+
clone(): QueryBuilder;
|
|
537
|
+
/**
|
|
538
|
+
* 添加自定义过滤器
|
|
539
|
+
* @param predicate 过滤谓词
|
|
540
|
+
* @returns 查询构建器实例
|
|
541
|
+
*/
|
|
542
|
+
filter(predicate: (entity: Entity) => boolean): QueryBuilder;
|
|
543
|
+
/**
|
|
544
|
+
* 映射查询结果
|
|
545
|
+
* @param mapper 映射函数
|
|
546
|
+
* @returns 映射后的结果数组
|
|
547
|
+
*/
|
|
548
|
+
map<T>(mapper: (entity: Entity) => T): T[];
|
|
549
|
+
/**
|
|
550
|
+
* 查找第一个满足条件的实体
|
|
551
|
+
* @param predicate 查找谓词
|
|
552
|
+
* @returns 实体或null
|
|
553
|
+
*/
|
|
554
|
+
find(predicate?: (entity: Entity) => boolean): Entity | null;
|
|
555
|
+
/**
|
|
556
|
+
* 检查是否所有实体都满足条件
|
|
557
|
+
* @param predicate 检查谓词
|
|
558
|
+
* @returns 是否所有实体都满足条件
|
|
559
|
+
*/
|
|
560
|
+
every(predicate: (entity: Entity) => boolean): boolean;
|
|
561
|
+
/**
|
|
562
|
+
* 检查是否有实体满足条件
|
|
563
|
+
* @param predicate 检查谓词
|
|
564
|
+
* @returns 是否有实体满足条件
|
|
565
|
+
*/
|
|
566
|
+
some(predicate: (entity: Entity) => boolean): boolean;
|
|
567
|
+
/**
|
|
568
|
+
* 获取查询的调试信息
|
|
569
|
+
* @returns 调试信息字符串
|
|
570
|
+
*/
|
|
571
|
+
getDebugInfo(): string;
|
|
572
|
+
}
|
|
573
|
+
export {};
|
|
574
|
+
//# sourceMappingURL=QuerySystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuerySystem.d.ts","sourceRoot":"","sources":["../../../src/ECS/Core/QuerySystem.ts"],"names":[],"mappings":"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"}
|