MCPcopy Create free account
hub / github.com/esengine/esengine / ParticleRuntimeModule

Class ParticleRuntimeModule

packages/particle/src/ParticleRuntimeModule.ts:19–113  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17export { ParticleUpdateSystemToken } from './tokens';
18
19class 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

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected