| 17 | export { ParticleUpdateSystemToken } from './tokens'; |
| 18 | |
| 19 | class ParticleRuntimeModule implements IRuntimeModule { |
| 20 | private _updateSystem: ParticleUpdateSystem | null = null; |
| 21 | private _loaderRegistered = false; |
| 22 | |
| 23 | registerComponents(registry: IComponentRegistry): void { |
| 24 | registry.register(ParticleSystemComponent); |
| 25 | registry.register(ClickFxComponent); |
| 26 | } |
| 27 | |
| 28 | createSystems(scene: IScene, context: SystemContext): void { |
| 29 | // 从服务注册表获取依赖 | Get dependencies from service registry |
| 30 | const assetManager = context.services.get(AssetManagerToken); |
| 31 | const transformType = context.services.get(TransformTypeToken); |
| 32 | const engineIntegration = context.services.get(EngineIntegrationToken); |
| 33 | const textureService = context.services.get(TextureServiceToken); |
| 34 | const coordinateService = context.services.get(CoordinateServiceToken); |
| 35 | const physics2DQuery = context.services.get(Physics2DQueryToken); |
| 36 | const renderSystem = context.services.get(RenderSystemToken); |
| 37 | |
| 38 | // 注册粒子资产加载器到上下文的 assetManager |
| 39 | // Register particle asset loader to context assetManager |
| 40 | if (!this._loaderRegistered && assetManager) { |
| 41 | const loader = new ParticleLoader(); |
| 42 | assetManager.registerLoader(ParticleAssetType, loader); |
| 43 | this._loaderRegistered = true; |
| 44 | console.log('[ParticleRuntimeModule] Registered ParticleLoader to context assetManager'); |
| 45 | } |
| 46 | |
| 47 | this._updateSystem = new ParticleUpdateSystem(); |
| 48 | |
| 49 | // 设置资产管理器 | Set asset manager |
| 50 | if (assetManager) { |
| 51 | this._updateSystem.setAssetManager(assetManager); |
| 52 | } |
| 53 | |
| 54 | // 设置 Transform 组件类型 | Set Transform component type |
| 55 | if (transformType) { |
| 56 | this._updateSystem.setTransformType(transformType); |
| 57 | } |
| 58 | |
| 59 | // 设置引擎集成(用于加载纹理)| Set engine integration (for loading textures) |
| 60 | if (engineIntegration) { |
| 61 | this._updateSystem.setEngineIntegration(engineIntegration); |
| 62 | } |
| 63 | |
| 64 | // 设置纹理服务(用于加载默认纹理)| Set texture service (for loading default texture) |
| 65 | if (textureService) { |
| 66 | this._updateSystem.setTextureService(textureService); |
| 67 | } |
| 68 | |
| 69 | // 设置 2D 物理查询(用于粒子与场景碰撞)| Set 2D physics query (for particle-scene collision) |
| 70 | if (physics2DQuery) { |
| 71 | this._updateSystem.setPhysics2DQuery(physics2DQuery); |
| 72 | } |
| 73 | |
| 74 | scene.addSystem(this._updateSystem); |
| 75 | |
| 76 | // 添加点击特效系统 | Add click FX system |
nothing calls this directly
no outgoing calls
no test coverage detected