@aura3d /核心
@aura3d/core 拥有引擎生命周期、调度脊柱、确定性时间步进、诊断、事件、日志、任务队列和一次性资源范围。它是根运行时包,不依赖于场景、渲染、物理、动画、资源、输入、音频、脚本、编辑器或仅用于浏览器的api。
公共API
Engine:插件初始化、调度程序执行、手动步进、启动/停止控制、事件、诊断、任务队列和资源处置的生命周期所有者。EngineConfig,resolveEngineConfig,ResolvedEngineConfig:针对固定步长计时、最大帧增量、时间尺度和可选的自动启动行为的有效运行时配置。EngineLoop,FrameContext使用的确定性框架循环Engine手动和requestanimationframe支持的执行。FixedStepAccumulator:固定步长蓄能器,具有最大步长箝位,用于确定性仿真相位。Scheduler,SystemPhase:显式有序的阶段调度程序,具有依赖性验证、重复拒绝、周期检测和跨阶段依赖性拒绝。TaskQueue:在引擎任务阶段刷新异步安全队列。EventBus:引擎生命周期、框架和错误信号使用的类型化事件发射器。Diagnostics:结构化度量/计数器快照支持。Logger:有作用域的运行时日志抽象。DisposableStack,ResourceScope确定性后进先出清理原语。VersionedSchema,MigrationRegistry,SaveSlot:独立于浏览器的模式验证,保存数据迁移,保存槽元数据/数据快照。ValidationError,LifecycleError为无效的配置、图形和生命周期操作键入错误类。
生命周期的合同
一个 Engine 开始于 created. 插件只能在这种状态下注册。调用 init() 转换通过 initializing 成 initialized、调用插件 init 按注册顺序排列的处理程序。如果任何插件初始化失败,已经初始化的插件处理器将以相反的顺序运行,引擎将转换为 failed.
调用 start() 仅从 initialized 或者 stopped;它启动配置好的循环,并转换到 running. 调用 stop() 从 running 停止循环并过渡到 stopped. 调用 step(delta) 从 created 初始化引擎,然后执行一个确定性框架 initialized, running,或者 stopped.
每一帧执行阶段的顺序如下:
PlatformTasks- 排队
TaskQueue工作 Fixed,每累积固定步一次UpdateSceneRenderPresentCleanup
调用 dispose() 是等幂的。如果引擎正在运行,它首先停止,然后处置插件资源和引擎拥有的 ResourceScope 条目、清除事件和转换到 disposed. 处理错误报告为 AggregateError.
验证
生命周期,调度器,固定步骤,插件回滚,确定性手动步进和帧诊断包括:
tests/unit/core/scheduler-engine.test.tstests/unit/core/config-time.test.tstests/unit/core/events-disposal-diagnostics.test.tstests/unit/core/versioned-serialization.test.tstests/integration/engine-loop.test.tstests/browser/core-raf-loop.spec.ts
包含公共导出和导入边界 pnpm verify:exports, pnpm verify:imports, pnpm verify:boundaries.