@esengine/ecs-framework 2.1.29 → 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 -465
- package/SECURITY.md +0 -53
- package/index.cjs +0 -2
- package/index.cjs.map +0 -1
- package/index.d.ts +0 -6562
- package/index.mjs +0 -2
- package/index.mjs.map +0 -1
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { IBigIntLike } from './BigIntCompatibility';
|
|
2
|
+
/**
|
|
3
|
+
* 高性能位操作类
|
|
4
|
+
*
|
|
5
|
+
* 基于BigInt实现,支持任意数量的位操作。
|
|
6
|
+
* 自动适配运行环境,在不支持BigInt的环境中使用兼容实现。
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const bits = new Bits();
|
|
11
|
+
* bits.set(0);
|
|
12
|
+
* bits.set(5);
|
|
13
|
+
* console.log(bits.get(0)); // true
|
|
14
|
+
* console.log(bits.get(1)); // false
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare class Bits {
|
|
18
|
+
private _value;
|
|
19
|
+
/**
|
|
20
|
+
* 构造函数
|
|
21
|
+
* @param initialValue 初始值,可以是IBigIntLike或数值
|
|
22
|
+
*/
|
|
23
|
+
constructor(initialValue?: IBigIntLike | number | string);
|
|
24
|
+
/**
|
|
25
|
+
* 设置指定位置的位为1
|
|
26
|
+
* @param index 位索引(从0开始)
|
|
27
|
+
* @throws {Error} 当索引为负数时抛出错误
|
|
28
|
+
*/
|
|
29
|
+
set(index: number): void;
|
|
30
|
+
/**
|
|
31
|
+
* 清除指定位置的位(设为0)
|
|
32
|
+
* @param index 位索引(从0开始)
|
|
33
|
+
* @throws {Error} 当索引为负数时抛出错误
|
|
34
|
+
*/
|
|
35
|
+
clear(index: number): void;
|
|
36
|
+
/**
|
|
37
|
+
* 获取指定位置的位值
|
|
38
|
+
* @param index 位索引(从0开始)
|
|
39
|
+
* @returns 位值(true表示1,false表示0)
|
|
40
|
+
*/
|
|
41
|
+
get(index: number): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* 检查是否包含所有指定的位
|
|
44
|
+
* @param other 另一个Bits对象
|
|
45
|
+
* @returns 是否包含所有指定的位
|
|
46
|
+
*/
|
|
47
|
+
containsAll(other: Bits): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* 检查是否包含任意一个指定的位
|
|
50
|
+
* @param other 另一个Bits对象
|
|
51
|
+
* @returns 是否包含任意一个指定的位
|
|
52
|
+
*/
|
|
53
|
+
intersects(other: Bits): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* 检查是否不包含任何指定的位
|
|
56
|
+
* @param other 另一个Bits对象
|
|
57
|
+
* @returns 是否不包含任何指定的位
|
|
58
|
+
*/
|
|
59
|
+
excludes(other: Bits): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* 清空所有位
|
|
62
|
+
*/
|
|
63
|
+
clearAll(): void;
|
|
64
|
+
/**
|
|
65
|
+
* 检查是否为空(没有设置任何位)
|
|
66
|
+
* @returns 是否为空
|
|
67
|
+
*/
|
|
68
|
+
isEmpty(): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* 获取设置的位数量
|
|
71
|
+
* @returns 设置为1的位数量
|
|
72
|
+
*/
|
|
73
|
+
cardinality(): number;
|
|
74
|
+
/**
|
|
75
|
+
* 位运算:与
|
|
76
|
+
* @param other 另一个Bits对象
|
|
77
|
+
* @returns 新的Bits对象,包含与运算结果
|
|
78
|
+
*/
|
|
79
|
+
and(other: Bits): Bits;
|
|
80
|
+
/**
|
|
81
|
+
* 位运算:或
|
|
82
|
+
* @param other 另一个Bits对象
|
|
83
|
+
* @returns 新的Bits对象,包含或运算结果
|
|
84
|
+
*/
|
|
85
|
+
or(other: Bits): Bits;
|
|
86
|
+
/**
|
|
87
|
+
* 位运算:异或
|
|
88
|
+
* @param other 另一个Bits对象
|
|
89
|
+
* @returns 新的Bits对象,包含异或运算结果
|
|
90
|
+
*/
|
|
91
|
+
xor(other: Bits): Bits;
|
|
92
|
+
/**
|
|
93
|
+
* 位运算:非
|
|
94
|
+
* @param maxBits 最大位数限制,默认64位
|
|
95
|
+
* @returns 新的Bits对象,包含非运算结果
|
|
96
|
+
*/
|
|
97
|
+
not(maxBits?: number): Bits;
|
|
98
|
+
/**
|
|
99
|
+
* 复制另一个Bits对象
|
|
100
|
+
* @param other 要复制的Bits对象
|
|
101
|
+
*/
|
|
102
|
+
copyFrom(other: Bits): void;
|
|
103
|
+
/**
|
|
104
|
+
* 创建当前Bits的副本
|
|
105
|
+
* @returns 新的Bits对象副本
|
|
106
|
+
*/
|
|
107
|
+
clone(): Bits;
|
|
108
|
+
/**
|
|
109
|
+
* 获取原始值
|
|
110
|
+
* @returns 原始的IBigIntLike值
|
|
111
|
+
*/
|
|
112
|
+
getValue(): IBigIntLike;
|
|
113
|
+
/**
|
|
114
|
+
* 设置原始值
|
|
115
|
+
* @param value 新的值,可以是IBigIntLike或数值
|
|
116
|
+
*/
|
|
117
|
+
setValue(value: IBigIntLike | number | string): void;
|
|
118
|
+
/**
|
|
119
|
+
* 获取调试信息
|
|
120
|
+
* @returns 返回显示设置位索引的字符串
|
|
121
|
+
*/
|
|
122
|
+
toString(): string;
|
|
123
|
+
/**
|
|
124
|
+
* 获取二进制表示
|
|
125
|
+
* @param maxBits 最大位数,默认64位
|
|
126
|
+
* @returns 二进制字符串表示
|
|
127
|
+
*/
|
|
128
|
+
toBinaryString(maxBits?: number): string;
|
|
129
|
+
/**
|
|
130
|
+
* 获取十六进制表示
|
|
131
|
+
* @returns 十六进制字符串表示
|
|
132
|
+
*/
|
|
133
|
+
toHexString(): string;
|
|
134
|
+
/**
|
|
135
|
+
* 从二进制字符串创建Bits
|
|
136
|
+
* @param binaryString 二进制字符串
|
|
137
|
+
* @returns 新的Bits对象
|
|
138
|
+
*/
|
|
139
|
+
static fromBinaryString(binaryString: string): Bits;
|
|
140
|
+
/**
|
|
141
|
+
* 从十六进制字符串创建Bits
|
|
142
|
+
* @param hexString 十六进制字符串
|
|
143
|
+
* @returns 新的Bits对象
|
|
144
|
+
*/
|
|
145
|
+
static fromHexString(hexString: string): Bits;
|
|
146
|
+
/**
|
|
147
|
+
* 比较两个Bits对象是否相等
|
|
148
|
+
* @param other 另一个Bits对象
|
|
149
|
+
* @returns 是否相等
|
|
150
|
+
*/
|
|
151
|
+
equals(other: Bits): boolean;
|
|
152
|
+
/**
|
|
153
|
+
* 获取最高位的索引
|
|
154
|
+
* @returns 最高位的索引,如果为空则返回-1
|
|
155
|
+
*/
|
|
156
|
+
getHighestBitIndex(): number;
|
|
157
|
+
/**
|
|
158
|
+
* 获取最低位的索引
|
|
159
|
+
* @returns 最低位的索引,如果为空则返回-1
|
|
160
|
+
*/
|
|
161
|
+
getLowestBitIndex(): number;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=Bits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bits.d.ts","sourceRoot":"","sources":["../../../src/ECS/Utils/Bits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,uBAAuB,CAAC;AAEnE;;;;;;;;;;;;;;GAcG;AACH,qBAAa,IAAI;IACb,OAAO,CAAC,MAAM,CAAc;IAE5B;;;OAGG;gBACS,YAAY,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM;IAQxD;;;;OAIG;IACI,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ/B;;;;OAIG;IACI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQjC;;;;OAIG;IACI,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAQlC;;;;OAIG;IACI,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAKxC;;;;OAIG;IACI,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAIvC;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAIrC;;OAEG;IACI,QAAQ,IAAI,IAAI;IAIvB;;;OAGG;IACI,OAAO,IAAI,OAAO;IAIzB;;;OAGG;IACI,WAAW,IAAI,MAAM;IAe5B;;;;OAIG;IACI,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAI7B;;;;OAIG;IACI,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAI5B;;;;OAIG;IACI,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAI7B;;;;OAIG;IACI,GAAG,CAAC,OAAO,GAAE,MAAW,GAAG,IAAI;IAItC;;;OAGG;IACI,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAIlC;;;OAGG;IACI,KAAK,IAAI,IAAI;IAIpB;;;OAGG;IACI,QAAQ,IAAI,WAAW;IAI9B;;;OAGG;IACI,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAQ3D;;;OAGG;IACI,QAAQ,IAAI,MAAM;IAiBzB;;;;OAIG;IACI,cAAc,CAAC,OAAO,GAAE,MAAW,GAAG,MAAM;IAWnD;;;OAGG;IACI,WAAW,IAAI,MAAM;IAI5B;;;;OAIG;WACW,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAM1D;;;;OAIG;WACW,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKpD;;;;OAIG;IACI,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAInC;;;OAGG;IACI,kBAAkB,IAAI,MAAM;IAgBnC;;;OAGG;IACI,iBAAiB,IAAI,MAAM;CAgBrC"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { BigIntFactory } from './BigIntCompatibility';
|
|
2
|
+
/**
|
|
3
|
+
* 高性能位操作类
|
|
4
|
+
*
|
|
5
|
+
* 基于BigInt实现,支持任意数量的位操作。
|
|
6
|
+
* 自动适配运行环境,在不支持BigInt的环境中使用兼容实现。
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const bits = new Bits();
|
|
11
|
+
* bits.set(0);
|
|
12
|
+
* bits.set(5);
|
|
13
|
+
* console.log(bits.get(0)); // true
|
|
14
|
+
* console.log(bits.get(1)); // false
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export class Bits {
|
|
18
|
+
/**
|
|
19
|
+
* 构造函数
|
|
20
|
+
* @param initialValue 初始值,可以是IBigIntLike或数值
|
|
21
|
+
*/
|
|
22
|
+
constructor(initialValue) {
|
|
23
|
+
if (initialValue && typeof initialValue === 'object') {
|
|
24
|
+
this._value = initialValue;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
this._value = BigIntFactory.create(initialValue || 0);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 设置指定位置的位为1
|
|
32
|
+
* @param index 位索引(从0开始)
|
|
33
|
+
* @throws {Error} 当索引为负数时抛出错误
|
|
34
|
+
*/
|
|
35
|
+
set(index) {
|
|
36
|
+
if (index < 0) {
|
|
37
|
+
throw new Error('Bit index cannot be negative');
|
|
38
|
+
}
|
|
39
|
+
const mask = BigIntFactory.one().shiftLeft(index);
|
|
40
|
+
this._value = this._value.or(mask);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 清除指定位置的位(设为0)
|
|
44
|
+
* @param index 位索引(从0开始)
|
|
45
|
+
* @throws {Error} 当索引为负数时抛出错误
|
|
46
|
+
*/
|
|
47
|
+
clear(index) {
|
|
48
|
+
if (index < 0) {
|
|
49
|
+
throw new Error('Bit index cannot be negative');
|
|
50
|
+
}
|
|
51
|
+
const mask = BigIntFactory.one().shiftLeft(index).not();
|
|
52
|
+
this._value = this._value.and(mask);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 获取指定位置的位值
|
|
56
|
+
* @param index 位索引(从0开始)
|
|
57
|
+
* @returns 位值(true表示1,false表示0)
|
|
58
|
+
*/
|
|
59
|
+
get(index) {
|
|
60
|
+
if (index < 0) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
const mask = BigIntFactory.one().shiftLeft(index);
|
|
64
|
+
return !this._value.and(mask).isZero();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 检查是否包含所有指定的位
|
|
68
|
+
* @param other 另一个Bits对象
|
|
69
|
+
* @returns 是否包含所有指定的位
|
|
70
|
+
*/
|
|
71
|
+
containsAll(other) {
|
|
72
|
+
const intersection = this._value.and(other._value);
|
|
73
|
+
return intersection.equals(other._value);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 检查是否包含任意一个指定的位
|
|
77
|
+
* @param other 另一个Bits对象
|
|
78
|
+
* @returns 是否包含任意一个指定的位
|
|
79
|
+
*/
|
|
80
|
+
intersects(other) {
|
|
81
|
+
return !this._value.and(other._value).isZero();
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* 检查是否不包含任何指定的位
|
|
85
|
+
* @param other 另一个Bits对象
|
|
86
|
+
* @returns 是否不包含任何指定的位
|
|
87
|
+
*/
|
|
88
|
+
excludes(other) {
|
|
89
|
+
return !this.intersects(other);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 清空所有位
|
|
93
|
+
*/
|
|
94
|
+
clearAll() {
|
|
95
|
+
this._value = BigIntFactory.zero();
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 检查是否为空(没有设置任何位)
|
|
99
|
+
* @returns 是否为空
|
|
100
|
+
*/
|
|
101
|
+
isEmpty() {
|
|
102
|
+
return this._value.isZero();
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* 获取设置的位数量
|
|
106
|
+
* @returns 设置为1的位数量
|
|
107
|
+
*/
|
|
108
|
+
cardinality() {
|
|
109
|
+
let count = 0;
|
|
110
|
+
let value = this._value.clone();
|
|
111
|
+
while (!value.isZero()) {
|
|
112
|
+
const one = BigIntFactory.one();
|
|
113
|
+
if (!value.and(one).isZero()) {
|
|
114
|
+
count++;
|
|
115
|
+
}
|
|
116
|
+
value = value.shiftRight(1);
|
|
117
|
+
}
|
|
118
|
+
return count;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* 位运算:与
|
|
122
|
+
* @param other 另一个Bits对象
|
|
123
|
+
* @returns 新的Bits对象,包含与运算结果
|
|
124
|
+
*/
|
|
125
|
+
and(other) {
|
|
126
|
+
return new Bits(this._value.and(other._value));
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* 位运算:或
|
|
130
|
+
* @param other 另一个Bits对象
|
|
131
|
+
* @returns 新的Bits对象,包含或运算结果
|
|
132
|
+
*/
|
|
133
|
+
or(other) {
|
|
134
|
+
return new Bits(this._value.or(other._value));
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* 位运算:异或
|
|
138
|
+
* @param other 另一个Bits对象
|
|
139
|
+
* @returns 新的Bits对象,包含异或运算结果
|
|
140
|
+
*/
|
|
141
|
+
xor(other) {
|
|
142
|
+
return new Bits(this._value.xor(other._value));
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* 位运算:非
|
|
146
|
+
* @param maxBits 最大位数限制,默认64位
|
|
147
|
+
* @returns 新的Bits对象,包含非运算结果
|
|
148
|
+
*/
|
|
149
|
+
not(maxBits = 64) {
|
|
150
|
+
return new Bits(this._value.not(maxBits));
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* 复制另一个Bits对象
|
|
154
|
+
* @param other 要复制的Bits对象
|
|
155
|
+
*/
|
|
156
|
+
copyFrom(other) {
|
|
157
|
+
this._value = other._value.clone();
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* 创建当前Bits的副本
|
|
161
|
+
* @returns 新的Bits对象副本
|
|
162
|
+
*/
|
|
163
|
+
clone() {
|
|
164
|
+
return new Bits(this._value.clone());
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* 获取原始值
|
|
168
|
+
* @returns 原始的IBigIntLike值
|
|
169
|
+
*/
|
|
170
|
+
getValue() {
|
|
171
|
+
return this._value;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* 设置原始值
|
|
175
|
+
* @param value 新的值,可以是IBigIntLike或数值
|
|
176
|
+
*/
|
|
177
|
+
setValue(value) {
|
|
178
|
+
if (typeof value === 'object') {
|
|
179
|
+
this._value = value;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
this._value = BigIntFactory.create(value);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* 获取调试信息
|
|
187
|
+
* @returns 返回显示设置位索引的字符串
|
|
188
|
+
*/
|
|
189
|
+
toString() {
|
|
190
|
+
const bits = [];
|
|
191
|
+
let index = 0;
|
|
192
|
+
let value = this._value.clone();
|
|
193
|
+
while (!value.isZero()) {
|
|
194
|
+
const one = BigIntFactory.one();
|
|
195
|
+
if (!value.and(one).isZero()) {
|
|
196
|
+
bits.push(index.toString());
|
|
197
|
+
}
|
|
198
|
+
value = value.shiftRight(1);
|
|
199
|
+
index++;
|
|
200
|
+
}
|
|
201
|
+
return `Bits[${bits.join(', ')}]`;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* 获取二进制表示
|
|
205
|
+
* @param maxBits 最大位数,默认64位
|
|
206
|
+
* @returns 二进制字符串表示
|
|
207
|
+
*/
|
|
208
|
+
toBinaryString(maxBits = 64) {
|
|
209
|
+
let result = '';
|
|
210
|
+
for (let i = maxBits - 1; i >= 0; i--) {
|
|
211
|
+
result += this.get(i) ? '1' : '0';
|
|
212
|
+
if (i % 8 === 0 && i > 0) {
|
|
213
|
+
result += ' ';
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return result;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* 获取十六进制表示
|
|
220
|
+
* @returns 十六进制字符串表示
|
|
221
|
+
*/
|
|
222
|
+
toHexString() {
|
|
223
|
+
return '0x' + this._value.toString(16).toUpperCase();
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* 从二进制字符串创建Bits
|
|
227
|
+
* @param binaryString 二进制字符串
|
|
228
|
+
* @returns 新的Bits对象
|
|
229
|
+
*/
|
|
230
|
+
static fromBinaryString(binaryString) {
|
|
231
|
+
const cleanString = binaryString.replace(/\s/g, '');
|
|
232
|
+
const value = BigIntFactory.fromBinaryString(cleanString);
|
|
233
|
+
return new Bits(value);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* 从十六进制字符串创建Bits
|
|
237
|
+
* @param hexString 十六进制字符串
|
|
238
|
+
* @returns 新的Bits对象
|
|
239
|
+
*/
|
|
240
|
+
static fromHexString(hexString) {
|
|
241
|
+
const value = BigIntFactory.fromHexString(hexString);
|
|
242
|
+
return new Bits(value);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* 比较两个Bits对象是否相等
|
|
246
|
+
* @param other 另一个Bits对象
|
|
247
|
+
* @returns 是否相等
|
|
248
|
+
*/
|
|
249
|
+
equals(other) {
|
|
250
|
+
return this._value.equals(other._value);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* 获取最高位的索引
|
|
254
|
+
* @returns 最高位的索引,如果为空则返回-1
|
|
255
|
+
*/
|
|
256
|
+
getHighestBitIndex() {
|
|
257
|
+
if (this._value.isZero()) {
|
|
258
|
+
return -1;
|
|
259
|
+
}
|
|
260
|
+
let index = 0;
|
|
261
|
+
let value = this._value.clone();
|
|
262
|
+
while (!value.shiftRight(1).isZero()) {
|
|
263
|
+
value = value.shiftRight(1);
|
|
264
|
+
index++;
|
|
265
|
+
}
|
|
266
|
+
return index;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* 获取最低位的索引
|
|
270
|
+
* @returns 最低位的索引,如果为空则返回-1
|
|
271
|
+
*/
|
|
272
|
+
getLowestBitIndex() {
|
|
273
|
+
if (this._value.isZero()) {
|
|
274
|
+
return -1;
|
|
275
|
+
}
|
|
276
|
+
let index = 0;
|
|
277
|
+
let value = this._value.clone();
|
|
278
|
+
const one = BigIntFactory.one();
|
|
279
|
+
while (value.and(one).isZero()) {
|
|
280
|
+
value = value.shiftRight(1);
|
|
281
|
+
index++;
|
|
282
|
+
}
|
|
283
|
+
return index;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=Bits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bits.js","sourceRoot":"","sources":["../../../src/ECS/Utils/Bits.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Component } from '../Component';
|
|
2
|
+
import { Bits } from './Bits';
|
|
3
|
+
/**
|
|
4
|
+
* 组件类型管理器
|
|
5
|
+
* 负责管理组件类型的注册和ID分配
|
|
6
|
+
*/
|
|
7
|
+
export declare class ComponentTypeManager {
|
|
8
|
+
private static _instance;
|
|
9
|
+
private _componentTypes;
|
|
10
|
+
private _typeNames;
|
|
11
|
+
private _nextTypeId;
|
|
12
|
+
/**
|
|
13
|
+
* 获取单例实例
|
|
14
|
+
*/
|
|
15
|
+
static get instance(): ComponentTypeManager;
|
|
16
|
+
private constructor();
|
|
17
|
+
/**
|
|
18
|
+
* 获取组件类型的ID
|
|
19
|
+
* @param componentType 组件类型构造函数
|
|
20
|
+
* @returns 组件类型ID
|
|
21
|
+
*/
|
|
22
|
+
getTypeId<T extends Component>(componentType: new (...args: unknown[]) => T): number;
|
|
23
|
+
/**
|
|
24
|
+
* 获取组件类型名称
|
|
25
|
+
* @param typeId 组件类型ID
|
|
26
|
+
* @returns 组件类型名称
|
|
27
|
+
*/
|
|
28
|
+
getTypeName(typeId: number): string;
|
|
29
|
+
/**
|
|
30
|
+
* 创建包含指定组件类型的Bits对象
|
|
31
|
+
* @param componentTypes 组件类型构造函数数组
|
|
32
|
+
* @returns Bits对象
|
|
33
|
+
*/
|
|
34
|
+
createBits(...componentTypes: (new (...args: unknown[]) => Component)[]): Bits;
|
|
35
|
+
/**
|
|
36
|
+
* 获取实体的组件位掩码
|
|
37
|
+
* @param components 组件数组
|
|
38
|
+
* @returns Bits对象
|
|
39
|
+
*/
|
|
40
|
+
getEntityBits(components: Component[]): Bits;
|
|
41
|
+
/**
|
|
42
|
+
* 重置管理器(主要用于测试)
|
|
43
|
+
*/
|
|
44
|
+
reset(): void;
|
|
45
|
+
/**
|
|
46
|
+
* 获取已注册的组件类型数量
|
|
47
|
+
*/
|
|
48
|
+
get registeredTypeCount(): number;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=ComponentTypeManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComponentTypeManager.d.ts","sourceRoot":"","sources":["../../../src/ECS/Utils/ComponentTypeManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;;;GAGG;AACH,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAuB;IAC/C,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,WAAW,CAAK;IAExB;;OAEG;IACH,WAAkB,QAAQ,IAAI,oBAAoB,CAKjD;IAED,OAAO;IAEP;;;;OAIG;IACI,SAAS,CAAC,CAAC,SAAS,SAAS,EAAE,aAAa,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM;IAY3F;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI1C;;;;OAIG;IACI,UAAU,CAAC,GAAG,cAAc,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,SAAS,CAAC,EAAE,GAAG,IAAI;IAWrF;;;;OAIG;IACI,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI;IAWnD;;OAEG;IACI,KAAK,IAAI,IAAI;IAMpB;;OAEG;IACH,IAAW,mBAAmB,IAAI,MAAM,CAEvC;CACJ"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Bits } from './Bits';
|
|
2
|
+
/**
|
|
3
|
+
* 组件类型管理器
|
|
4
|
+
* 负责管理组件类型的注册和ID分配
|
|
5
|
+
*/
|
|
6
|
+
export class ComponentTypeManager {
|
|
7
|
+
/**
|
|
8
|
+
* 获取单例实例
|
|
9
|
+
*/
|
|
10
|
+
static get instance() {
|
|
11
|
+
if (!ComponentTypeManager._instance) {
|
|
12
|
+
ComponentTypeManager._instance = new ComponentTypeManager();
|
|
13
|
+
}
|
|
14
|
+
return ComponentTypeManager._instance;
|
|
15
|
+
}
|
|
16
|
+
constructor() {
|
|
17
|
+
this._componentTypes = new Map();
|
|
18
|
+
this._typeNames = new Map();
|
|
19
|
+
this._nextTypeId = 0;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 获取组件类型的ID
|
|
23
|
+
* @param componentType 组件类型构造函数
|
|
24
|
+
* @returns 组件类型ID
|
|
25
|
+
*/
|
|
26
|
+
getTypeId(componentType) {
|
|
27
|
+
let typeId = this._componentTypes.get(componentType);
|
|
28
|
+
if (typeId === undefined) {
|
|
29
|
+
typeId = this._nextTypeId++;
|
|
30
|
+
this._componentTypes.set(componentType, typeId);
|
|
31
|
+
this._typeNames.set(typeId, componentType.name);
|
|
32
|
+
}
|
|
33
|
+
return typeId;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 获取组件类型名称
|
|
37
|
+
* @param typeId 组件类型ID
|
|
38
|
+
* @returns 组件类型名称
|
|
39
|
+
*/
|
|
40
|
+
getTypeName(typeId) {
|
|
41
|
+
return this._typeNames.get(typeId) || 'Unknown';
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 创建包含指定组件类型的Bits对象
|
|
45
|
+
* @param componentTypes 组件类型构造函数数组
|
|
46
|
+
* @returns Bits对象
|
|
47
|
+
*/
|
|
48
|
+
createBits(...componentTypes) {
|
|
49
|
+
const bits = new Bits();
|
|
50
|
+
for (const componentType of componentTypes) {
|
|
51
|
+
const typeId = this.getTypeId(componentType);
|
|
52
|
+
bits.set(typeId);
|
|
53
|
+
}
|
|
54
|
+
return bits;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 获取实体的组件位掩码
|
|
58
|
+
* @param components 组件数组
|
|
59
|
+
* @returns Bits对象
|
|
60
|
+
*/
|
|
61
|
+
getEntityBits(components) {
|
|
62
|
+
const bits = new Bits();
|
|
63
|
+
for (const component of components) {
|
|
64
|
+
const typeId = this.getTypeId(component.constructor);
|
|
65
|
+
bits.set(typeId);
|
|
66
|
+
}
|
|
67
|
+
return bits;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 重置管理器(主要用于测试)
|
|
71
|
+
*/
|
|
72
|
+
reset() {
|
|
73
|
+
this._componentTypes.clear();
|
|
74
|
+
this._typeNames.clear();
|
|
75
|
+
this._nextTypeId = 0;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* 获取已注册的组件类型数量
|
|
79
|
+
*/
|
|
80
|
+
get registeredTypeCount() {
|
|
81
|
+
return this._componentTypes.size;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=ComponentTypeManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComponentTypeManager.js","sourceRoot":"","sources":["../../../src/ECS/Utils/ComponentTypeManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAM7B;;OAEG;IACI,MAAM,KAAK,QAAQ;QACtB,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC;YAClC,oBAAoB,CAAC,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAChE,CAAC;QACD,OAAO,oBAAoB,CAAC,SAAS,CAAC;IAC1C,CAAC;IAED;QAdQ,oBAAe,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC9C,eAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;QACvC,gBAAW,GAAG,CAAC,CAAC;IAYD,CAAC;IAExB;;;;OAIG;IACI,SAAS,CAAsB,aAA4C;QAC9E,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAErD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,MAAc;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACI,UAAU,CAAC,GAAG,cAAyD;QAC1E,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAExB,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,UAAuB;QACxC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAExB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,WAAoD,CAAC,CAAC;YAC9F,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,KAAK;QACR,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAW,mBAAmB;QAC1B,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IACrC,CAAC;CACJ"}
|