refactor: slim down EngineManager from 861 to 290 lines by removing passthrough proxy pattern

- EngineManager now only exposes public SDK API (initialize, loadModel, pause/resumeRendering, getEngineComponent, destroy)
- Internal managers access Engine component directly via this.engineComponent getter on BaseManager
- Non-manager components use registry.engine3d.getEngineComponent() for direct Engine access
- Replaced getEngine() with onRawEvent()/offRawEvent() for raw engine event access
- Migrated 62 call sites across 13 files (9 managers, 1 panel, 3 toolbar buttons)
- Updated all architecture docs, API docs, and README to reflect new patterns
This commit is contained in:
yuding
2026-03-05 11:15:57 +08:00
parent c3bd82c03a
commit b96e5f3262
28 changed files with 3786 additions and 6261 deletions

View File

@@ -38,12 +38,12 @@ export class WalkControlManager extends BaseManager {
// 打开漫游面板时,默认激活第一人称模式
console.log('[WalkControl] 打开漫游面板,激活第一人称模式');
this.registry.engine3d?.activateFirstPersonMode();
this.engineComponent?.activateFirstPersonMode();
this.panel = new WalkControlPanel({
onPlanViewToggle: (isActive) => {
console.log('[WalkControl] 小地图:', isActive);
this.registry.engine3d?.toggleMiniMap();
this.engineComponent?.toggleMiniMap();
this.emit('walk:plan-view-toggle', { isActive });
},
onPathModeToggle: (isActive) => {
@@ -66,17 +66,17 @@ export class WalkControlManager extends BaseManager {
onSpeedChange: (speed) => {
console.log('[WalkControl] 速度变化:', speed);
const engineSpeed = speed * 0.1;
this.registry.engine3d?.setWalkSpeed(engineSpeed);
this.engineComponent?.setWalkSpeed(engineSpeed);
this.emit('walk:speed-change', { speed });
},
onGravityToggle: (enabled) => {
console.log('[WalkControl] 重力:', enabled);
this.registry.engine3d?.setWalkGravity(enabled);
this.engineComponent?.setWalkGravity(enabled);
this.emit('walk:gravity-toggle', { enabled });
},
onCollisionToggle: (enabled) => {
console.log('[WalkControl] 碰撞:', enabled);
this.registry.engine3d?.setWalkCollision(enabled);
this.engineComponent?.setWalkCollision(enabled);
this.emit('walk:collision-toggle', { enabled });
},
onCharacterModelChange: (model) => {
@@ -111,7 +111,7 @@ export class WalkControlManager extends BaseManager {
this.pathManager?.hide();
console.log('[WalkControl] 关闭漫游面板,退出第一人称模式');
this.registry.engine3d?.deactivateFirstPersonMode();
this.engineComponent?.deactivateFirstPersonMode();
if (this.panel) {
this.panel.destroy();