| 26 | * 实现 IRuntimeModule 的 FairyGUI 集成模块 |
| 27 | */ |
| 28 | export class FGUIRuntimeModule implements IRuntimeModule { |
| 29 | private _renderSystem: FGUIRenderSystem | null = null; |
| 30 | private _loaderRegistered = false; |
| 31 | |
| 32 | /** |
| 33 | * Register components to ComponentRegistry |
| 34 | * 注册组件到 ComponentRegistry |
| 35 | */ |
| 36 | registerComponents(registry: IComponentRegistry): void { |
| 37 | registry.register(FGUIComponent); |
| 38 | } |
| 39 | |
| 40 | /** |
| 41 | * Create systems for scene |
| 42 | * 为场景创建系统 |
| 43 | */ |
| 44 | createSystems(scene: IScene, context: SystemContext): void { |
| 45 | // Get asset manager from service registry |
| 46 | const assetManager = context.services.get(AssetManagerToken); |
| 47 | |
| 48 | // Register FUI asset loader |
| 49 | if (!this._loaderRegistered && assetManager) { |
| 50 | const loader = new FUIAssetLoader(); |
| 51 | (assetManager as IAssetManager).registerLoader(FUI_ASSET_TYPE, loader); |
| 52 | this._loaderRegistered = true; |
| 53 | } |
| 54 | |
| 55 | // Create and add FGUIUpdateSystem |
| 56 | const updateSystem = new FGUIUpdateSystem(); |
| 57 | if (assetManager) { |
| 58 | updateSystem.setAssetManager(assetManager as IAssetManager); |
| 59 | } |
| 60 | scene.addSystem(updateSystem); |
| 61 | } |
| 62 | |
| 63 | /** |
| 64 | * Called after all systems are created |
| 65 | * 所有系统创建完成后调用 |
| 66 | */ |
| 67 | onSystemsCreated(_scene: IScene, context: SystemContext): void { |
| 68 | // Create render system (not an EntitySystem, handles its own update) |
| 69 | this._renderSystem = new FGUIRenderSystem(); |
| 70 | |
| 71 | // Set asset manager for the render system |
| 72 | const assetManager = context.services.get(AssetManagerToken); |
| 73 | if (assetManager) { |
| 74 | this._renderSystem.setAssetManager(assetManager as IAssetManager); |
| 75 | } |
| 76 | |
| 77 | // Bind Stage to canvas for input events |
| 78 | const canvas = context.services.get(CanvasElementToken); |
| 79 | if (canvas) { |
| 80 | Stage.inst.bindToCanvas(canvas); |
| 81 | } |
| 82 | |
| 83 | // Initialize dynamic font system with system default font |
| 84 | // 使用系统默认字体初始化动态字体系统 |
| 85 | this.initDynamicFonts(); |
nothing calls this directly
no outgoing calls
no test coverage detected