@esengine/ecs-framework 2.1.49 → 2.1.50

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/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @esengine/ecs-framework v2.1.49
2
+ * @esengine/ecs-framework v2.1.50
3
3
  * TypeScript definitions
4
4
  */
5
5
  /**
@@ -2032,16 +2032,6 @@ declare class GlobalEventBus {
2032
2032
  */
2033
2033
  static reset(debugMode?: boolean): EventBus;
2034
2034
  }
2035
- /**
2036
- * 事件装饰器工厂
2037
- * 用于自动注册事件监听器
2038
- */
2039
- declare function EventHandler$1(eventType: string, config?: IEventListenerConfig): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
2040
- /**
2041
- * 异步事件装饰器工厂
2042
- * 用于自动注册异步事件监听器
2043
- */
2044
- declare function AsyncEventHandler$1(eventType: string, config?: IEventListenerConfig): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
2045
2035
 
2046
2036
  /**
2047
2037
  * 高性能实体列表管理器
@@ -2510,12 +2500,8 @@ interface Archetype {
2510
2500
  id: ArchetypeId;
2511
2501
  /** 包含的组件类型 */
2512
2502
  componentTypes: ComponentType[];
2513
- /** 属于该原型的实体列表 */
2514
- entities: Entity[];
2515
- /** 原型创建时间 */
2516
- createdAt: number;
2517
- /** 最后更新时间 */
2518
- updatedAt: number;
2503
+ /** 属于该原型的实体集合 */
2504
+ entities: Set<Entity>;
2519
2505
  }
2520
2506
 
2521
2507
  /**
@@ -2533,13 +2519,6 @@ interface QueryResult {
2533
2519
  * 高性能实体查询系统
2534
2520
  *
2535
2521
  * 提供快速的实体查询功能,支持按组件类型、标签、名称等多种方式查询实体。
2536
- * 系统采用多级索引和智能缓存机制,确保在大量实体场景下的查询性能。
2537
- *
2538
- * 主要特性:
2539
- * - 支持单组件和多组件查询
2540
- * - 自动索引管理和缓存优化
2541
- * - WebAssembly计算加速(如果可用)
2542
- * - 详细的性能统计信息
2543
2522
  *
2544
2523
  * @example
2545
2524
  * ```typescript
@@ -2558,8 +2537,6 @@ declare class QuerySystem {
2558
2537
  private queryCache;
2559
2538
  private cacheMaxSize;
2560
2539
  private cacheTimeout;
2561
- private componentNameCache;
2562
- private cacheKeyCache;
2563
2540
  private componentMaskCache;
2564
2541
  private componentIndexManager;
2565
2542
  private archetypeSystem;
@@ -2610,6 +2587,14 @@ declare class QuerySystem {
2610
2587
  * @param entity 要移除的实体
2611
2588
  */
2612
2589
  removeEntity(entity: Entity): void;
2590
+ /**
2591
+ * 更新实体在查询系统中的索引
2592
+ *
2593
+ * 当实体的组件组合发生变化时调用此方法,高效地更新实体在查询系统中的索引。
2594
+ *
2595
+ * @param entity 要更新的实体
2596
+ */
2597
+ updateEntity(entity: Entity): void;
2613
2598
  /**
2614
2599
  * 将实体添加到各种索引中
2615
2600
  */
@@ -3341,6 +3326,7 @@ declare abstract class EntitySystem implements ISystemBase {
3341
3326
  private _matcher;
3342
3327
  private _eventListeners;
3343
3328
  private _scene;
3329
+ protected logger: ReturnType<typeof createLogger>;
3344
3330
  /**
3345
3331
  * 实体ID映射缓存
3346
3332
  */
@@ -3562,13 +3548,21 @@ declare abstract class EntitySystem implements ISystemBase {
3562
3548
  */
3563
3549
  protected removeEventListener<T = any>(eventType: string, handler: EventHandler<T>): void;
3564
3550
  /**
3565
- * 清理所有事件监听器
3566
- *
3567
- * 系统移除时自动调用,清理所有通过addEventListener添加的监听器。
3551
+ * 清理手动添加的事件监听器
3552
+ */
3553
+ private cleanupManualEventListeners;
3554
+ /**
3555
+ * 框架内部销毁方法
3556
+ * 由框架调用,处理系统的完整销毁流程
3568
3557
  */
3569
- private cleanupEventListeners;
3558
+ destroy(): void;
3559
+ /**
3560
+ * 获取Logger名称
3561
+ * 子类可以重写此方法来自定义logger名称
3562
+ */
3563
+ protected getLoggerName(): string;
3570
3564
  /**
3571
- * 系统销毁时的回调
3565
+ * 用户销毁回调
3572
3566
  *
3573
3567
  * 当系统从场景中移除时调用,子类可以重写此方法进行清理操作。
3574
3568
  * 注意:事件监听器会被框架自动清理,无需手动处理。
@@ -3817,6 +3811,12 @@ declare class Entity {
3817
3811
  * 用于发射组件相关事件
3818
3812
  */
3819
3813
  static eventBus: EventBus | null;
3814
+ /**
3815
+ * 通知Scene中的QuerySystem实体组件发生变动
3816
+ *
3817
+ * @param entity 发生组件变动的实体
3818
+ */
3819
+ private static notifyQuerySystems;
3820
3820
  /**
3821
3821
  * 实体名称
3822
3822
  */
@@ -5586,15 +5586,18 @@ declare class Core {
5586
5586
  /**
5587
5587
  * 获取WorldManager实例
5588
5588
  *
5589
+ * @param config 可选的WorldManager配置,用于覆盖默认配置
5589
5590
  * @returns WorldManager实例,如果未初始化则自动创建
5590
5591
  */
5591
- static getWorldManager(): WorldManager;
5592
+ static getWorldManager(config?: Partial<IWorldManagerConfig>): WorldManager;
5592
5593
  /**
5593
5594
  * 启用World管理
5594
5595
  *
5595
5596
  * 显式启用World功能,用于多房间/多世界架构
5597
+ *
5598
+ * @param config 可选的WorldManager配置,用于覆盖默认配置
5596
5599
  */
5597
- static enableWorldManager(): WorldManager;
5600
+ static enableWorldManager(config?: Partial<IWorldManagerConfig>): WorldManager;
5598
5601
  /**
5599
5602
  * 确保默认World存在
5600
5603
  *
@@ -5876,6 +5879,315 @@ declare abstract class IntervalSystem extends EntitySystem {
5876
5879
  protected getIntervalDelta(): number;
5877
5880
  }
5878
5881
 
5882
+ /**
5883
+ * Worker处理函数类型
5884
+ * 用户编写的处理逻辑,会被序列化到Worker中执行
5885
+ */
5886
+ type WorkerProcessFunction<T extends Record<string, any> = any> = (entities: T[], deltaTime: number, config?: any) => T[] | Promise<T[]>;
5887
+ /**
5888
+ * Worker配置接口
5889
+ */
5890
+ interface WorkerSystemConfig {
5891
+ /** 是否启用Worker并行处理 */
5892
+ enableWorker?: boolean;
5893
+ /** Worker数量,默认为CPU核心数,自动限制在系统最大值内 */
5894
+ workerCount?: number;
5895
+ /** 每个Worker处理的实体数量,用于控制负载分布 */
5896
+ entitiesPerWorker?: number;
5897
+ /** 系统配置数据,会传递给Worker */
5898
+ systemConfig?: any;
5899
+ /** 是否使用SharedArrayBuffer优化 */
5900
+ useSharedArrayBuffer?: boolean;
5901
+ /** 每个实体在SharedArrayBuffer中占用的Float32数量 */
5902
+ entityDataSize?: number;
5903
+ /** 最大实体数量(用于预分配SharedArrayBuffer) */
5904
+ maxEntities?: number;
5905
+ }
5906
+ /**
5907
+ * SharedArrayBuffer处理函数类型
5908
+ */
5909
+ type SharedArrayBufferProcessFunction = (sharedFloatArray: Float32Array, startIndex: number, endIndex: number, deltaTime: number, systemConfig?: any) => void;
5910
+ /**
5911
+ * 支持Worker并行处理的EntitySystem基类
5912
+ *
5913
+ * 支持传统Worker和SharedArrayBuffer两种优化模式:
5914
+ * - 传统模式:数据序列化传输,适用于复杂计算
5915
+ * - SharedArrayBuffer模式:零拷贝数据共享,适用于大量简单计算
5916
+ *
5917
+ * 用户需要实现:
5918
+ * 1. extractEntityData - 定义数据提取逻辑
5919
+ * 2. workerProcess - 编写处理函数(纯函数,可序列化)
5920
+ * 3. applyResult - 定义结果应用逻辑
5921
+ * 4. (可选) SharedArrayBuffer相关方法
5922
+ *
5923
+ * @example
5924
+ * ```typescript
5925
+ * class PhysicsSystem extends WorkerEntitySystem<PhysicsData> {
5926
+ * constructor() {
5927
+ * super(Matcher.all(Transform, Velocity), {
5928
+ * enableWorker: true,
5929
+ * workerCount: 8, // 指定8个worker,系统会自动限制在系统最大值内
5930
+ * entitiesPerWorker: 100, // 每个worker处理100个实体
5931
+ * useSharedArrayBuffer: true,
5932
+ * entityDataSize: 6, // x, y, vx, vy, radius, mass
5933
+ * maxEntities: 10000,
5934
+ * systemConfig: { gravity: 100, friction: 0.95 }
5935
+ * });
5936
+ * }
5937
+ *
5938
+ * protected getDefaultEntityDataSize(): number {
5939
+ * return 6; // x, y, vx, vy, radius, mass
5940
+ * }
5941
+ *
5942
+ * protected extractEntityData(entity: Entity): PhysicsData {
5943
+ * const transform = entity.getComponent(Transform);
5944
+ * const velocity = entity.getComponent(Velocity);
5945
+ * const physics = entity.getComponent(PhysicsComponent);
5946
+ * return {
5947
+ * x: transform.x,
5948
+ * y: transform.y,
5949
+ * vx: velocity.x,
5950
+ * vy: velocity.y,
5951
+ * radius: physics.radius,
5952
+ * mass: physics.mass
5953
+ * };
5954
+ * }
5955
+ *
5956
+ * protected workerProcess(entities: PhysicsData[], deltaTime: number, config: any): PhysicsData[] {
5957
+ * return entities.map(entity => {
5958
+ * // 应用重力
5959
+ * entity.vy += config.gravity * deltaTime;
5960
+ *
5961
+ * // 更新位置
5962
+ * entity.x += entity.vx * deltaTime;
5963
+ * entity.y += entity.vy * deltaTime;
5964
+ *
5965
+ * // 应用摩擦力
5966
+ * entity.vx *= config.friction;
5967
+ * entity.vy *= config.friction;
5968
+ *
5969
+ * return entity;
5970
+ * });
5971
+ * }
5972
+ *
5973
+ * protected applyResult(entity: Entity, result: PhysicsData): void {
5974
+ * const transform = entity.getComponent(Transform);
5975
+ * const velocity = entity.getComponent(Velocity);
5976
+ *
5977
+ * transform.x = result.x;
5978
+ * transform.y = result.y;
5979
+ * velocity.x = result.vx;
5980
+ * velocity.y = result.vy;
5981
+ * }
5982
+ *
5983
+ * // SharedArrayBuffer优化支持
5984
+ * protected writeEntityToBuffer(entityData: PhysicsData, offset: number): void {
5985
+ * if (!this.sharedFloatArray) return;
5986
+ *
5987
+ * this.sharedFloatArray[offset] = entityData.x;
5988
+ * this.sharedFloatArray[offset + 1] = entityData.y;
5989
+ * this.sharedFloatArray[offset + 2] = entityData.vx;
5990
+ * this.sharedFloatArray[offset + 3] = entityData.vy;
5991
+ * this.sharedFloatArray[offset + 4] = entityData.radius;
5992
+ * this.sharedFloatArray[offset + 5] = entityData.mass;
5993
+ * }
5994
+ *
5995
+ * protected readEntityFromBuffer(offset: number): PhysicsData | null {
5996
+ * if (!this.sharedFloatArray) return null;
5997
+ *
5998
+ * return {
5999
+ * x: this.sharedFloatArray[offset],
6000
+ * y: this.sharedFloatArray[offset + 1],
6001
+ * vx: this.sharedFloatArray[offset + 2],
6002
+ * vy: this.sharedFloatArray[offset + 3],
6003
+ * radius: this.sharedFloatArray[offset + 4],
6004
+ * mass: this.sharedFloatArray[offset + 5]
6005
+ * };
6006
+ * }
6007
+ *
6008
+ * protected getSharedArrayBufferProcessFunction(): SharedArrayBufferProcessFunction {
6009
+ * return function(sharedFloatArray: Float32Array, startIndex: number, endIndex: number, deltaTime: number, config: any) {
6010
+ * const entitySize = 6;
6011
+ * for (let i = startIndex; i < endIndex; i++) {
6012
+ * const offset = i * entitySize;
6013
+ *
6014
+ * // 读取数据
6015
+ * let x = sharedFloatArray[offset];
6016
+ * let y = sharedFloatArray[offset + 1];
6017
+ * let vx = sharedFloatArray[offset + 2];
6018
+ * let vy = sharedFloatArray[offset + 3];
6019
+ * const radius = sharedFloatArray[offset + 4];
6020
+ * const mass = sharedFloatArray[offset + 5];
6021
+ *
6022
+ * // 物理计算
6023
+ * vy += config.gravity * deltaTime;
6024
+ * x += vx * deltaTime;
6025
+ * y += vy * deltaTime;
6026
+ * vx *= config.friction;
6027
+ * vy *= config.friction;
6028
+ *
6029
+ * // 写回数据
6030
+ * sharedFloatArray[offset] = x;
6031
+ * sharedFloatArray[offset + 1] = y;
6032
+ * sharedFloatArray[offset + 2] = vx;
6033
+ * sharedFloatArray[offset + 3] = vy;
6034
+ * }
6035
+ * };
6036
+ * }
6037
+ * }
6038
+ *
6039
+ * interface PhysicsData {
6040
+ * x: number;
6041
+ * y: number;
6042
+ * vx: number;
6043
+ * vy: number;
6044
+ * radius: number;
6045
+ * mass: number;
6046
+ * }
6047
+ * ```
6048
+ */
6049
+ declare abstract class WorkerEntitySystem<TEntityData = any> extends EntitySystem {
6050
+ protected config: Required<Omit<WorkerSystemConfig, 'systemConfig' | 'entitiesPerWorker'>> & {
6051
+ systemConfig?: any;
6052
+ entitiesPerWorker?: number;
6053
+ };
6054
+ private workerPool;
6055
+ private isProcessing;
6056
+ protected sharedBuffer: SharedArrayBuffer | null;
6057
+ protected sharedFloatArray: Float32Array | null;
6058
+ private platformAdapter;
6059
+ constructor(matcher?: Matcher, config?: WorkerSystemConfig);
6060
+ /**
6061
+ * 检查是否支持Worker
6062
+ */
6063
+ private isWorkerSupported;
6064
+ /**
6065
+ * 检查是否支持SharedArrayBuffer
6066
+ */
6067
+ private isSharedArrayBufferSupported;
6068
+ /**
6069
+ * 获取系统支持的最大Worker数量
6070
+ */
6071
+ private getMaxSystemWorkerCount;
6072
+ /**
6073
+ * 获取实体数据大小 - 子类必须实现
6074
+ * 返回每个实体在SharedArrayBuffer中占用的Float32数量
6075
+ */
6076
+ protected abstract getDefaultEntityDataSize(): number;
6077
+ /**
6078
+ * 初始化SharedArrayBuffer
6079
+ */
6080
+ private initializeSharedArrayBuffer;
6081
+ /**
6082
+ * 初始化Worker池
6083
+ */
6084
+ private initializeWorkerPool;
6085
+ /**
6086
+ * 创建Worker脚本
6087
+ */
6088
+ private createWorkerScript;
6089
+ /**
6090
+ * 重写process方法,支持Worker并行处理
6091
+ */
6092
+ protected process(entities: readonly Entity[]): void;
6093
+ /**
6094
+ * 使用SharedArrayBuffer优化的Worker处理
6095
+ */
6096
+ private processWithSharedArrayBuffer;
6097
+ /**
6098
+ * 使用Worker并行处理
6099
+ */
6100
+ private processWithWorker;
6101
+ /**
6102
+ * 同步处理(fallback)
6103
+ */
6104
+ private processSynchronously;
6105
+ /**
6106
+ * 创建数据批次 - 支持用户指定每个Worker的实体数量
6107
+ */
6108
+ private createBatches;
6109
+ /**
6110
+ * 将实体数据写入SharedArrayBuffer
6111
+ */
6112
+ private writeEntitiesToSharedBuffer;
6113
+ /**
6114
+ * 将单个实体数据写入SharedArrayBuffer - 子类必须实现
6115
+ * @param entityData 实体数据
6116
+ * @param offset 在SharedArrayBuffer中的偏移位置(Float32索引)
6117
+ */
6118
+ protected abstract writeEntityToBuffer(entityData: TEntityData, offset: number): void;
6119
+ /**
6120
+ * 创建SharedArrayBuffer任务 - 支持用户指定每个Worker的实体数量
6121
+ */
6122
+ private createSharedArrayBufferTasks;
6123
+ /**
6124
+ * 从SharedArrayBuffer读取结果并应用
6125
+ */
6126
+ private readResultsFromSharedBuffer;
6127
+ /**
6128
+ * 从SharedArrayBuffer读取单个实体数据 - 子类必须实现
6129
+ * @param offset 在SharedArrayBuffer中的偏移位置(Float32索引)
6130
+ * @returns 实体数据或null
6131
+ */
6132
+ protected abstract readEntityFromBuffer(offset: number): TEntityData | null;
6133
+ /**
6134
+ * 获取SharedArrayBuffer处理函数 - 子类可选实现
6135
+ * 返回一个函数,该函数将被序列化到Worker中执行
6136
+ */
6137
+ protected getSharedArrayBufferProcessFunction?(): SharedArrayBufferProcessFunction;
6138
+ /**
6139
+ * 提取实体数据 - 子类必须实现
6140
+ *
6141
+ * 将Entity转换为可序列化的数据对象
6142
+ */
6143
+ protected abstract extractEntityData(entity: Entity): TEntityData;
6144
+ /**
6145
+ * Worker处理函数 - 子类必须实现
6146
+ *
6147
+ * 这个函数会被序列化并在Worker中执行,因此:
6148
+ * 1. 必须是纯函数,不能访问外部变量
6149
+ * 2. 不能使用闭包或this
6150
+ * 3. 只能使用标准JavaScript API
6151
+ */
6152
+ protected abstract workerProcess(entities: TEntityData[], deltaTime: number, systemConfig?: any): TEntityData[] | Promise<TEntityData[]>;
6153
+ /**
6154
+ * 应用处理结果 - 子类必须实现
6155
+ *
6156
+ * 将Worker处理的结果应用回Entity的组件
6157
+ */
6158
+ protected abstract applyResult(entity: Entity, result: TEntityData): void;
6159
+ /**
6160
+ * 更新Worker配置
6161
+ */
6162
+ updateConfig(newConfig: Partial<WorkerSystemConfig>): void;
6163
+ /**
6164
+ * 重新初始化整个 Worker 系统(包括 SharedArrayBuffer)
6165
+ */
6166
+ private reinitializeWorkerSystem;
6167
+ /**
6168
+ * 重新初始化 Worker 池(保持 SharedArrayBuffer)
6169
+ */
6170
+ private reinitializeWorkerPool;
6171
+ /**
6172
+ * 获取系统性能信息
6173
+ */
6174
+ getWorkerInfo(): {
6175
+ enabled: boolean;
6176
+ workerCount: number;
6177
+ entitiesPerWorker?: number;
6178
+ maxSystemWorkerCount: number;
6179
+ isProcessing: boolean;
6180
+ sharedArrayBufferSupported: boolean;
6181
+ sharedArrayBufferEnabled: boolean;
6182
+ currentMode: 'shared-buffer' | 'worker' | 'sync';
6183
+ };
6184
+ /**
6185
+ * 销毁系统时清理Worker池
6186
+ */
6187
+ protected onDestroy(): void;
6188
+ protected getLoggerName(): string;
6189
+ }
6190
+
5879
6191
  /**
5880
6192
  * 64位位集合类,用于高效的位操作
5881
6193
  * 支持最多64个位的设置、清除、查询和逻辑运算
@@ -6614,5 +6926,278 @@ declare class Time {
6614
6926
  static checkEvery(interval: number, lastTime: number): boolean;
6615
6927
  }
6616
6928
 
6617
- export { AsyncEventHandler$1 as AsyncEventHandler, BitMask64Utils, Bits, COMPONENT_TYPE_NAME, Colors, Component, ComponentDataCollector, ComponentPool, ComponentPoolManager, ComponentRegistry, ComponentSparseSet, ComponentStorage, ComponentTypeManager, ConsoleLogger, Core, DebugManager, ECSComponent, ECSEventType, ECSFluentAPI, ECSSystem, EVENT_TYPES, Emitter, EnableSoA, Entity, EntityDataCollector, EntityList, EntityProcessorList, EntitySystem, EventBus, EventHandler$1 as EventHandler, EventPriority, EventTypeValidator, Float32, Float64, FuncPack, GlobalEventBus, GlobalManager, HighPrecision, IdentifierPool, Int32, IntervalSystem, LogLevel, Logger, LoggerManager, Matcher, NumberExtension, PassiveSystem, PerformanceDataCollector, PerformanceMonitor, PerformanceWarningType, Pool, PoolManager, ProcessingSystem, QuerySystem, SYSTEM_TYPE_NAME, Scene, SceneDataCollector, SerializeMap, SoAStorage, SparseSet, SystemDataCollector, Time, Timer, TimerManager, TypeSafeEventSystem, TypeUtils, WebSocketManager, World, WorldManager, createECSAPI, createLogger, getComponentInstanceTypeName, getComponentTypeName, getSystemInstanceTypeName, getSystemTypeName, resetLoggerColors, setGlobalLogLevel, setLoggerColors };
6618
- export type { BitMask64Data, ComponentType$1 as ComponentType, EventListenerConfig, EventStats, IComponent, IComponentDebugData, IComponentEventData, ICoreConfig, IECSDebugConfig, IECSDebugData, IEntityDebugData, IEntityEventData, IEntityHierarchyNode, IEventBus, IEventData, IEventListenerConfig, IEventStats, ILogger, IPerformanceDebugData, IPerformanceEventData, IPoolable, IScene, ISceneConfig, ISceneDebugData, ISceneEventData, ISceneFactory, ISystemBase, ISystemDebugData, ISystemEventData, ITimer, IWorldConfig, IWorldManagerConfig, LoggerColorConfig, LoggerConfig, PerformanceData, PerformanceStats, PerformanceThresholds, PerformanceWarning, PoolStats };
6929
+ /**
6930
+ * 平台适配器接口
6931
+ * 用于适配不同的运行环境(浏览器、微信小游戏、字节跳动小游戏等)
6932
+ */
6933
+ interface IPlatformAdapter {
6934
+ /**
6935
+ * 平台名称
6936
+ */
6937
+ readonly name: string;
6938
+ /**
6939
+ * 平台版本信息
6940
+ */
6941
+ readonly version?: string;
6942
+ /**
6943
+ * 检查是否支持Worker
6944
+ */
6945
+ isWorkerSupported(): boolean;
6946
+ /**
6947
+ * 检查是否支持SharedArrayBuffer
6948
+ */
6949
+ isSharedArrayBufferSupported(): boolean;
6950
+ /**
6951
+ * 获取硬件并发数(CPU核心数)
6952
+ */
6953
+ getHardwareConcurrency(): number;
6954
+ /**
6955
+ * 创建Worker
6956
+ * @param script Worker脚本内容
6957
+ * @param options Worker选项
6958
+ */
6959
+ createWorker(script: string, options?: WorkerCreationOptions): PlatformWorker;
6960
+ /**
6961
+ * 创建SharedArrayBuffer
6962
+ * @param length 缓冲区大小(字节)
6963
+ */
6964
+ createSharedArrayBuffer(length: number): SharedArrayBuffer | null;
6965
+ /**
6966
+ * 获取高精度时间戳
6967
+ */
6968
+ getHighResTimestamp(): number;
6969
+ /**
6970
+ * 获取平台特定的配置
6971
+ */
6972
+ getPlatformConfig(): PlatformConfig;
6973
+ /**
6974
+ * 异步获取平台配置(包含需要异步获取的信息)
6975
+ */
6976
+ getPlatformConfigAsync?(): Promise<PlatformConfig>;
6977
+ }
6978
+ /**
6979
+ * Worker创建选项
6980
+ */
6981
+ interface WorkerCreationOptions {
6982
+ /**
6983
+ * Worker类型
6984
+ */
6985
+ type?: 'classic' | 'module';
6986
+ /**
6987
+ * 凭据模式
6988
+ */
6989
+ credentials?: 'omit' | 'same-origin' | 'include';
6990
+ /**
6991
+ * Worker名称(用于调试)
6992
+ */
6993
+ name?: string;
6994
+ }
6995
+ /**
6996
+ * 平台Worker接口
6997
+ */
6998
+ interface PlatformWorker {
6999
+ /**
7000
+ * 发送消息到Worker
7001
+ */
7002
+ postMessage(message: any, transfer?: Transferable[]): void;
7003
+ /**
7004
+ * 监听Worker消息
7005
+ */
7006
+ onMessage(handler: (event: {
7007
+ data: any;
7008
+ }) => void): void;
7009
+ /**
7010
+ * 监听Worker错误
7011
+ */
7012
+ onError(handler: (error: ErrorEvent) => void): void;
7013
+ /**
7014
+ * 终止Worker
7015
+ */
7016
+ terminate(): void;
7017
+ /**
7018
+ * Worker状态
7019
+ */
7020
+ readonly state: 'running' | 'terminated';
7021
+ }
7022
+ /**
7023
+ * 平台配置
7024
+ */
7025
+ interface PlatformConfig {
7026
+ /**
7027
+ * 最大Worker数量限制
7028
+ */
7029
+ maxWorkerCount: number;
7030
+ /**
7031
+ * 是否支持模块Worker
7032
+ */
7033
+ supportsModuleWorker: boolean;
7034
+ /**
7035
+ * 是否支持Transferable Objects
7036
+ */
7037
+ supportsTransferableObjects: boolean;
7038
+ /**
7039
+ * SharedArrayBuffer的最大大小限制(字节)
7040
+ */
7041
+ maxSharedArrayBufferSize?: number;
7042
+ /**
7043
+ * 平台特定的Worker脚本前缀(如果需要)
7044
+ */
7045
+ workerScriptPrefix?: string;
7046
+ /**
7047
+ * 平台特定的限制和特性
7048
+ */
7049
+ limitations?: {
7050
+ /**
7051
+ * 是否禁用eval(影响动态脚本创建)
7052
+ */
7053
+ noEval?: boolean;
7054
+ /**
7055
+ * 是否需要特殊的Worker初始化
7056
+ */
7057
+ requiresWorkerInit?: boolean;
7058
+ /**
7059
+ * 内存限制(字节)
7060
+ */
7061
+ memoryLimit?: number;
7062
+ /**
7063
+ * Worker是否不受支持(用于明确标记不支持Worker的平台)
7064
+ */
7065
+ workerNotSupported?: boolean;
7066
+ /**
7067
+ * Worker限制说明列表
7068
+ */
7069
+ workerLimitations?: string[];
7070
+ };
7071
+ /**
7072
+ * 平台特定的扩展属性
7073
+ */
7074
+ extensions?: Record<string, any>;
7075
+ }
7076
+ /**
7077
+ * 平台检测结果
7078
+ */
7079
+ interface PlatformDetectionResult {
7080
+ /**
7081
+ * 平台类型
7082
+ */
7083
+ platform: 'browser' | 'wechat-minigame' | 'bytedance-minigame' | 'alipay-minigame' | 'baidu-minigame' | 'nodejs' | 'unknown';
7084
+ /**
7085
+ * 是否确定检测结果
7086
+ */
7087
+ confident: boolean;
7088
+ /**
7089
+ * 检测到的特征
7090
+ */
7091
+ features: string[];
7092
+ /**
7093
+ * 建议使用的适配器类名
7094
+ */
7095
+ adapterClass?: string;
7096
+ }
7097
+
7098
+ /**
7099
+ * 平台检测器
7100
+ * 自动检测当前运行环境并返回对应的平台信息
7101
+ */
7102
+ declare class PlatformDetector {
7103
+ /**
7104
+ * 检测当前平台
7105
+ */
7106
+ static detect(): PlatformDetectionResult;
7107
+ /**
7108
+ * 检测是否为微信小游戏环境
7109
+ */
7110
+ private static isWeChatMiniGame;
7111
+ /**
7112
+ * 检测是否为字节跳动小游戏环境
7113
+ */
7114
+ private static isByteDanceMiniGame;
7115
+ /**
7116
+ * 检测是否为Node.js环境
7117
+ */
7118
+ private static isNodeJS;
7119
+ /**
7120
+ * 检测是否为支付宝小游戏环境
7121
+ */
7122
+ private static isAlipayMiniGame;
7123
+ /**
7124
+ * 检测是否为百度小游戏环境
7125
+ */
7126
+ private static isBaiduMiniGame;
7127
+ /**
7128
+ * 检测是否为浏览器环境
7129
+ */
7130
+ private static isBrowser;
7131
+ /**
7132
+ * 获取详细的环境信息(用于调试)
7133
+ */
7134
+ static getDetailedInfo(): Record<string, any>;
7135
+ }
7136
+
7137
+ /**
7138
+ * 平台管理器
7139
+ * 用户需要手动注册平台适配器
7140
+ */
7141
+ declare class PlatformManager {
7142
+ private static instance;
7143
+ private adapter;
7144
+ private readonly logger;
7145
+ private constructor();
7146
+ /**
7147
+ * 获取单例实例
7148
+ */
7149
+ static getInstance(): PlatformManager;
7150
+ /**
7151
+ * 获取当前平台适配器
7152
+ */
7153
+ getAdapter(): IPlatformAdapter;
7154
+ /**
7155
+ * 注册平台适配器
7156
+ */
7157
+ registerAdapter(adapter: IPlatformAdapter): void;
7158
+ /**
7159
+ * 检查是否已注册适配器
7160
+ */
7161
+ hasAdapter(): boolean;
7162
+ /**
7163
+ * 获取平台适配器信息(用于调试)
7164
+ */
7165
+ getAdapterInfo(): any;
7166
+ /**
7167
+ * 检查当前平台是否支持特定功能
7168
+ */
7169
+ supportsFeature(feature: 'worker' | 'shared-array-buffer' | 'transferable-objects' | 'module-worker'): boolean;
7170
+ /**
7171
+ * 获取基础的Worker配置信息(不做自动决策)
7172
+ * 用户应该根据自己的业务需求来配置Worker参数
7173
+ */
7174
+ getBasicWorkerConfig(): {
7175
+ platformSupportsWorker: boolean;
7176
+ platformSupportsSharedArrayBuffer: boolean;
7177
+ platformMaxWorkerCount: number;
7178
+ platformLimitations: any;
7179
+ };
7180
+ /**
7181
+ * 异步获取完整的平台配置信息(包含性能信息)
7182
+ */
7183
+ getFullPlatformConfig(): Promise<any>;
7184
+ }
7185
+
7186
+ /**
7187
+ * 平台适配模块导出
7188
+ */
7189
+
7190
+ declare function registerPlatformAdapter(adapter: IPlatformAdapter): void;
7191
+ declare function getCurrentAdapter(): IPlatformAdapter;
7192
+ declare function getBasicWorkerConfig(): {
7193
+ platformSupportsWorker: boolean;
7194
+ platformSupportsSharedArrayBuffer: boolean;
7195
+ platformMaxWorkerCount: number;
7196
+ platformLimitations: any;
7197
+ };
7198
+ declare function getFullPlatformConfig(): Promise<any>;
7199
+ declare function supportsFeature(feature: 'worker' | 'shared-array-buffer' | 'transferable-objects' | 'module-worker'): boolean;
7200
+ declare function hasAdapter(): boolean;
7201
+
7202
+ export { BitMask64Utils, Bits, COMPONENT_TYPE_NAME, Colors, Component, ComponentDataCollector, ComponentPool, ComponentPoolManager, ComponentRegistry, ComponentSparseSet, ComponentStorage, ComponentTypeManager, ConsoleLogger, Core, DebugManager, ECSComponent, ECSEventType, ECSFluentAPI, ECSSystem, EVENT_TYPES, Emitter, EnableSoA, Entity, EntityDataCollector, EntityList, EntityProcessorList, EntitySystem, EventBus, EventPriority, EventTypeValidator, Float32, Float64, FuncPack, GlobalEventBus, GlobalManager, HighPrecision, IdentifierPool, Int32, IntervalSystem, LogLevel, Logger, LoggerManager, Matcher, NumberExtension, PassiveSystem, PerformanceDataCollector, PerformanceMonitor, PerformanceWarningType, PlatformDetector, PlatformManager, Pool, PoolManager, ProcessingSystem, QuerySystem, SYSTEM_TYPE_NAME, Scene, SceneDataCollector, SerializeMap, SoAStorage, SparseSet, SystemDataCollector, Time, Timer, TimerManager, TypeSafeEventSystem, TypeUtils, WebSocketManager, WorkerEntitySystem, World, WorldManager, createECSAPI, createLogger, getBasicWorkerConfig, getComponentInstanceTypeName, getComponentTypeName, getCurrentAdapter, getFullPlatformConfig, getSystemInstanceTypeName, getSystemTypeName, hasAdapter, registerPlatformAdapter, resetLoggerColors, setGlobalLogLevel, setLoggerColors, supportsFeature };
7203
+ export type { BitMask64Data, ComponentType$1 as ComponentType, EventListenerConfig, EventStats, IComponent, IComponentDebugData, IComponentEventData, ICoreConfig, IECSDebugConfig, IECSDebugData, IEntityDebugData, IEntityEventData, IEntityHierarchyNode, IEventBus, IEventData, IEventListenerConfig, IEventStats, ILogger, IPerformanceDebugData, IPerformanceEventData, IPlatformAdapter, IPoolable, IScene, ISceneConfig, ISceneDebugData, ISceneEventData, ISceneFactory, ISystemBase, ISystemDebugData, ISystemEventData, ITimer, IWorldConfig, IWorldManagerConfig, LoggerColorConfig, LoggerConfig, PerformanceData, PerformanceStats, PerformanceThresholds, PerformanceWarning, PlatformConfig, PlatformDetectionResult, PlatformWorker, PoolStats, SharedArrayBufferProcessFunction, WorkerCreationOptions, WorkerProcessFunction, WorkerSystemConfig };