@combos-fun/plugin-renderer 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,7 +4,7 @@
4
4
  "category": "rendering",
5
5
  "dimension": "2d",
6
6
  "isCore": false,
7
- "keywords": ["pixi", "rendering", "canvas", "2d", "renderer-base", "container"],
7
+ "keywords": ["pixi", "rendering", "canvas", "2d", "renderer-base", "container", "transform2d"],
8
8
  "agentSkill": "./agent-skill.md",
9
9
  "requires": ["@combos-fun/engine", "@combos-fun/renderer-adapter"],
10
10
  "exports": [
@@ -497,7 +497,7 @@ var Renderer$1 = Renderer$2;
497
497
  /** Auto-generated by scripts/build-package.mjs — do not edit. */
498
498
  Object.assign(Renderer$1, {
499
499
  packageName: "@combos-fun/plugin-renderer",
500
- packageVersion: "0.1.0",
500
+ packageVersion: "0.1.1",
501
501
  });
502
502
 
503
503
  /* eslint-disable @typescript-eslint/no-unused-vars */
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-renderer.cjs.js","sources":["../lib/manager/RendererManager.ts","../lib/manager/ContainerManager.ts","../lib/Transform2D.ts","../lib/PixiHierarchy.ts","../lib/compressedTexture/ability.ts","../lib/System.ts","../lib/__combosPackageMeta.gen.ts","../lib/Renderer.ts","../lib/index.ts"],"sourcesContent":["import isEqual from 'lodash-es/isEqual';\nimport { GameObject, Game, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport Renderer from '../Renderer';\nimport RendererSystem from '../System';\n\nclass RendererManager {\n game: Game;\n rendererSystem: RendererSystem;\n constructor({ game, rendererSystem }) {\n this.game = game;\n this.rendererSystem = rendererSystem;\n }\n renderers: Renderer[] = [];\n register(...renderers: Renderer[]) {\n for (const renderer of renderers) {\n renderer.game = this.game;\n renderer.rendererManager = this.rendererSystem.rendererManager;\n renderer.containerManager = this.rendererSystem.containerManager;\n this.renderers.push(renderer);\n }\n }\n componentChanged(changes: ComponentChanged[]) {\n for (const changed of changes) {\n for (const renderer of this.renderers) {\n const props = renderer.observerInfo[changed.componentName];\n if (props) {\n if ([OBSERVER_TYPE.ADD, OBSERVER_TYPE.REMOVE].indexOf(changed.type) > -1) {\n try {\n renderer.componentChanged && renderer.componentChanged(changed);\n } catch (e) {\n console.error(`gameObject: ${changed.gameObject.name}, ${changed.componentName} is error.`, changed, e);\n }\n continue;\n }\n\n const index = props.findIndex(prop => {\n return isEqual(prop, changed.prop);\n });\n\n if (index > -1) {\n try {\n renderer.componentChanged && renderer.componentChanged(changed);\n } catch (e) {\n console.error(\n `gameObject: ${changed.gameObject && changed.gameObject.name}, ${\n changed.componentName\n } is componentChanged error.`,\n changed,\n e,\n );\n }\n }\n }\n }\n }\n }\n update(gameObject: GameObject) {\n for (const component of gameObject.components) {\n for (const renderer of this.renderers) {\n const cache = [];\n const props = renderer.observerInfo[component.name];\n if (props && cache.indexOf(gameObject) === -1) {\n cache.push(gameObject);\n try {\n renderer.rendererUpdate && renderer.rendererUpdate(gameObject);\n } catch (e) {\n console.info(`gameObject: ${gameObject.name}, ${component.name} is update error`, e);\n }\n }\n }\n }\n }\n}\nexport default RendererManager;\n","import { Point, ObservablePoint } from 'pixi.js';\nimport { Container } from '@combos-fun/renderer-adapter';\nimport type Transform2D from '../Transform2D';\n\nexport default class ContainerManager {\n containerMap: { [propName: number]: Container } = {};\n addContainer({ name, container }: { name: number; container: Container }) {\n this.containerMap[name] = container;\n }\n getContainer(name: number) {\n return this.containerMap[name];\n }\n removeContainer(name: number) {\n this.containerMap[name]?.destroy({ children: true });\n delete this.containerMap[name];\n }\n updateTransform({\n name,\n transform,\n parentSize,\n }: {\n name: number;\n transform: Transform2D;\n parentSize?: { width: number; height: number };\n }) {\n const container = this.containerMap[name];\n if (!container || !transform) return;\n const { anchor, origin, position, rotation, scale, size, skew } = transform;\n container.rotation = rotation;\n container.scale = scale as Point;\n container.pivot.x = size.width * origin.x;\n container.pivot.y = size.height * origin.y;\n container.skew = skew as ObservablePoint;\n let x = position.x;\n let y = position.y;\n if (parentSize) {\n x = x + parentSize.width * anchor.x;\n y = y + parentSize.height * anchor.y;\n }\n\n container.position = { x, y } as Point;\n }\n}\n","import { Component } from '@combos-fun/engine';\nimport type { ComponentParams } from '@combos-fun/engine';\nimport { Field } from '@combos-fun/inspector-decorator';\n\ninterface Vector2 {\n x: number;\n y: number;\n}\n\ninterface Size2 {\n width: number;\n height: number;\n}\n\nexport interface TransformMatrix {\n a: number;\n b: number;\n c: number;\n d: number;\n tx: number;\n ty: number;\n array?: number[];\n}\n\nexport interface Transform2DParams extends ComponentParams {\n position?: Vector2;\n size?: Size2;\n origin?: Vector2;\n anchor?: Vector2;\n scale?: Vector2;\n skew?: Vector2;\n rotation?: number;\n}\n\n/** 2D layout pose. Hierarchy lives on GameObject. */\nclass Transform2D extends Component<Transform2DParams> {\n static componentName: string = 'Transform2D';\n readonly name: string = 'Transform2D';\n\n worldTransform: TransformMatrix;\n\n init(params: Transform2DParams = {}) {\n const props = ['position', 'size', 'origin', 'anchor', 'scale', 'skew'];\n for (const key of props) {\n Object.assign(this[key], params[key]);\n }\n this.rotation = params.rotation ?? this.rotation;\n }\n\n @Field({\n type: 'vector2',\n step: 1,\n group: 'Transform2D',\n label: 'Position',\n description: 'Position on the design canvas (x right, y down).',\n })\n position: Vector2 = {x: 0, y: 0};\n\n @Field({\n type: 'size',\n step: 1,\n min: 0,\n group: 'Transform2D',\n label: 'Size',\n description: 'Width and height of the object in design pixels.',\n })\n size: Size2 = {width: 0, height: 0};\n\n @Field({\n type: 'vector2',\n step: 0.1,\n group: 'Transform2D',\n label: 'Origin',\n description: 'Local origin used for layout math.',\n })\n origin: Vector2 = {x: 0, y: 0};\n\n @Field({\n type: 'vector2',\n step: 0.1,\n group: 'Transform2D',\n label: 'Anchor',\n description: 'Anchor point (0–1) used when positioning and scaling.',\n })\n anchor: Vector2 = {x: 0, y: 0};\n\n @Field({\n type: 'vector2',\n step: 0.1,\n group: 'Transform2D',\n label: 'Scale',\n description: 'Scale multipliers on X and Y (1 = original size).',\n })\n scale: Vector2 = {x: 1, y: 1};\n\n @Field({\n type: 'vector2',\n step: 0.1,\n group: 'Transform2D',\n label: 'Skew',\n description: 'Skew amounts on X and Y.',\n })\n skew: Vector2 = {x: 0, y: 0};\n\n @Field({\n type: 'number',\n step: 0.1,\n group: 'Transform2D',\n label: 'Rotation',\n description: 'Rotation in radians.',\n editor: 'number-stepper',\n })\n rotation: number = 0;\n}\n\nexport default Transform2D;\n","import { decorators, ComponentChanged, OBSERVER_TYPE, Scene, LOAD_SCENE_MODE, GameObject } from '@combos-fun/engine';\nimport EventEmitter from 'eventemitter3';\nimport { Application, Container } from '@combos-fun/renderer-adapter';\nimport Render from './System';\nimport ContainerManager from './manager/ContainerManager';\nimport Transform2D from './Transform2D';\n\ntype RenderSortDirty = { sortDirty: boolean };\n\n@decorators.componentObserver({\n GameObject: ['parent'],\n Transform2D: [],\n})\nexport default class PixiHierarchy extends EventEmitter {\n name: string = 'PixiHierarchy';\n waitRemoveIds: number[] = [];\n system: Render;\n containerManager: ContainerManager;\n waitChangeScenes: {\n scene: Scene;\n mode: LOAD_SCENE_MODE;\n application: Application;\n }[] = [];\n constructor({ system, containerManager }) {\n super();\n this.containerManager = containerManager;\n this.init(system);\n }\n init(system: Render) {\n this.system = system;\n this.on('changeScene', ({ scene, mode, application }) => {\n this.waitChangeScenes.push({ scene, mode, application });\n });\n }\n update() {\n for (const id of this.waitRemoveIds) {\n this.containerManager.removeContainer(id);\n }\n this.waitRemoveIds = [];\n\n for (const sceneInfo of this.waitChangeScenes) {\n this.ensureSceneContainer(sceneInfo.scene);\n const container = this.containerManager.getContainer(sceneInfo.scene.id);\n if (container) {\n sceneInfo.application.stage.removeChildren();\n sceneInfo.application.stage.addChild(container);\n }\n }\n this.waitChangeScenes = [];\n }\n ensureSceneContainer(scene: Scene) {\n if (this.containerManager.getContainer(scene.id)) return;\n const container = new Container();\n container.label = scene.name;\n this.containerManager.addContainer({\n name: scene.id,\n container,\n });\n }\n ensureContainer(gameObject: GameObject, transform: Transform2D) {\n if (this.containerManager.getContainer(gameObject.id)) {\n transform.worldTransform = this.containerManager.getContainer(gameObject.id)\n .worldTransform as unknown as Transform2D['worldTransform'];\n return;\n }\n const container = new Container();\n container.label = gameObject.name;\n this.containerManager.addContainer({\n name: gameObject.id,\n container,\n });\n transform.worldTransform = container.worldTransform as unknown as Transform2D['worldTransform'];\n }\n componentChanged(changed: ComponentChanged) {\n if (changed.componentName === 'GameObject') {\n this.reparent(changed.gameObject);\n return;\n }\n if (changed.componentName !== 'Transform2D') return;\n if (changed.type === OBSERVER_TYPE.ADD) {\n this.ensureContainer(changed.gameObject, changed.component as Transform2D);\n this.reparent(changed.gameObject);\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.waitRemoveIds.push(changed.gameObject.id);\n }\n }\n reparent(gameObject?: GameObject) {\n if (!gameObject) return;\n const container = this.containerManager.getContainer(gameObject.id);\n if (!container) return;\n if (gameObject.parent) {\n const parentContainer = this.containerManager.getContainer(gameObject.parent.id);\n if (parentContainer && container.parent !== parentContainer) {\n parentContainer.addChild(container);\n }\n const render = gameObject.parent.getComponent('Render') as unknown as RenderSortDirty;\n if (render) {\n render.sortDirty = true;\n }\n } else if (container.parent) {\n const transform = gameObject.getComponent(Transform2D);\n if (transform) {\n delete transform.worldTransform;\n }\n container.parent.removeChild(container);\n }\n }\n destroy() {\n this.removeAllListeners();\n this.waitRemoveIds = null;\n this.waitChangeScenes = null;\n this.system = null;\n this.containerManager = null;\n }\n}\n","/**\n * Inspired by PixiJS v6\n */\nexport type CompressedTextureExtensions = {\n s3tc?: WEBGL_compressed_texture_s3tc,\n s3tc_sRGB: WEBGL_compressed_texture_s3tc_srgb,\n etc: WEBGL_compressed_texture_etc,\n etc1: WEBGL_compressed_texture_etc1,\n pvrtc: WEBKIT_WEBGL_compressed_texture_pvrtc,\n atc: WEBGL_compressed_texture_atc,\n astc: WEBGL_compressed_texture_astc\n};\nexport type CompressedTextureExtensionRef = keyof CompressedTextureExtensions;\nlet result = undefined;\nexport interface SuportedCompressedTexture {\n s3tc: boolean,\n etc: boolean,\n etc1: boolean,\n pvrtc: boolean,\n atc: boolean,\n astc: boolean,\n}\nexport function getSuportCompressedTextureFormats(gl: WebGLRenderingContext): SuportedCompressedTexture {\n if (result) return result;\n\n if (!gl) {\n // #if _DEBUG\n console.warn('WebGL not available for compressed textures. Silently failing.');\n // #endif\n\n return {\n s3tc: false,\n etc: false,\n etc1: false,\n pvrtc: false,\n atc: false,\n astc: false,\n };\n }\n\n result = {\n s3tc: !!gl.getExtension('WEBGL_compressed_texture_s3tc'),\n etc: !!gl.getExtension('WEBGL_compressed_texture_etc'),\n etc1: !!gl.getExtension('WEBGL_compressed_texture_etc1'),\n pvrtc: !!gl.getExtension('WEBGL_compressed_texture_pvrtc')\n || !!gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc'),\n atc: !!gl.getExtension('WEBGL_compressed_texture_atc'),\n astc: !!gl.getExtension('WEBGL_compressed_texture_astc')\n };\n\n try {\n console.log('Supported compressed texture formats: ' + Object.keys(result).filter((type) => result[type]).join(', '))\n } catch (e) { }\n return result;\n}","import { System, decorators, Game, LOAD_SCENE_MODE, PureObserverInfo } from '@combos-fun/engine';\nimport { Application } from '@combos-fun/renderer-adapter';\nimport RendererManager from './manager/RendererManager';\nimport ContainerManager from './manager/ContainerManager';\nimport PixiHierarchy from './PixiHierarchy';\nimport Transform2D from './Transform2D';\nimport { Ticker } from 'pixi.js';\nimport type { ApplicationOptions } from 'pixi.js';\nimport type { Renderer as PixiRenderer } from 'pixi.js';\nimport type { WebGLRenderer } from 'pixi.js';\nimport { registerCompressedTexture } from './compressedTexture';\nimport { SuportedCompressedTexture, getSuportCompressedTextureFormats } from './compressedTexture/ability';\n\nexport enum RENDERER_TYPE {\n UNKNOWN = 0,\n WEBGL = 1,\n CANVAS = 2,\n}\n\n@decorators.componentObserver({\n GameObject: ['parent'],\n Transform2D: [],\n})\nexport default class Renderer extends System<Partial<ApplicationOptions>> {\n static systemName: string = 'Renderer';\n params: Partial<ApplicationOptions>;\n rendererManager: RendererManager;\n containerManager: ContainerManager;\n application: Application | null = null;\n game: Game;\n hierarchy: PixiHierarchy;\n multiApps: Application[] = [];\n suportedCompressedTextureFormats: SuportedCompressedTexture;\n\n async init(params?: Partial<ApplicationOptions>) {\n this.params = params ?? {};\n const app = await this.createApplication(this.params);\n this.application = app;\n this.game.canvas = app.canvas;\n this.containerManager = new ContainerManager();\n this.rendererManager = new RendererManager({\n game: this.game,\n rendererSystem: this,\n });\n\n this.hierarchy = new PixiHierarchy({\n system: this,\n containerManager: this.containerManager,\n });\n this.game.on('sceneChanged', async ({ scene, mode, params: sceneParams }) => {\n let application: Application | null = this.application;\n if (mode === LOAD_SCENE_MODE.MULTI_CANVAS) {\n application = await this.createApplication(sceneParams);\n this.multiApps.push(application);\n }\n if (!application) {\n return;\n }\n scene.canvas = application.canvas;\n this.hierarchy.ensureSceneContainer(scene);\n this.hierarchy.emit('changeScene', {\n scene,\n mode,\n application,\n });\n });\n\n const gl = (app.renderer as WebGLRenderer).gl;\n if (gl) {\n this.suportedCompressedTextureFormats = getSuportCompressedTextureFormats(gl);\n registerCompressedTexture(gl);\n }\n }\n\n registerObserver(observerInfo: PureObserverInfo): void {\n const Ctor = this.constructor as typeof Renderer & { observerInfo: PureObserverInfo };\n if (!Ctor.observerInfo) {\n Ctor.observerInfo = {} as PureObserverInfo;\n }\n const thisObserverInfo = Ctor.observerInfo;\n for (const key in observerInfo) {\n if (!thisObserverInfo[key]) {\n thisObserverInfo[key] = [];\n }\n thisObserverInfo[key].push(...observerInfo[key]);\n }\n }\n\n private async createApplication(params: Partial<ApplicationOptions>): Promise<Application> {\n const initOptions: Partial<ApplicationOptions> = {\n ...params,\n autoStart: true,\n sharedTicker: true,\n };\n\n const app = new Application();\n try {\n await app.init(initOptions);\n } catch {\n await app.init({\n ...initOptions,\n preference: 'canvas',\n });\n }\n\n Ticker.shared.stop();\n Ticker.shared.autoStart = false;\n\n return app;\n }\n\n update() {\n const changes = this.componentObserver.clear();\n for (const changed of changes) {\n if (changed.componentName === 'GameObject' && changed.gameObject) {\n this.ensureTransform2D(changed.gameObject);\n if (changed.gameObject.parent) this.ensureTransform2D(changed.gameObject.parent);\n }\n this.hierarchy.componentChanged(changed);\n }\n if (!this.application) {\n return;\n }\n for (const gameObject of this.game.gameObjects) {\n const transform = gameObject.getComponent(Transform2D);\n if (transform) {\n this.containerManager.updateTransform({\n name: gameObject.id,\n transform,\n parentSize: gameObject.parent?.getComponent(Transform2D)?.size,\n });\n }\n this.rendererManager.update(gameObject);\n }\n }\n\n private ensureTransform2D(gameObject: Game['gameObjects'][number]) {\n if (!gameObject || gameObject === gameObject.scene) return;\n let transform = gameObject.getComponent(Transform2D);\n if (!transform) {\n transform = gameObject.addComponent(new Transform2D());\n }\n this.hierarchy.ensureContainer(gameObject, transform);\n this.hierarchy.reparent(gameObject);\n }\n\n lateUpdate(e) {\n if (!this.application) {\n return;\n }\n this.hierarchy.update();\n this.application.ticker.update(e.time);\n }\n\n onDestroy() {\n this.application?.destroy();\n for (const app of this.multiApps) {\n app && app.destroy();\n }\n this.hierarchy.destroy();\n this.hierarchy = null;\n this.params = null;\n this.rendererManager = null;\n this.containerManager = null;\n this.application = null;\n this.game = null;\n this.multiApps = null;\n }\n\n resize(width, height) {\n if (!this.application) {\n return;\n }\n this.params = { ...this.params, width, height };\n this.application.renderer.resize(width, height);\n }\n}\n","/** Auto-generated by scripts/build-package.mjs — do not edit. */\n\nimport Renderer from './System';\n\nObject.assign(Renderer, {\n packageName: \"@combos-fun/plugin-renderer\",\n packageVersion: \"0.1.0\",\n});\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport { GameObject, Game, PureObserverInfo, ComponentChanged, System, UpdateParams } from '@combos-fun/engine';\nimport ContainerManager from './manager/ContainerManager';\nimport RendererManager from './manager/RendererManager';\n\nexport default class Renderer<T extends {} = {}> extends System<T> {\n /**\n * Renderer name\n */\n name: string;\n\n /**\n * currentGame\n */\n game: Game;\n\n /**\n * observer component props info\n */\n static observerInfo: PureObserverInfo;\n\n /**\n * observer component props info\n */\n observerInfo: PureObserverInfo;\n\n /**\n * containerManager\n */\n containerManager: ContainerManager;\n rendererManager: RendererManager;\n\n constructor(params?: T) {\n super(params);\n const Ctor = this.constructor as typeof Renderer & { observerInfo: PureObserverInfo };\n this.observerInfo = Ctor.observerInfo;\n }\n\n // init(arg?: any): void;\n\n /**\n * Called when an observed component property changes.\n */\n componentChanged(_changed: ComponentChanged) { }\n\n /**\n * Called every frame.\n * @param _gameObject gameObject\n */\n rendererUpdate(_gameObject: GameObject) { }\n\n override update(e?: UpdateParams): void {\n const changes = this.componentObserver.clear();\n for (const changed of changes) {\n this.componentChanged(changed);\n }\n }\n\n protected asyncIdMap: Record<number, number> = {}\n\n protected increaseAsyncId(id: number) {\n this.asyncIdMap[id] = (this.asyncIdMap[id] || 0) + 1;\n return this.asyncIdMap[id];\n }\n\n protected validateAsyncId(id: number, asyncId: number) {\n return this.asyncIdMap[id] === asyncId;\n }\n}\n","import RendererSystem, { RENDERER_TYPE } from './System';\nimport RendererManager from './manager/RendererManager';\nimport ContainerManager from './manager/ContainerManager';\nimport Renderer from './Renderer';\nimport Transform2D from './Transform2D';\n\n/** Shared resource cache key separator used across renderer plugins */\nexport const RESOURCE_KEY_SPLIT = '_s|r|c_';\n\nexport type { Transform2DParams, TransformMatrix } from './Transform2D';\nexport { RendererManager, ContainerManager, RendererSystem, RENDERER_TYPE, Renderer, Transform2D };\n\n"],"names":["OBSERVER_TYPE","isEqual","Component","__decorate","Field","PixiHierarchy","EventEmitter","Container","decorators","RENDERER_TYPE","Renderer","System","LOAD_SCENE_MODE","Application","Ticker"],"mappings":"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"}
1
+ {"version":3,"file":"plugin-renderer.cjs.js","sources":["../lib/manager/RendererManager.ts","../lib/manager/ContainerManager.ts","../lib/Transform2D.ts","../lib/PixiHierarchy.ts","../lib/compressedTexture/ability.ts","../lib/System.ts","../lib/__combosPackageMeta.gen.ts","../lib/Renderer.ts","../lib/index.ts"],"sourcesContent":["import isEqual from 'lodash-es/isEqual';\nimport { GameObject, Game, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport Renderer from '../Renderer';\nimport RendererSystem from '../System';\n\nclass RendererManager {\n game: Game;\n rendererSystem: RendererSystem;\n constructor({ game, rendererSystem }) {\n this.game = game;\n this.rendererSystem = rendererSystem;\n }\n renderers: Renderer[] = [];\n register(...renderers: Renderer[]) {\n for (const renderer of renderers) {\n renderer.game = this.game;\n renderer.rendererManager = this.rendererSystem.rendererManager;\n renderer.containerManager = this.rendererSystem.containerManager;\n this.renderers.push(renderer);\n }\n }\n componentChanged(changes: ComponentChanged[]) {\n for (const changed of changes) {\n for (const renderer of this.renderers) {\n const props = renderer.observerInfo[changed.componentName];\n if (props) {\n if ([OBSERVER_TYPE.ADD, OBSERVER_TYPE.REMOVE].indexOf(changed.type) > -1) {\n try {\n renderer.componentChanged && renderer.componentChanged(changed);\n } catch (e) {\n console.error(`gameObject: ${changed.gameObject.name}, ${changed.componentName} is error.`, changed, e);\n }\n continue;\n }\n\n const index = props.findIndex(prop => {\n return isEqual(prop, changed.prop);\n });\n\n if (index > -1) {\n try {\n renderer.componentChanged && renderer.componentChanged(changed);\n } catch (e) {\n console.error(\n `gameObject: ${changed.gameObject && changed.gameObject.name}, ${\n changed.componentName\n } is componentChanged error.`,\n changed,\n e,\n );\n }\n }\n }\n }\n }\n }\n update(gameObject: GameObject) {\n for (const component of gameObject.components) {\n for (const renderer of this.renderers) {\n const cache = [];\n const props = renderer.observerInfo[component.name];\n if (props && cache.indexOf(gameObject) === -1) {\n cache.push(gameObject);\n try {\n renderer.rendererUpdate && renderer.rendererUpdate(gameObject);\n } catch (e) {\n console.info(`gameObject: ${gameObject.name}, ${component.name} is update error`, e);\n }\n }\n }\n }\n }\n}\nexport default RendererManager;\n","import { Point, ObservablePoint } from 'pixi.js';\nimport { Container } from '@combos-fun/renderer-adapter';\nimport type Transform2D from '../Transform2D';\n\nexport default class ContainerManager {\n containerMap: { [propName: number]: Container } = {};\n addContainer({ name, container }: { name: number; container: Container }) {\n this.containerMap[name] = container;\n }\n getContainer(name: number) {\n return this.containerMap[name];\n }\n removeContainer(name: number) {\n this.containerMap[name]?.destroy({ children: true });\n delete this.containerMap[name];\n }\n updateTransform({\n name,\n transform,\n parentSize,\n }: {\n name: number;\n transform: Transform2D;\n parentSize?: { width: number; height: number };\n }) {\n const container = this.containerMap[name];\n if (!container || !transform) return;\n const { anchor, origin, position, rotation, scale, size, skew } = transform;\n container.rotation = rotation;\n container.scale = scale as Point;\n container.pivot.x = size.width * origin.x;\n container.pivot.y = size.height * origin.y;\n container.skew = skew as ObservablePoint;\n let x = position.x;\n let y = position.y;\n if (parentSize) {\n x = x + parentSize.width * anchor.x;\n y = y + parentSize.height * anchor.y;\n }\n\n container.position = { x, y } as Point;\n }\n}\n","import { Component } from '@combos-fun/engine';\nimport type { ComponentParams } from '@combos-fun/engine';\nimport { Field } from '@combos-fun/inspector-decorator';\n\ninterface Vector2 {\n x: number;\n y: number;\n}\n\ninterface Size2 {\n width: number;\n height: number;\n}\n\nexport interface TransformMatrix {\n a: number;\n b: number;\n c: number;\n d: number;\n tx: number;\n ty: number;\n array?: number[];\n}\n\nexport interface Transform2DParams extends ComponentParams {\n position?: Vector2;\n size?: Size2;\n origin?: Vector2;\n anchor?: Vector2;\n scale?: Vector2;\n skew?: Vector2;\n rotation?: number;\n}\n\n/** 2D layout pose. Hierarchy lives on GameObject. */\nclass Transform2D extends Component<Transform2DParams> {\n static componentName: string = 'Transform2D';\n readonly name: string = 'Transform2D';\n\n worldTransform: TransformMatrix;\n\n init(params: Transform2DParams = {}) {\n const props = ['position', 'size', 'origin', 'anchor', 'scale', 'skew'];\n for (const key of props) {\n Object.assign(this[key], params[key]);\n }\n this.rotation = params.rotation ?? this.rotation;\n }\n\n @Field({\n type: 'vector2',\n step: 1,\n group: 'Transform2D',\n label: 'Position',\n description: 'Position on the design canvas (x right, y down).',\n })\n position: Vector2 = {x: 0, y: 0};\n\n @Field({\n type: 'size',\n step: 1,\n min: 0,\n group: 'Transform2D',\n label: 'Size',\n description: 'Width and height of the object in design pixels.',\n })\n size: Size2 = {width: 0, height: 0};\n\n @Field({\n type: 'vector2',\n step: 0.1,\n group: 'Transform2D',\n label: 'Origin',\n description: 'Local origin used for layout math.',\n })\n origin: Vector2 = {x: 0, y: 0};\n\n @Field({\n type: 'vector2',\n step: 0.1,\n group: 'Transform2D',\n label: 'Anchor',\n description: 'Anchor point (0–1) used when positioning and scaling.',\n })\n anchor: Vector2 = {x: 0, y: 0};\n\n @Field({\n type: 'vector2',\n step: 0.1,\n group: 'Transform2D',\n label: 'Scale',\n description: 'Scale multipliers on X and Y (1 = original size).',\n })\n scale: Vector2 = {x: 1, y: 1};\n\n @Field({\n type: 'vector2',\n step: 0.1,\n group: 'Transform2D',\n label: 'Skew',\n description: 'Skew amounts on X and Y.',\n })\n skew: Vector2 = {x: 0, y: 0};\n\n @Field({\n type: 'number',\n step: 0.1,\n group: 'Transform2D',\n label: 'Rotation',\n description: 'Rotation in radians.',\n editor: 'number-stepper',\n })\n rotation: number = 0;\n}\n\nexport default Transform2D;\n","import { decorators, ComponentChanged, OBSERVER_TYPE, Scene, LOAD_SCENE_MODE, GameObject } from '@combos-fun/engine';\nimport EventEmitter from 'eventemitter3';\nimport { Application, Container } from '@combos-fun/renderer-adapter';\nimport Render from './System';\nimport ContainerManager from './manager/ContainerManager';\nimport Transform2D from './Transform2D';\n\ntype RenderSortDirty = { sortDirty: boolean };\n\n@decorators.componentObserver({\n GameObject: ['parent'],\n Transform2D: [],\n})\nexport default class PixiHierarchy extends EventEmitter {\n name: string = 'PixiHierarchy';\n waitRemoveIds: number[] = [];\n system: Render;\n containerManager: ContainerManager;\n waitChangeScenes: {\n scene: Scene;\n mode: LOAD_SCENE_MODE;\n application: Application;\n }[] = [];\n constructor({ system, containerManager }) {\n super();\n this.containerManager = containerManager;\n this.init(system);\n }\n init(system: Render) {\n this.system = system;\n this.on('changeScene', ({ scene, mode, application }) => {\n this.waitChangeScenes.push({ scene, mode, application });\n });\n }\n update() {\n for (const id of this.waitRemoveIds) {\n this.containerManager.removeContainer(id);\n }\n this.waitRemoveIds = [];\n\n for (const sceneInfo of this.waitChangeScenes) {\n this.ensureSceneContainer(sceneInfo.scene);\n const container = this.containerManager.getContainer(sceneInfo.scene.id);\n if (container) {\n sceneInfo.application.stage.removeChildren();\n sceneInfo.application.stage.addChild(container);\n }\n }\n this.waitChangeScenes = [];\n }\n ensureSceneContainer(scene: Scene) {\n if (this.containerManager.getContainer(scene.id)) return;\n const container = new Container();\n container.label = scene.name;\n this.containerManager.addContainer({\n name: scene.id,\n container,\n });\n }\n ensureContainer(gameObject: GameObject, transform: Transform2D) {\n if (this.containerManager.getContainer(gameObject.id)) {\n transform.worldTransform = this.containerManager.getContainer(gameObject.id)\n .worldTransform as unknown as Transform2D['worldTransform'];\n return;\n }\n const container = new Container();\n container.label = gameObject.name;\n this.containerManager.addContainer({\n name: gameObject.id,\n container,\n });\n transform.worldTransform = container.worldTransform as unknown as Transform2D['worldTransform'];\n }\n componentChanged(changed: ComponentChanged) {\n if (changed.componentName === 'GameObject') {\n this.reparent(changed.gameObject);\n return;\n }\n if (changed.componentName !== 'Transform2D') return;\n if (changed.type === OBSERVER_TYPE.ADD) {\n this.ensureContainer(changed.gameObject, changed.component as Transform2D);\n this.reparent(changed.gameObject);\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.waitRemoveIds.push(changed.gameObject.id);\n }\n }\n reparent(gameObject?: GameObject) {\n if (!gameObject) return;\n const container = this.containerManager.getContainer(gameObject.id);\n if (!container) return;\n if (gameObject.parent) {\n const parentContainer = this.containerManager.getContainer(gameObject.parent.id);\n if (parentContainer && container.parent !== parentContainer) {\n parentContainer.addChild(container);\n }\n const render = gameObject.parent.getComponent('Render') as unknown as RenderSortDirty;\n if (render) {\n render.sortDirty = true;\n }\n } else if (container.parent) {\n const transform = gameObject.getComponent(Transform2D);\n if (transform) {\n delete transform.worldTransform;\n }\n container.parent.removeChild(container);\n }\n }\n destroy() {\n this.removeAllListeners();\n this.waitRemoveIds = null;\n this.waitChangeScenes = null;\n this.system = null;\n this.containerManager = null;\n }\n}\n","/**\n * Inspired by PixiJS v6\n */\nexport type CompressedTextureExtensions = {\n s3tc?: WEBGL_compressed_texture_s3tc,\n s3tc_sRGB: WEBGL_compressed_texture_s3tc_srgb,\n etc: WEBGL_compressed_texture_etc,\n etc1: WEBGL_compressed_texture_etc1,\n pvrtc: WEBKIT_WEBGL_compressed_texture_pvrtc,\n atc: WEBGL_compressed_texture_atc,\n astc: WEBGL_compressed_texture_astc\n};\nexport type CompressedTextureExtensionRef = keyof CompressedTextureExtensions;\nlet result = undefined;\nexport interface SuportedCompressedTexture {\n s3tc: boolean,\n etc: boolean,\n etc1: boolean,\n pvrtc: boolean,\n atc: boolean,\n astc: boolean,\n}\nexport function getSuportCompressedTextureFormats(gl: WebGLRenderingContext): SuportedCompressedTexture {\n if (result) return result;\n\n if (!gl) {\n // #if _DEBUG\n console.warn('WebGL not available for compressed textures. Silently failing.');\n // #endif\n\n return {\n s3tc: false,\n etc: false,\n etc1: false,\n pvrtc: false,\n atc: false,\n astc: false,\n };\n }\n\n result = {\n s3tc: !!gl.getExtension('WEBGL_compressed_texture_s3tc'),\n etc: !!gl.getExtension('WEBGL_compressed_texture_etc'),\n etc1: !!gl.getExtension('WEBGL_compressed_texture_etc1'),\n pvrtc: !!gl.getExtension('WEBGL_compressed_texture_pvrtc')\n || !!gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc'),\n atc: !!gl.getExtension('WEBGL_compressed_texture_atc'),\n astc: !!gl.getExtension('WEBGL_compressed_texture_astc')\n };\n\n try {\n console.log('Supported compressed texture formats: ' + Object.keys(result).filter((type) => result[type]).join(', '))\n } catch (e) { }\n return result;\n}","import { System, decorators, Game, LOAD_SCENE_MODE, PureObserverInfo } from '@combos-fun/engine';\nimport { Application } from '@combos-fun/renderer-adapter';\nimport RendererManager from './manager/RendererManager';\nimport ContainerManager from './manager/ContainerManager';\nimport PixiHierarchy from './PixiHierarchy';\nimport Transform2D from './Transform2D';\nimport { Ticker } from 'pixi.js';\nimport type { ApplicationOptions } from 'pixi.js';\nimport type { Renderer as PixiRenderer } from 'pixi.js';\nimport type { WebGLRenderer } from 'pixi.js';\nimport { registerCompressedTexture } from './compressedTexture';\nimport { SuportedCompressedTexture, getSuportCompressedTextureFormats } from './compressedTexture/ability';\n\nexport enum RENDERER_TYPE {\n UNKNOWN = 0,\n WEBGL = 1,\n CANVAS = 2,\n}\n\n@decorators.componentObserver({\n GameObject: ['parent'],\n Transform2D: [],\n})\nexport default class Renderer extends System<Partial<ApplicationOptions>> {\n static systemName: string = 'Renderer';\n params: Partial<ApplicationOptions>;\n rendererManager: RendererManager;\n containerManager: ContainerManager;\n application: Application | null = null;\n game: Game;\n hierarchy: PixiHierarchy;\n multiApps: Application[] = [];\n suportedCompressedTextureFormats: SuportedCompressedTexture;\n\n async init(params?: Partial<ApplicationOptions>) {\n this.params = params ?? {};\n const app = await this.createApplication(this.params);\n this.application = app;\n this.game.canvas = app.canvas;\n this.containerManager = new ContainerManager();\n this.rendererManager = new RendererManager({\n game: this.game,\n rendererSystem: this,\n });\n\n this.hierarchy = new PixiHierarchy({\n system: this,\n containerManager: this.containerManager,\n });\n this.game.on('sceneChanged', async ({ scene, mode, params: sceneParams }) => {\n let application: Application | null = this.application;\n if (mode === LOAD_SCENE_MODE.MULTI_CANVAS) {\n application = await this.createApplication(sceneParams);\n this.multiApps.push(application);\n }\n if (!application) {\n return;\n }\n scene.canvas = application.canvas;\n this.hierarchy.ensureSceneContainer(scene);\n this.hierarchy.emit('changeScene', {\n scene,\n mode,\n application,\n });\n });\n\n const gl = (app.renderer as WebGLRenderer).gl;\n if (gl) {\n this.suportedCompressedTextureFormats = getSuportCompressedTextureFormats(gl);\n registerCompressedTexture(gl);\n }\n }\n\n registerObserver(observerInfo: PureObserverInfo): void {\n const Ctor = this.constructor as typeof Renderer & { observerInfo: PureObserverInfo };\n if (!Ctor.observerInfo) {\n Ctor.observerInfo = {} as PureObserverInfo;\n }\n const thisObserverInfo = Ctor.observerInfo;\n for (const key in observerInfo) {\n if (!thisObserverInfo[key]) {\n thisObserverInfo[key] = [];\n }\n thisObserverInfo[key].push(...observerInfo[key]);\n }\n }\n\n private async createApplication(params: Partial<ApplicationOptions>): Promise<Application> {\n const initOptions: Partial<ApplicationOptions> = {\n ...params,\n autoStart: true,\n sharedTicker: true,\n };\n\n const app = new Application();\n try {\n await app.init(initOptions);\n } catch {\n await app.init({\n ...initOptions,\n preference: 'canvas',\n });\n }\n\n Ticker.shared.stop();\n Ticker.shared.autoStart = false;\n\n return app;\n }\n\n update() {\n const changes = this.componentObserver.clear();\n for (const changed of changes) {\n if (changed.componentName === 'GameObject' && changed.gameObject) {\n this.ensureTransform2D(changed.gameObject);\n if (changed.gameObject.parent) this.ensureTransform2D(changed.gameObject.parent);\n }\n this.hierarchy.componentChanged(changed);\n }\n if (!this.application) {\n return;\n }\n for (const gameObject of this.game.gameObjects) {\n const transform = gameObject.getComponent(Transform2D);\n if (transform) {\n this.containerManager.updateTransform({\n name: gameObject.id,\n transform,\n parentSize: gameObject.parent?.getComponent(Transform2D)?.size,\n });\n }\n this.rendererManager.update(gameObject);\n }\n }\n\n private ensureTransform2D(gameObject: Game['gameObjects'][number]) {\n if (!gameObject || gameObject === gameObject.scene) return;\n let transform = gameObject.getComponent(Transform2D);\n if (!transform) {\n transform = gameObject.addComponent(new Transform2D());\n }\n this.hierarchy.ensureContainer(gameObject, transform);\n this.hierarchy.reparent(gameObject);\n }\n\n lateUpdate(e) {\n if (!this.application) {\n return;\n }\n this.hierarchy.update();\n this.application.ticker.update(e.time);\n }\n\n onDestroy() {\n this.application?.destroy();\n for (const app of this.multiApps) {\n app && app.destroy();\n }\n this.hierarchy.destroy();\n this.hierarchy = null;\n this.params = null;\n this.rendererManager = null;\n this.containerManager = null;\n this.application = null;\n this.game = null;\n this.multiApps = null;\n }\n\n resize(width, height) {\n if (!this.application) {\n return;\n }\n this.params = { ...this.params, width, height };\n this.application.renderer.resize(width, height);\n }\n}\n","/** Auto-generated by scripts/build-package.mjs — do not edit. */\n\nimport Renderer from './System';\n\nObject.assign(Renderer, {\n packageName: \"@combos-fun/plugin-renderer\",\n packageVersion: \"0.1.1\",\n});\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport { GameObject, Game, PureObserverInfo, ComponentChanged, System, UpdateParams } from '@combos-fun/engine';\nimport ContainerManager from './manager/ContainerManager';\nimport RendererManager from './manager/RendererManager';\n\nexport default class Renderer<T extends {} = {}> extends System<T> {\n /**\n * Renderer name\n */\n name: string;\n\n /**\n * currentGame\n */\n game: Game;\n\n /**\n * observer component props info\n */\n static observerInfo: PureObserverInfo;\n\n /**\n * observer component props info\n */\n observerInfo: PureObserverInfo;\n\n /**\n * containerManager\n */\n containerManager: ContainerManager;\n rendererManager: RendererManager;\n\n constructor(params?: T) {\n super(params);\n const Ctor = this.constructor as typeof Renderer & { observerInfo: PureObserverInfo };\n this.observerInfo = Ctor.observerInfo;\n }\n\n // init(arg?: any): void;\n\n /**\n * Called when an observed component property changes.\n */\n componentChanged(_changed: ComponentChanged) { }\n\n /**\n * Called every frame.\n * @param _gameObject gameObject\n */\n rendererUpdate(_gameObject: GameObject) { }\n\n override update(e?: UpdateParams): void {\n const changes = this.componentObserver.clear();\n for (const changed of changes) {\n this.componentChanged(changed);\n }\n }\n\n protected asyncIdMap: Record<number, number> = {}\n\n protected increaseAsyncId(id: number) {\n this.asyncIdMap[id] = (this.asyncIdMap[id] || 0) + 1;\n return this.asyncIdMap[id];\n }\n\n protected validateAsyncId(id: number, asyncId: number) {\n return this.asyncIdMap[id] === asyncId;\n }\n}\n","import RendererSystem, { RENDERER_TYPE } from './System';\nimport RendererManager from './manager/RendererManager';\nimport ContainerManager from './manager/ContainerManager';\nimport Renderer from './Renderer';\nimport Transform2D from './Transform2D';\n\n/** Shared resource cache key separator used across renderer plugins */\nexport const RESOURCE_KEY_SPLIT = '_s|r|c_';\n\nexport type { Transform2DParams, TransformMatrix } from './Transform2D';\nexport { RendererManager, ContainerManager, RendererSystem, RENDERER_TYPE, Renderer, Transform2D };\n\n"],"names":["OBSERVER_TYPE","isEqual","Component","__decorate","Field","PixiHierarchy","EventEmitter","Container","decorators","RENDERER_TYPE","Renderer","System","LOAD_SCENE_MODE","Application","Ticker"],"mappings":"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"}
@@ -1 +1 @@
1
- "use strict";var e=require("tslib"),t=require("@combos-fun/engine"),n=require("@combos-fun/renderer-adapter"),r=require("lodash-es/isEqual"),o=require("eventemitter3"),a=require("@combos-fun/inspector-decorator"),s=require("pixi.js");function i(e){return e&&e.__esModule?e:{default:e}}var c=i(r),p=i(o);class h{constructor({game:e,rendererSystem:t}){this.renderers=[],this.game=e,this.rendererSystem=t}register(...e){for(const t of e)t.game=this.game,t.rendererManager=this.rendererSystem.rendererManager,t.containerManager=this.rendererSystem.containerManager,this.renderers.push(t)}componentChanged(e){for(const n of e)for(const e of this.renderers){const r=e.observerInfo[n.componentName];if(r){if([t.OBSERVER_TYPE.ADD,t.OBSERVER_TYPE.REMOVE].indexOf(n.type)>-1){try{e.componentChanged&&e.componentChanged(n)}catch(e){console.error(`gameObject: ${n.gameObject.name}, ${n.componentName} is error.`,n,e)}continue}if(r.findIndex(e=>c.default(e,n.prop))>-1)try{e.componentChanged&&e.componentChanged(n)}catch(e){console.error(`gameObject: ${n.gameObject&&n.gameObject.name}, ${n.componentName} is componentChanged error.`,n,e)}}}}update(e){for(const t of e.components)for(const n of this.renderers){const r=[];if(n.observerInfo[t.name]&&-1===r.indexOf(e)){r.push(e);try{n.rendererUpdate&&n.rendererUpdate(e)}catch(n){console.info(`gameObject: ${e.name}, ${t.name} is update error`,n)}}}}}class d{constructor(){this.containerMap={}}addContainer({name:e,container:t}){this.containerMap[e]=t}getContainer(e){return this.containerMap[e]}removeContainer(e){this.containerMap[e]?.destroy({children:!0}),delete this.containerMap[e]}updateTransform({name:e,transform:t,parentSize:n}){const r=this.containerMap[e];if(!r||!t)return;const{anchor:o,origin:a,position:s,rotation:i,scale:c,size:p,skew:h}=t;r.rotation=i,r.scale=c,r.pivot.x=p.width*a.x,r.pivot.y=p.height*a.y,r.skew=h;let d=s.x,m=s.y;n&&(d+=n.width*o.x,m+=n.height*o.y),r.position={x:d,y:m}}}class m extends t.Component{constructor(){super(...arguments),this.name="Transform2D",this.position={x:0,y:0},this.size={width:0,height:0},this.origin={x:0,y:0},this.anchor={x:0,y:0},this.scale={x:1,y:1},this.skew={x:0,y:0},this.rotation=0}static{this.componentName="Transform2D"}init(e={}){const t=["position","size","origin","anchor","scale","skew"];for(const n of t)Object.assign(this[n],e[n]);this.rotation=e.rotation??this.rotation}}e.__decorate([a.Field({type:"vector2",step:1,group:"Transform2D",label:"Position",description:"Position on the design canvas (x right, y down)."})],m.prototype,"position",void 0),e.__decorate([a.Field({type:"size",step:1,min:0,group:"Transform2D",label:"Size",description:"Width and height of the object in design pixels."})],m.prototype,"size",void 0),e.__decorate([a.Field({type:"vector2",step:.1,group:"Transform2D",label:"Origin",description:"Local origin used for layout math."})],m.prototype,"origin",void 0),e.__decorate([a.Field({type:"vector2",step:.1,group:"Transform2D",label:"Anchor",description:"Anchor point (0–1) used when positioning and scaling."})],m.prototype,"anchor",void 0),e.__decorate([a.Field({type:"vector2",step:.1,group:"Transform2D",label:"Scale",description:"Scale multipliers on X and Y (1 = original size)."})],m.prototype,"scale",void 0),e.__decorate([a.Field({type:"vector2",step:.1,group:"Transform2D",label:"Skew",description:"Skew amounts on X and Y."})],m.prototype,"skew",void 0),e.__decorate([a.Field({type:"number",step:.1,group:"Transform2D",label:"Rotation",description:"Rotation in radians.",editor:"number-stepper"})],m.prototype,"rotation",void 0);let l=class extends p.default{constructor({system:e,containerManager:t}){super(),this.name="PixiHierarchy",this.waitRemoveIds=[],this.waitChangeScenes=[],this.containerManager=t,this.init(e)}init(e){this.system=e,this.on("changeScene",({scene:e,mode:t,application:n})=>{this.waitChangeScenes.push({scene:e,mode:t,application:n})})}update(){for(const e of this.waitRemoveIds)this.containerManager.removeContainer(e);this.waitRemoveIds=[];for(const e of this.waitChangeScenes){this.ensureSceneContainer(e.scene);const t=this.containerManager.getContainer(e.scene.id);t&&(e.application.stage.removeChildren(),e.application.stage.addChild(t))}this.waitChangeScenes=[]}ensureSceneContainer(e){if(this.containerManager.getContainer(e.id))return;const t=new n.Container;t.label=e.name,this.containerManager.addContainer({name:e.id,container:t})}ensureContainer(e,t){if(this.containerManager.getContainer(e.id))return void(t.worldTransform=this.containerManager.getContainer(e.id).worldTransform);const r=new n.Container;r.label=e.name,this.containerManager.addContainer({name:e.id,container:r}),t.worldTransform=r.worldTransform}componentChanged(e){"GameObject"!==e.componentName?"Transform2D"===e.componentName&&(e.type===t.OBSERVER_TYPE.ADD?(this.ensureContainer(e.gameObject,e.component),this.reparent(e.gameObject)):e.type===t.OBSERVER_TYPE.REMOVE&&this.waitRemoveIds.push(e.gameObject.id)):this.reparent(e.gameObject)}reparent(e){if(!e)return;const t=this.containerManager.getContainer(e.id);if(t)if(e.parent){const n=this.containerManager.getContainer(e.parent.id);n&&t.parent!==n&&n.addChild(t);const r=e.parent.getComponent("Render");r&&(r.sortDirty=!0)}else if(t.parent){const n=e.getComponent(m);n&&delete n.worldTransform,t.parent.removeChild(t)}}destroy(){this.removeAllListeners(),this.waitRemoveIds=null,this.waitChangeScenes=null,this.system=null,this.containerManager=null}};l=e.__decorate([t.decorators.componentObserver({GameObject:["parent"],Transform2D:[]})],l);var g=l;let u;var f;exports.RENDERER_TYPE=void 0,(f=exports.RENDERER_TYPE||(exports.RENDERER_TYPE={}))[f.UNKNOWN=0]="UNKNOWN",f[f.WEBGL=1]="WEBGL",f[f.CANVAS=2]="CANVAS";let y=class extends t.System{constructor(){super(...arguments),this.application=null,this.multiApps=[]}static{this.systemName="Renderer"}async init(e){this.params=e??{};const n=await this.createApplication(this.params);this.application=n,this.game.canvas=n.canvas,this.containerManager=new d,this.rendererManager=new h({game:this.game,rendererSystem:this}),this.hierarchy=new g({system:this,containerManager:this.containerManager}),this.game.on("sceneChanged",async({scene:e,mode:n,params:r})=>{let o=this.application;n===t.LOAD_SCENE_MODE.MULTI_CANVAS&&(o=await this.createApplication(r),this.multiApps.push(o)),o&&(e.canvas=o.canvas,this.hierarchy.ensureSceneContainer(e),this.hierarchy.emit("changeScene",{scene:e,mode:n,application:o}))});const r=n.renderer.gl;r&&(this.suportedCompressedTextureFormats=function(e){if(u)return u;if(!e)return console.warn("WebGL not available for compressed textures. Silently failing."),{s3tc:!1,etc:!1,etc1:!1,pvrtc:!1,atc:!1,astc:!1};u={s3tc:!!e.getExtension("WEBGL_compressed_texture_s3tc"),etc:!!e.getExtension("WEBGL_compressed_texture_etc"),etc1:!!e.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:!!e.getExtension("WEBGL_compressed_texture_pvrtc")||!!e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:!!e.getExtension("WEBGL_compressed_texture_atc"),astc:!!e.getExtension("WEBGL_compressed_texture_astc")};try{console.log("Supported compressed texture formats: "+Object.keys(u).filter(e=>u[e]).join(", "))}catch(e){}return u}(r))}registerObserver(e){const t=this.constructor;t.observerInfo||(t.observerInfo={});const n=t.observerInfo;for(const t in e)n[t]||(n[t]=[]),n[t].push(...e[t])}async createApplication(e){const t={...e,autoStart:!0,sharedTicker:!0},r=new n.Application;try{await r.init(t)}catch{await r.init({...t,preference:"canvas"})}return s.Ticker.shared.stop(),s.Ticker.shared.autoStart=!1,r}update(){const e=this.componentObserver.clear();for(const t of e)"GameObject"===t.componentName&&t.gameObject&&(this.ensureTransform2D(t.gameObject),t.gameObject.parent&&this.ensureTransform2D(t.gameObject.parent)),this.hierarchy.componentChanged(t);if(this.application)for(const e of this.game.gameObjects){const t=e.getComponent(m);t&&this.containerManager.updateTransform({name:e.id,transform:t,parentSize:e.parent?.getComponent(m)?.size}),this.rendererManager.update(e)}}ensureTransform2D(e){if(!e||e===e.scene)return;let t=e.getComponent(m);t||(t=e.addComponent(new m)),this.hierarchy.ensureContainer(e,t),this.hierarchy.reparent(e)}lateUpdate(e){this.application&&(this.hierarchy.update(),this.application.ticker.update(e.time))}onDestroy(){this.application?.destroy();for(const e of this.multiApps)e&&e.destroy();this.hierarchy.destroy(),this.hierarchy=null,this.params=null,this.rendererManager=null,this.containerManager=null,this.application=null,this.game=null,this.multiApps=null}resize(e,t){this.application&&(this.params={...this.params,width:e,height:t},this.application.renderer.resize(e,t))}};y=e.__decorate([t.decorators.componentObserver({GameObject:["parent"],Transform2D:[]})],y);var v=y;Object.assign(v,{packageName:"@combos-fun/plugin-renderer",packageVersion:"0.1.0"});class _ extends t.System{constructor(e){super(e),this.asyncIdMap={};const t=this.constructor;this.observerInfo=t.observerInfo}componentChanged(e){}rendererUpdate(e){}update(e){const t=this.componentObserver.clear();for(const e of t)this.componentChanged(e)}increaseAsyncId(e){return this.asyncIdMap[e]=(this.asyncIdMap[e]||0)+1,this.asyncIdMap[e]}validateAsyncId(e,t){return this.asyncIdMap[e]===t}}exports.ContainerManager=d,exports.RESOURCE_KEY_SPLIT="_s|r|c_",exports.Renderer=_,exports.RendererManager=h,exports.RendererSystem=v,exports.Transform2D=m;
1
+ "use strict";var e=require("tslib"),t=require("@combos-fun/engine"),n=require("@combos-fun/renderer-adapter"),r=require("lodash-es/isEqual"),o=require("eventemitter3"),a=require("@combos-fun/inspector-decorator"),s=require("pixi.js");function i(e){return e&&e.__esModule?e:{default:e}}var c=i(r),p=i(o);class h{constructor({game:e,rendererSystem:t}){this.renderers=[],this.game=e,this.rendererSystem=t}register(...e){for(const t of e)t.game=this.game,t.rendererManager=this.rendererSystem.rendererManager,t.containerManager=this.rendererSystem.containerManager,this.renderers.push(t)}componentChanged(e){for(const n of e)for(const e of this.renderers){const r=e.observerInfo[n.componentName];if(r){if([t.OBSERVER_TYPE.ADD,t.OBSERVER_TYPE.REMOVE].indexOf(n.type)>-1){try{e.componentChanged&&e.componentChanged(n)}catch(e){console.error(`gameObject: ${n.gameObject.name}, ${n.componentName} is error.`,n,e)}continue}if(r.findIndex(e=>c.default(e,n.prop))>-1)try{e.componentChanged&&e.componentChanged(n)}catch(e){console.error(`gameObject: ${n.gameObject&&n.gameObject.name}, ${n.componentName} is componentChanged error.`,n,e)}}}}update(e){for(const t of e.components)for(const n of this.renderers){const r=[];if(n.observerInfo[t.name]&&-1===r.indexOf(e)){r.push(e);try{n.rendererUpdate&&n.rendererUpdate(e)}catch(n){console.info(`gameObject: ${e.name}, ${t.name} is update error`,n)}}}}}class d{constructor(){this.containerMap={}}addContainer({name:e,container:t}){this.containerMap[e]=t}getContainer(e){return this.containerMap[e]}removeContainer(e){this.containerMap[e]?.destroy({children:!0}),delete this.containerMap[e]}updateTransform({name:e,transform:t,parentSize:n}){const r=this.containerMap[e];if(!r||!t)return;const{anchor:o,origin:a,position:s,rotation:i,scale:c,size:p,skew:h}=t;r.rotation=i,r.scale=c,r.pivot.x=p.width*a.x,r.pivot.y=p.height*a.y,r.skew=h;let d=s.x,m=s.y;n&&(d+=n.width*o.x,m+=n.height*o.y),r.position={x:d,y:m}}}class m extends t.Component{constructor(){super(...arguments),this.name="Transform2D",this.position={x:0,y:0},this.size={width:0,height:0},this.origin={x:0,y:0},this.anchor={x:0,y:0},this.scale={x:1,y:1},this.skew={x:0,y:0},this.rotation=0}static{this.componentName="Transform2D"}init(e={}){const t=["position","size","origin","anchor","scale","skew"];for(const n of t)Object.assign(this[n],e[n]);this.rotation=e.rotation??this.rotation}}e.__decorate([a.Field({type:"vector2",step:1,group:"Transform2D",label:"Position",description:"Position on the design canvas (x right, y down)."})],m.prototype,"position",void 0),e.__decorate([a.Field({type:"size",step:1,min:0,group:"Transform2D",label:"Size",description:"Width and height of the object in design pixels."})],m.prototype,"size",void 0),e.__decorate([a.Field({type:"vector2",step:.1,group:"Transform2D",label:"Origin",description:"Local origin used for layout math."})],m.prototype,"origin",void 0),e.__decorate([a.Field({type:"vector2",step:.1,group:"Transform2D",label:"Anchor",description:"Anchor point (0–1) used when positioning and scaling."})],m.prototype,"anchor",void 0),e.__decorate([a.Field({type:"vector2",step:.1,group:"Transform2D",label:"Scale",description:"Scale multipliers on X and Y (1 = original size)."})],m.prototype,"scale",void 0),e.__decorate([a.Field({type:"vector2",step:.1,group:"Transform2D",label:"Skew",description:"Skew amounts on X and Y."})],m.prototype,"skew",void 0),e.__decorate([a.Field({type:"number",step:.1,group:"Transform2D",label:"Rotation",description:"Rotation in radians.",editor:"number-stepper"})],m.prototype,"rotation",void 0);let l=class extends p.default{constructor({system:e,containerManager:t}){super(),this.name="PixiHierarchy",this.waitRemoveIds=[],this.waitChangeScenes=[],this.containerManager=t,this.init(e)}init(e){this.system=e,this.on("changeScene",({scene:e,mode:t,application:n})=>{this.waitChangeScenes.push({scene:e,mode:t,application:n})})}update(){for(const e of this.waitRemoveIds)this.containerManager.removeContainer(e);this.waitRemoveIds=[];for(const e of this.waitChangeScenes){this.ensureSceneContainer(e.scene);const t=this.containerManager.getContainer(e.scene.id);t&&(e.application.stage.removeChildren(),e.application.stage.addChild(t))}this.waitChangeScenes=[]}ensureSceneContainer(e){if(this.containerManager.getContainer(e.id))return;const t=new n.Container;t.label=e.name,this.containerManager.addContainer({name:e.id,container:t})}ensureContainer(e,t){if(this.containerManager.getContainer(e.id))return void(t.worldTransform=this.containerManager.getContainer(e.id).worldTransform);const r=new n.Container;r.label=e.name,this.containerManager.addContainer({name:e.id,container:r}),t.worldTransform=r.worldTransform}componentChanged(e){"GameObject"!==e.componentName?"Transform2D"===e.componentName&&(e.type===t.OBSERVER_TYPE.ADD?(this.ensureContainer(e.gameObject,e.component),this.reparent(e.gameObject)):e.type===t.OBSERVER_TYPE.REMOVE&&this.waitRemoveIds.push(e.gameObject.id)):this.reparent(e.gameObject)}reparent(e){if(!e)return;const t=this.containerManager.getContainer(e.id);if(t)if(e.parent){const n=this.containerManager.getContainer(e.parent.id);n&&t.parent!==n&&n.addChild(t);const r=e.parent.getComponent("Render");r&&(r.sortDirty=!0)}else if(t.parent){const n=e.getComponent(m);n&&delete n.worldTransform,t.parent.removeChild(t)}}destroy(){this.removeAllListeners(),this.waitRemoveIds=null,this.waitChangeScenes=null,this.system=null,this.containerManager=null}};l=e.__decorate([t.decorators.componentObserver({GameObject:["parent"],Transform2D:[]})],l);var g=l;let u;var f;exports.RENDERER_TYPE=void 0,(f=exports.RENDERER_TYPE||(exports.RENDERER_TYPE={}))[f.UNKNOWN=0]="UNKNOWN",f[f.WEBGL=1]="WEBGL",f[f.CANVAS=2]="CANVAS";let y=class extends t.System{constructor(){super(...arguments),this.application=null,this.multiApps=[]}static{this.systemName="Renderer"}async init(e){this.params=e??{};const n=await this.createApplication(this.params);this.application=n,this.game.canvas=n.canvas,this.containerManager=new d,this.rendererManager=new h({game:this.game,rendererSystem:this}),this.hierarchy=new g({system:this,containerManager:this.containerManager}),this.game.on("sceneChanged",async({scene:e,mode:n,params:r})=>{let o=this.application;n===t.LOAD_SCENE_MODE.MULTI_CANVAS&&(o=await this.createApplication(r),this.multiApps.push(o)),o&&(e.canvas=o.canvas,this.hierarchy.ensureSceneContainer(e),this.hierarchy.emit("changeScene",{scene:e,mode:n,application:o}))});const r=n.renderer.gl;r&&(this.suportedCompressedTextureFormats=function(e){if(u)return u;if(!e)return console.warn("WebGL not available for compressed textures. Silently failing."),{s3tc:!1,etc:!1,etc1:!1,pvrtc:!1,atc:!1,astc:!1};u={s3tc:!!e.getExtension("WEBGL_compressed_texture_s3tc"),etc:!!e.getExtension("WEBGL_compressed_texture_etc"),etc1:!!e.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:!!e.getExtension("WEBGL_compressed_texture_pvrtc")||!!e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:!!e.getExtension("WEBGL_compressed_texture_atc"),astc:!!e.getExtension("WEBGL_compressed_texture_astc")};try{console.log("Supported compressed texture formats: "+Object.keys(u).filter(e=>u[e]).join(", "))}catch(e){}return u}(r))}registerObserver(e){const t=this.constructor;t.observerInfo||(t.observerInfo={});const n=t.observerInfo;for(const t in e)n[t]||(n[t]=[]),n[t].push(...e[t])}async createApplication(e){const t={...e,autoStart:!0,sharedTicker:!0},r=new n.Application;try{await r.init(t)}catch{await r.init({...t,preference:"canvas"})}return s.Ticker.shared.stop(),s.Ticker.shared.autoStart=!1,r}update(){const e=this.componentObserver.clear();for(const t of e)"GameObject"===t.componentName&&t.gameObject&&(this.ensureTransform2D(t.gameObject),t.gameObject.parent&&this.ensureTransform2D(t.gameObject.parent)),this.hierarchy.componentChanged(t);if(this.application)for(const e of this.game.gameObjects){const t=e.getComponent(m);t&&this.containerManager.updateTransform({name:e.id,transform:t,parentSize:e.parent?.getComponent(m)?.size}),this.rendererManager.update(e)}}ensureTransform2D(e){if(!e||e===e.scene)return;let t=e.getComponent(m);t||(t=e.addComponent(new m)),this.hierarchy.ensureContainer(e,t),this.hierarchy.reparent(e)}lateUpdate(e){this.application&&(this.hierarchy.update(),this.application.ticker.update(e.time))}onDestroy(){this.application?.destroy();for(const e of this.multiApps)e&&e.destroy();this.hierarchy.destroy(),this.hierarchy=null,this.params=null,this.rendererManager=null,this.containerManager=null,this.application=null,this.game=null,this.multiApps=null}resize(e,t){this.application&&(this.params={...this.params,width:e,height:t},this.application.renderer.resize(e,t))}};y=e.__decorate([t.decorators.componentObserver({GameObject:["parent"],Transform2D:[]})],y);var v=y;Object.assign(v,{packageName:"@combos-fun/plugin-renderer",packageVersion:"0.1.1"});class _ extends t.System{constructor(e){super(e),this.asyncIdMap={};const t=this.constructor;this.observerInfo=t.observerInfo}componentChanged(e){}rendererUpdate(e){}update(e){const t=this.componentObserver.clear();for(const e of t)this.componentChanged(e)}increaseAsyncId(e){return this.asyncIdMap[e]=(this.asyncIdMap[e]||0)+1,this.asyncIdMap[e]}validateAsyncId(e,t){return this.asyncIdMap[e]===t}}exports.ContainerManager=d,exports.RESOURCE_KEY_SPLIT="_s|r|c_",exports.Renderer=_,exports.RendererManager=h,exports.RendererSystem=v,exports.Transform2D=m;
@@ -490,7 +490,7 @@ var Renderer$2 = Renderer$1;
490
490
  /** Auto-generated by scripts/build-package.mjs — do not edit. */
491
491
  Object.assign(Renderer$2, {
492
492
  packageName: "@combos-fun/plugin-renderer",
493
- packageVersion: "0.1.0",
493
+ packageVersion: "0.1.1",
494
494
  });
495
495
 
496
496
  /* eslint-disable @typescript-eslint/no-unused-vars */
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-renderer.esm.js","sources":["../lib/manager/RendererManager.ts","../lib/manager/ContainerManager.ts","../lib/Transform2D.ts","../lib/PixiHierarchy.ts","../lib/compressedTexture/ability.ts","../lib/System.ts","../lib/__combosPackageMeta.gen.ts","../lib/Renderer.ts","../lib/index.ts"],"sourcesContent":["import isEqual from 'lodash-es/isEqual';\nimport { GameObject, Game, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport Renderer from '../Renderer';\nimport RendererSystem from '../System';\n\nclass RendererManager {\n game: Game;\n rendererSystem: RendererSystem;\n constructor({ game, rendererSystem }) {\n this.game = game;\n this.rendererSystem = rendererSystem;\n }\n renderers: Renderer[] = [];\n register(...renderers: Renderer[]) {\n for (const renderer of renderers) {\n renderer.game = this.game;\n renderer.rendererManager = this.rendererSystem.rendererManager;\n renderer.containerManager = this.rendererSystem.containerManager;\n this.renderers.push(renderer);\n }\n }\n componentChanged(changes: ComponentChanged[]) {\n for (const changed of changes) {\n for (const renderer of this.renderers) {\n const props = renderer.observerInfo[changed.componentName];\n if (props) {\n if ([OBSERVER_TYPE.ADD, OBSERVER_TYPE.REMOVE].indexOf(changed.type) > -1) {\n try {\n renderer.componentChanged && renderer.componentChanged(changed);\n } catch (e) {\n console.error(`gameObject: ${changed.gameObject.name}, ${changed.componentName} is error.`, changed, e);\n }\n continue;\n }\n\n const index = props.findIndex(prop => {\n return isEqual(prop, changed.prop);\n });\n\n if (index > -1) {\n try {\n renderer.componentChanged && renderer.componentChanged(changed);\n } catch (e) {\n console.error(\n `gameObject: ${changed.gameObject && changed.gameObject.name}, ${\n changed.componentName\n } is componentChanged error.`,\n changed,\n e,\n );\n }\n }\n }\n }\n }\n }\n update(gameObject: GameObject) {\n for (const component of gameObject.components) {\n for (const renderer of this.renderers) {\n const cache = [];\n const props = renderer.observerInfo[component.name];\n if (props && cache.indexOf(gameObject) === -1) {\n cache.push(gameObject);\n try {\n renderer.rendererUpdate && renderer.rendererUpdate(gameObject);\n } catch (e) {\n console.info(`gameObject: ${gameObject.name}, ${component.name} is update error`, e);\n }\n }\n }\n }\n }\n}\nexport default RendererManager;\n","import { Point, ObservablePoint } from 'pixi.js';\nimport { Container } from '@combos-fun/renderer-adapter';\nimport type Transform2D from '../Transform2D';\n\nexport default class ContainerManager {\n containerMap: { [propName: number]: Container } = {};\n addContainer({ name, container }: { name: number; container: Container }) {\n this.containerMap[name] = container;\n }\n getContainer(name: number) {\n return this.containerMap[name];\n }\n removeContainer(name: number) {\n this.containerMap[name]?.destroy({ children: true });\n delete this.containerMap[name];\n }\n updateTransform({\n name,\n transform,\n parentSize,\n }: {\n name: number;\n transform: Transform2D;\n parentSize?: { width: number; height: number };\n }) {\n const container = this.containerMap[name];\n if (!container || !transform) return;\n const { anchor, origin, position, rotation, scale, size, skew } = transform;\n container.rotation = rotation;\n container.scale = scale as Point;\n container.pivot.x = size.width * origin.x;\n container.pivot.y = size.height * origin.y;\n container.skew = skew as ObservablePoint;\n let x = position.x;\n let y = position.y;\n if (parentSize) {\n x = x + parentSize.width * anchor.x;\n y = y + parentSize.height * anchor.y;\n }\n\n container.position = { x, y } as Point;\n }\n}\n","import { Component } from '@combos-fun/engine';\nimport type { ComponentParams } from '@combos-fun/engine';\nimport { Field } from '@combos-fun/inspector-decorator';\n\ninterface Vector2 {\n x: number;\n y: number;\n}\n\ninterface Size2 {\n width: number;\n height: number;\n}\n\nexport interface TransformMatrix {\n a: number;\n b: number;\n c: number;\n d: number;\n tx: number;\n ty: number;\n array?: number[];\n}\n\nexport interface Transform2DParams extends ComponentParams {\n position?: Vector2;\n size?: Size2;\n origin?: Vector2;\n anchor?: Vector2;\n scale?: Vector2;\n skew?: Vector2;\n rotation?: number;\n}\n\n/** 2D layout pose. Hierarchy lives on GameObject. */\nclass Transform2D extends Component<Transform2DParams> {\n static componentName: string = 'Transform2D';\n readonly name: string = 'Transform2D';\n\n worldTransform: TransformMatrix;\n\n init(params: Transform2DParams = {}) {\n const props = ['position', 'size', 'origin', 'anchor', 'scale', 'skew'];\n for (const key of props) {\n Object.assign(this[key], params[key]);\n }\n this.rotation = params.rotation ?? this.rotation;\n }\n\n @Field({\n type: 'vector2',\n step: 1,\n group: 'Transform2D',\n label: 'Position',\n description: 'Position on the design canvas (x right, y down).',\n })\n position: Vector2 = {x: 0, y: 0};\n\n @Field({\n type: 'size',\n step: 1,\n min: 0,\n group: 'Transform2D',\n label: 'Size',\n description: 'Width and height of the object in design pixels.',\n })\n size: Size2 = {width: 0, height: 0};\n\n @Field({\n type: 'vector2',\n step: 0.1,\n group: 'Transform2D',\n label: 'Origin',\n description: 'Local origin used for layout math.',\n })\n origin: Vector2 = {x: 0, y: 0};\n\n @Field({\n type: 'vector2',\n step: 0.1,\n group: 'Transform2D',\n label: 'Anchor',\n description: 'Anchor point (0–1) used when positioning and scaling.',\n })\n anchor: Vector2 = {x: 0, y: 0};\n\n @Field({\n type: 'vector2',\n step: 0.1,\n group: 'Transform2D',\n label: 'Scale',\n description: 'Scale multipliers on X and Y (1 = original size).',\n })\n scale: Vector2 = {x: 1, y: 1};\n\n @Field({\n type: 'vector2',\n step: 0.1,\n group: 'Transform2D',\n label: 'Skew',\n description: 'Skew amounts on X and Y.',\n })\n skew: Vector2 = {x: 0, y: 0};\n\n @Field({\n type: 'number',\n step: 0.1,\n group: 'Transform2D',\n label: 'Rotation',\n description: 'Rotation in radians.',\n editor: 'number-stepper',\n })\n rotation: number = 0;\n}\n\nexport default Transform2D;\n","import { decorators, ComponentChanged, OBSERVER_TYPE, Scene, LOAD_SCENE_MODE, GameObject } from '@combos-fun/engine';\nimport EventEmitter from 'eventemitter3';\nimport { Application, Container } from '@combos-fun/renderer-adapter';\nimport Render from './System';\nimport ContainerManager from './manager/ContainerManager';\nimport Transform2D from './Transform2D';\n\ntype RenderSortDirty = { sortDirty: boolean };\n\n@decorators.componentObserver({\n GameObject: ['parent'],\n Transform2D: [],\n})\nexport default class PixiHierarchy extends EventEmitter {\n name: string = 'PixiHierarchy';\n waitRemoveIds: number[] = [];\n system: Render;\n containerManager: ContainerManager;\n waitChangeScenes: {\n scene: Scene;\n mode: LOAD_SCENE_MODE;\n application: Application;\n }[] = [];\n constructor({ system, containerManager }) {\n super();\n this.containerManager = containerManager;\n this.init(system);\n }\n init(system: Render) {\n this.system = system;\n this.on('changeScene', ({ scene, mode, application }) => {\n this.waitChangeScenes.push({ scene, mode, application });\n });\n }\n update() {\n for (const id of this.waitRemoveIds) {\n this.containerManager.removeContainer(id);\n }\n this.waitRemoveIds = [];\n\n for (const sceneInfo of this.waitChangeScenes) {\n this.ensureSceneContainer(sceneInfo.scene);\n const container = this.containerManager.getContainer(sceneInfo.scene.id);\n if (container) {\n sceneInfo.application.stage.removeChildren();\n sceneInfo.application.stage.addChild(container);\n }\n }\n this.waitChangeScenes = [];\n }\n ensureSceneContainer(scene: Scene) {\n if (this.containerManager.getContainer(scene.id)) return;\n const container = new Container();\n container.label = scene.name;\n this.containerManager.addContainer({\n name: scene.id,\n container,\n });\n }\n ensureContainer(gameObject: GameObject, transform: Transform2D) {\n if (this.containerManager.getContainer(gameObject.id)) {\n transform.worldTransform = this.containerManager.getContainer(gameObject.id)\n .worldTransform as unknown as Transform2D['worldTransform'];\n return;\n }\n const container = new Container();\n container.label = gameObject.name;\n this.containerManager.addContainer({\n name: gameObject.id,\n container,\n });\n transform.worldTransform = container.worldTransform as unknown as Transform2D['worldTransform'];\n }\n componentChanged(changed: ComponentChanged) {\n if (changed.componentName === 'GameObject') {\n this.reparent(changed.gameObject);\n return;\n }\n if (changed.componentName !== 'Transform2D') return;\n if (changed.type === OBSERVER_TYPE.ADD) {\n this.ensureContainer(changed.gameObject, changed.component as Transform2D);\n this.reparent(changed.gameObject);\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.waitRemoveIds.push(changed.gameObject.id);\n }\n }\n reparent(gameObject?: GameObject) {\n if (!gameObject) return;\n const container = this.containerManager.getContainer(gameObject.id);\n if (!container) return;\n if (gameObject.parent) {\n const parentContainer = this.containerManager.getContainer(gameObject.parent.id);\n if (parentContainer && container.parent !== parentContainer) {\n parentContainer.addChild(container);\n }\n const render = gameObject.parent.getComponent('Render') as unknown as RenderSortDirty;\n if (render) {\n render.sortDirty = true;\n }\n } else if (container.parent) {\n const transform = gameObject.getComponent(Transform2D);\n if (transform) {\n delete transform.worldTransform;\n }\n container.parent.removeChild(container);\n }\n }\n destroy() {\n this.removeAllListeners();\n this.waitRemoveIds = null;\n this.waitChangeScenes = null;\n this.system = null;\n this.containerManager = null;\n }\n}\n","/**\n * Inspired by PixiJS v6\n */\nexport type CompressedTextureExtensions = {\n s3tc?: WEBGL_compressed_texture_s3tc,\n s3tc_sRGB: WEBGL_compressed_texture_s3tc_srgb,\n etc: WEBGL_compressed_texture_etc,\n etc1: WEBGL_compressed_texture_etc1,\n pvrtc: WEBKIT_WEBGL_compressed_texture_pvrtc,\n atc: WEBGL_compressed_texture_atc,\n astc: WEBGL_compressed_texture_astc\n};\nexport type CompressedTextureExtensionRef = keyof CompressedTextureExtensions;\nlet result = undefined;\nexport interface SuportedCompressedTexture {\n s3tc: boolean,\n etc: boolean,\n etc1: boolean,\n pvrtc: boolean,\n atc: boolean,\n astc: boolean,\n}\nexport function getSuportCompressedTextureFormats(gl: WebGLRenderingContext): SuportedCompressedTexture {\n if (result) return result;\n\n if (!gl) {\n // #if _DEBUG\n console.warn('WebGL not available for compressed textures. Silently failing.');\n // #endif\n\n return {\n s3tc: false,\n etc: false,\n etc1: false,\n pvrtc: false,\n atc: false,\n astc: false,\n };\n }\n\n result = {\n s3tc: !!gl.getExtension('WEBGL_compressed_texture_s3tc'),\n etc: !!gl.getExtension('WEBGL_compressed_texture_etc'),\n etc1: !!gl.getExtension('WEBGL_compressed_texture_etc1'),\n pvrtc: !!gl.getExtension('WEBGL_compressed_texture_pvrtc')\n || !!gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc'),\n atc: !!gl.getExtension('WEBGL_compressed_texture_atc'),\n astc: !!gl.getExtension('WEBGL_compressed_texture_astc')\n };\n\n try {\n console.log('Supported compressed texture formats: ' + Object.keys(result).filter((type) => result[type]).join(', '))\n } catch (e) { }\n return result;\n}","import { System, decorators, Game, LOAD_SCENE_MODE, PureObserverInfo } from '@combos-fun/engine';\nimport { Application } from '@combos-fun/renderer-adapter';\nimport RendererManager from './manager/RendererManager';\nimport ContainerManager from './manager/ContainerManager';\nimport PixiHierarchy from './PixiHierarchy';\nimport Transform2D from './Transform2D';\nimport { Ticker } from 'pixi.js';\nimport type { ApplicationOptions } from 'pixi.js';\nimport type { Renderer as PixiRenderer } from 'pixi.js';\nimport type { WebGLRenderer } from 'pixi.js';\nimport { registerCompressedTexture } from './compressedTexture';\nimport { SuportedCompressedTexture, getSuportCompressedTextureFormats } from './compressedTexture/ability';\n\nexport enum RENDERER_TYPE {\n UNKNOWN = 0,\n WEBGL = 1,\n CANVAS = 2,\n}\n\n@decorators.componentObserver({\n GameObject: ['parent'],\n Transform2D: [],\n})\nexport default class Renderer extends System<Partial<ApplicationOptions>> {\n static systemName: string = 'Renderer';\n params: Partial<ApplicationOptions>;\n rendererManager: RendererManager;\n containerManager: ContainerManager;\n application: Application | null = null;\n game: Game;\n hierarchy: PixiHierarchy;\n multiApps: Application[] = [];\n suportedCompressedTextureFormats: SuportedCompressedTexture;\n\n async init(params?: Partial<ApplicationOptions>) {\n this.params = params ?? {};\n const app = await this.createApplication(this.params);\n this.application = app;\n this.game.canvas = app.canvas;\n this.containerManager = new ContainerManager();\n this.rendererManager = new RendererManager({\n game: this.game,\n rendererSystem: this,\n });\n\n this.hierarchy = new PixiHierarchy({\n system: this,\n containerManager: this.containerManager,\n });\n this.game.on('sceneChanged', async ({ scene, mode, params: sceneParams }) => {\n let application: Application | null = this.application;\n if (mode === LOAD_SCENE_MODE.MULTI_CANVAS) {\n application = await this.createApplication(sceneParams);\n this.multiApps.push(application);\n }\n if (!application) {\n return;\n }\n scene.canvas = application.canvas;\n this.hierarchy.ensureSceneContainer(scene);\n this.hierarchy.emit('changeScene', {\n scene,\n mode,\n application,\n });\n });\n\n const gl = (app.renderer as WebGLRenderer).gl;\n if (gl) {\n this.suportedCompressedTextureFormats = getSuportCompressedTextureFormats(gl);\n registerCompressedTexture(gl);\n }\n }\n\n registerObserver(observerInfo: PureObserverInfo): void {\n const Ctor = this.constructor as typeof Renderer & { observerInfo: PureObserverInfo };\n if (!Ctor.observerInfo) {\n Ctor.observerInfo = {} as PureObserverInfo;\n }\n const thisObserverInfo = Ctor.observerInfo;\n for (const key in observerInfo) {\n if (!thisObserverInfo[key]) {\n thisObserverInfo[key] = [];\n }\n thisObserverInfo[key].push(...observerInfo[key]);\n }\n }\n\n private async createApplication(params: Partial<ApplicationOptions>): Promise<Application> {\n const initOptions: Partial<ApplicationOptions> = {\n ...params,\n autoStart: true,\n sharedTicker: true,\n };\n\n const app = new Application();\n try {\n await app.init(initOptions);\n } catch {\n await app.init({\n ...initOptions,\n preference: 'canvas',\n });\n }\n\n Ticker.shared.stop();\n Ticker.shared.autoStart = false;\n\n return app;\n }\n\n update() {\n const changes = this.componentObserver.clear();\n for (const changed of changes) {\n if (changed.componentName === 'GameObject' && changed.gameObject) {\n this.ensureTransform2D(changed.gameObject);\n if (changed.gameObject.parent) this.ensureTransform2D(changed.gameObject.parent);\n }\n this.hierarchy.componentChanged(changed);\n }\n if (!this.application) {\n return;\n }\n for (const gameObject of this.game.gameObjects) {\n const transform = gameObject.getComponent(Transform2D);\n if (transform) {\n this.containerManager.updateTransform({\n name: gameObject.id,\n transform,\n parentSize: gameObject.parent?.getComponent(Transform2D)?.size,\n });\n }\n this.rendererManager.update(gameObject);\n }\n }\n\n private ensureTransform2D(gameObject: Game['gameObjects'][number]) {\n if (!gameObject || gameObject === gameObject.scene) return;\n let transform = gameObject.getComponent(Transform2D);\n if (!transform) {\n transform = gameObject.addComponent(new Transform2D());\n }\n this.hierarchy.ensureContainer(gameObject, transform);\n this.hierarchy.reparent(gameObject);\n }\n\n lateUpdate(e) {\n if (!this.application) {\n return;\n }\n this.hierarchy.update();\n this.application.ticker.update(e.time);\n }\n\n onDestroy() {\n this.application?.destroy();\n for (const app of this.multiApps) {\n app && app.destroy();\n }\n this.hierarchy.destroy();\n this.hierarchy = null;\n this.params = null;\n this.rendererManager = null;\n this.containerManager = null;\n this.application = null;\n this.game = null;\n this.multiApps = null;\n }\n\n resize(width, height) {\n if (!this.application) {\n return;\n }\n this.params = { ...this.params, width, height };\n this.application.renderer.resize(width, height);\n }\n}\n","/** Auto-generated by scripts/build-package.mjs — do not edit. */\n\nimport Renderer from './System';\n\nObject.assign(Renderer, {\n packageName: \"@combos-fun/plugin-renderer\",\n packageVersion: \"0.1.0\",\n});\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport { GameObject, Game, PureObserverInfo, ComponentChanged, System, UpdateParams } from '@combos-fun/engine';\nimport ContainerManager from './manager/ContainerManager';\nimport RendererManager from './manager/RendererManager';\n\nexport default class Renderer<T extends {} = {}> extends System<T> {\n /**\n * Renderer name\n */\n name: string;\n\n /**\n * currentGame\n */\n game: Game;\n\n /**\n * observer component props info\n */\n static observerInfo: PureObserverInfo;\n\n /**\n * observer component props info\n */\n observerInfo: PureObserverInfo;\n\n /**\n * containerManager\n */\n containerManager: ContainerManager;\n rendererManager: RendererManager;\n\n constructor(params?: T) {\n super(params);\n const Ctor = this.constructor as typeof Renderer & { observerInfo: PureObserverInfo };\n this.observerInfo = Ctor.observerInfo;\n }\n\n // init(arg?: any): void;\n\n /**\n * Called when an observed component property changes.\n */\n componentChanged(_changed: ComponentChanged) { }\n\n /**\n * Called every frame.\n * @param _gameObject gameObject\n */\n rendererUpdate(_gameObject: GameObject) { }\n\n override update(e?: UpdateParams): void {\n const changes = this.componentObserver.clear();\n for (const changed of changes) {\n this.componentChanged(changed);\n }\n }\n\n protected asyncIdMap: Record<number, number> = {}\n\n protected increaseAsyncId(id: number) {\n this.asyncIdMap[id] = (this.asyncIdMap[id] || 0) + 1;\n return this.asyncIdMap[id];\n }\n\n protected validateAsyncId(id: number, asyncId: number) {\n return this.asyncIdMap[id] === asyncId;\n }\n}\n","import RendererSystem, { RENDERER_TYPE } from './System';\nimport RendererManager from './manager/RendererManager';\nimport ContainerManager from './manager/ContainerManager';\nimport Renderer from './Renderer';\nimport Transform2D from './Transform2D';\n\n/** Shared resource cache key separator used across renderer plugins */\nexport const RESOURCE_KEY_SPLIT = '_s|r|c_';\n\nexport type { Transform2DParams, TransformMatrix } from './Transform2D';\nexport { RendererManager, ContainerManager, RendererSystem, RENDERER_TYPE, Renderer, Transform2D };\n\n"],"names":["Renderer","PixiHierarchy"],"mappings":";;;;;;;;AAKA,MAAM,eAAe,CAAA;AAGnB,IAAA,WAAA,CAAY,EAAE,IAAI,EAAE,cAAc,EAAE,EAAA;QAIpC,IAAA,CAAA,SAAS,GAAe,EAAE;AAHxB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;IACtC;IAEA,QAAQ,CAAC,GAAG,SAAqB,EAAA;AAC/B,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AAChC,YAAA,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;YACzB,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe;YAC9D,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB;AAChE,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B;IACF;AACA,IAAA,gBAAgB,CAAC,OAA2B,EAAA;AAC1C,QAAA,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE;AAC7B,YAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;gBACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC1D,IAAI,KAAK,EAAE;oBACT,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE;AACxE,wBAAA,IAAI;4BACF,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC;wBACjE;wBAAE,OAAO,CAAC,EAAE;AACV,4BAAA,OAAO,CAAC,KAAK,CAAC,eAAe,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,aAAa,CAAA,UAAA,CAAY,EAAE,OAAO,EAAE,CAAC,CAAC;wBACzG;wBACA;oBACF;oBAEA,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,IAAG;wBACnC,OAAO,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;AACpC,oBAAA,CAAC,CAAC;AAEF,oBAAA,IAAI,KAAK,GAAG,EAAE,EAAE;AACd,wBAAA,IAAI;4BACF,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC;wBACjE;wBAAE,OAAO,CAAC,EAAE;4BACV,OAAO,CAAC,KAAK,CACX,CAAA,YAAA,EAAe,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAA,EAAA,EAC1D,OAAO,CAAC,aACV,CAAA,2BAAA,CAA6B,EAC7B,OAAO,EACP,CAAC,CACF;wBACH;oBACF;gBACF;YACF;QACF;IACF;AACA,IAAA,MAAM,CAAC,UAAsB,EAAA;AAC3B,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE;AAC7C,YAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;gBACrC,MAAM,KAAK,GAAG,EAAE;gBAChB,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;AACnD,gBAAA,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE;AAC7C,oBAAA,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;AACtB,oBAAA,IAAI;wBACF,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC;oBAChE;oBAAE,OAAO,CAAC,EAAE;AACV,wBAAA,OAAO,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,UAAU,CAAC,IAAI,CAAA,EAAA,EAAK,SAAS,CAAC,IAAI,CAAA,gBAAA,CAAkB,EAAE,CAAC,CAAC;oBACtF;gBACF;YACF;QACF;IACF;AACD;;ACpEa,MAAO,gBAAgB,CAAA;AAArC,IAAA,WAAA,GAAA;QACE,IAAA,CAAA,YAAY,GAAsC,EAAE;IAqCtD;AApCE,IAAA,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAA0C,EAAA;AACtE,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,SAAS;IACrC;AACA,IAAA,YAAY,CAAC,IAAY,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IAChC;AACA,IAAA,eAAe,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IAChC;AACA,IAAA,eAAe,CAAC,EACd,IAAI,EACJ,SAAS,EACT,UAAU,GAKX,EAAA;QACC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACzC,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS;YAAE;AAC9B,QAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,SAAS;AAC3E,QAAA,SAAS,CAAC,QAAQ,GAAG,QAAQ;AAC7B,QAAA,SAAS,CAAC,KAAK,GAAG,KAAc;AAChC,QAAA,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;AACzC,QAAA,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAC1C,QAAA,SAAS,CAAC,IAAI,GAAG,IAAuB;AACxC,QAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAClB,IAAI,UAAU,EAAE;YACd,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;YACnC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QACtC;QAEA,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,EAAW;IACxC;AACD;;ACRD;AACA,MAAM,WAAY,SAAQ,SAA4B,CAAA;AAAtD,IAAA,WAAA,GAAA;;QAEW,IAAA,CAAA,IAAI,GAAW,aAAa;QAmBrC,IAAA,CAAA,QAAQ,GAAY,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC;QAUhC,IAAA,CAAA,IAAI,GAAU,EAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC;QASnC,IAAA,CAAA,MAAM,GAAY,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC;QAS9B,IAAA,CAAA,MAAM,GAAY,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC;QAS9B,IAAA,CAAA,KAAK,GAAY,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC;QAS7B,IAAA,CAAA,IAAI,GAAY,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC;QAU5B,IAAA,CAAA,QAAQ,GAAW,CAAC;IACtB;aA7ES,IAAA,CAAA,aAAa,GAAW,aAAX,CAAyB;IAK7C,IAAI,CAAC,SAA4B,EAAE,EAAA;AACjC,QAAA,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACvE,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACvB,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QACvC;QACA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;IAClD;;AASA,UAAA,CAAA;AAPC,IAAA,KAAK,CAAC;AACL,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,WAAW,EAAE,kDAAkD;KAChE;AACgC,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAUjC,UAAA,CAAA;AARC,IAAA,KAAK,CAAC;AACL,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,WAAW,EAAE,kDAAkD;KAChE;AACmC,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AASpC,UAAA,CAAA;AAPC,IAAA,KAAK,CAAC;AACL,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,WAAW,EAAE,oCAAoC;KAClD;AAC8B,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,CAAA;AAS/B,UAAA,CAAA;AAPC,IAAA,KAAK,CAAC;AACL,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,WAAW,EAAE,uDAAuD;KACrE;AAC8B,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,CAAA;AAS/B,UAAA,CAAA;AAPC,IAAA,KAAK,CAAC;AACL,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,WAAW,EAAE,mDAAmD;KACjE;AAC6B,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAS9B,UAAA,CAAA;AAPC,IAAA,KAAK,CAAC;AACL,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,WAAW,EAAE,0BAA0B;KACxC;AAC4B,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AAU7B,UAAA,CAAA;AARC,IAAA,KAAK,CAAC;AACL,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,WAAW,EAAE,sBAAsB;AACnC,QAAA,MAAM,EAAE,gBAAgB;KACzB;AACoB,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;;ACnGR,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,YAAY,CAAA;AAUrD,IAAA,WAAA,CAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAA;AACtC,QAAA,KAAK,EAAE;QAVT,IAAA,CAAA,IAAI,GAAW,eAAe;QAC9B,IAAA,CAAA,aAAa,GAAa,EAAE;QAG5B,IAAA,CAAA,gBAAgB,GAIV,EAAE;AAGN,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AACxC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACnB;AACA,IAAA,IAAI,CAAC,MAAc,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,KAAI;AACtD,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAC1D,QAAA,CAAC,CAAC;IACJ;IACA,MAAM,GAAA;AACJ,QAAA,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,CAAC;QAC3C;AACA,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AAEvB,QAAA,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC7C,YAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC;AAC1C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACxE,IAAI,SAAS,EAAE;AACb,gBAAA,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,EAAE;gBAC5C,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;YACjD;QACF;AACA,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;IAC5B;AACA,IAAA,oBAAoB,CAAC,KAAY,EAAA;QAC/B,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE;AAClD,QAAA,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE;AACjC,QAAA,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI;AAC5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;YACjC,IAAI,EAAE,KAAK,CAAC,EAAE;YACd,SAAS;AACV,SAAA,CAAC;IACJ;IACA,eAAe,CAAC,UAAsB,EAAE,SAAsB,EAAA;QAC5D,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;AACrD,YAAA,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;AACxE,iBAAA,cAA0D;YAC7D;QACF;AACA,QAAA,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE;AACjC,QAAA,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;YACjC,IAAI,EAAE,UAAU,CAAC,EAAE;YACnB,SAAS;AACV,SAAA,CAAC;AACF,QAAA,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,cAA0D;IACjG;AACA,IAAA,gBAAgB,CAAC,OAAyB,EAAA;AACxC,QAAA,IAAI,OAAO,CAAC,aAAa,KAAK,YAAY,EAAE;AAC1C,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;YACjC;QACF;AACA,QAAA,IAAI,OAAO,CAAC,aAAa,KAAK,aAAa;YAAE;QAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,GAAG,EAAE;YACtC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,SAAwB,CAAC;AAC1E,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;QACnC;aAAO,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,EAAE;YAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAChD;IACF;AACA,IAAA,QAAQ,CAAC,UAAuB,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU;YAAE;AACjB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;AACnE,QAAA,IAAI,CAAC,SAAS;YAAE;AAChB,QAAA,IAAI,UAAU,CAAC,MAAM,EAAE;AACrB,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAChF,IAAI,eAAe,IAAI,SAAS,CAAC,MAAM,KAAK,eAAe,EAAE;AAC3D,gBAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;YACrC;YACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAA+B;YACrF,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,CAAC,SAAS,GAAG,IAAI;YACzB;QACF;AAAO,aAAA,IAAI,SAAS,CAAC,MAAM,EAAE;YAC3B,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC;YACtD,IAAI,SAAS,EAAE;gBACb,OAAO,SAAS,CAAC,cAAc;YACjC;AACA,YAAA,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;QACzC;IACF;IACA,OAAO,GAAA;QACL,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;IAC9B;CACD;AArGoB,aAAa,GAAA,UAAA,CAAA;IAJjC,UAAU,CAAC,iBAAiB,CAAC;QAC5B,UAAU,EAAE,CAAC,QAAQ,CAAC;AACtB,QAAA,WAAW,EAAE,EAAE;KAChB;AACoB,CAAA,EAAA,aAAa,CAqGjC;sBArGoB,aAAa;;ACAlC,IAAI,MAAM,GAAG,SAAS;AAShB,SAAU,iCAAiC,CAAC,EAAyB,EAAA;AACzE,IAAA,IAAI,MAAM;AAAE,QAAA,OAAO,MAAM;IAEzB,IAAI,CAAC,EAAE,EAAE;;AAEP,QAAA,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC;;QAG9E,OAAO;AACL,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,IAAI,EAAE,KAAK;SACZ;IACH;AAEA,IAAA,MAAM,GAAG;QACP,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,+BAA+B,CAAC;QACxD,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,8BAA8B,CAAC;QACtD,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,+BAA+B,CAAC;QACxD,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,gCAAgC;AACpD,eAAA,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,uCAAuC,CAAC;QAC/D,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,8BAA8B,CAAC;QACtD,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,+BAA+B;KACxD;AAED,IAAA,IAAI;AACF,QAAA,OAAO,CAAC,GAAG,CAAC,wCAAwC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvH;AAAE,IAAA,OAAO,CAAC,EAAE,EAAE;AACd,IAAA,OAAO,MAAM;AACf;;ICzCY;AAAZ,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,aAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS;AACT,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACZ,CAAC,EAJW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;AAUV,IAAMA,UAAQ,GAAd,MAAM,QAAS,SAAQ,MAAmC,CAAA;AAA1D,IAAA,WAAA,GAAA;;QAKb,IAAA,CAAA,WAAW,GAAuB,IAAI;QAGtC,IAAA,CAAA,SAAS,GAAkB,EAAE;IAiJ/B;;aAxJS,IAAA,CAAA,UAAU,GAAW,UAAX,CAAsB;IAUvC,MAAM,IAAI,CAAC,MAAoC,EAAA;AAC7C,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,EAAE;QAC1B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;AACrD,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG;QACtB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM;AAC7B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,EAAE;AAC9C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC;YACzC,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,cAAc,EAAE,IAAI;AACrB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,GAAG,IAAIC,eAAa,CAAC;AACjC,YAAA,MAAM,EAAE,IAAI;YACZ,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AACxC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAI;AAC1E,YAAA,IAAI,WAAW,GAAuB,IAAI,CAAC,WAAW;AACtD,YAAA,IAAI,IAAI,KAAK,eAAe,CAAC,YAAY,EAAE;gBACzC,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;AACvD,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;YAClC;YACA,IAAI,CAAC,WAAW,EAAE;gBAChB;YACF;AACA,YAAA,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;AACjC,YAAA,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAC1C,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE;gBACjC,KAAK;gBACL,IAAI;gBACJ,WAAW;AACZ,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,EAAE,GAAI,GAAG,CAAC,QAA0B,CAAC,EAAE;QAC7C,IAAI,EAAE,EAAE;AACN,YAAA,IAAI,CAAC,gCAAgC,GAAG,iCAAiC,CAAC,EAAE,CAAC;QAE/E;IACF;AAEA,IAAA,gBAAgB,CAAC,YAA8B,EAAA;AAC7C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAmE;AACrF,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAsB;QAC5C;AACA,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY;AAC1C,QAAA,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;AAC9B,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;AAC1B,gBAAA,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE;YAC5B;AACA,YAAA,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAClD;IACF;IAEQ,MAAM,iBAAiB,CAAC,MAAmC,EAAA;AACjE,QAAA,MAAM,WAAW,GAAgC;AAC/C,YAAA,GAAG,MAAM;AACT,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,YAAY,EAAE,IAAI;SACnB;AAED,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE;AAC7B,QAAA,IAAI;AACF,YAAA,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QAC7B;AAAE,QAAA,MAAM;YACN,MAAM,GAAG,CAAC,IAAI,CAAC;AACb,gBAAA,GAAG,WAAW;AACd,gBAAA,UAAU,EAAE,QAAQ;AACrB,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AACpB,QAAA,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK;AAE/B,QAAA,OAAO,GAAG;IACZ;IAEA,MAAM,GAAA;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC9C,QAAA,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE;YAC7B,IAAI,OAAO,CAAC,aAAa,KAAK,YAAY,IAAI,OAAO,CAAC,UAAU,EAAE;AAChE,gBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC;AAC1C,gBAAA,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM;oBAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;YAClF;AACA,YAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAC1C;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB;QACF;QACA,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAC9C,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC;YACtD,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;oBACpC,IAAI,EAAE,UAAU,CAAC,EAAE;oBACnB,SAAS;oBACT,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE,IAAI;AAC/D,iBAAA,CAAC;YACJ;AACA,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC;QACzC;IACF;AAEQ,IAAA,iBAAiB,CAAC,UAAuC,EAAA;AAC/D,QAAA,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,UAAU,CAAC,KAAK;YAAE;QACpD,IAAI,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC;QACpD,IAAI,CAAC,SAAS,EAAE;YACd,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,WAAW,EAAE,CAAC;QACxD;QACA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC;AACrD,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;IACrC;AAEA,IAAA,UAAU,CAAC,CAAC,EAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB;QACF;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;QACvB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;AAC3B,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE;AAChC,YAAA,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE;QACtB;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACvB;IAEA,MAAM,CAAC,KAAK,EAAE,MAAM,EAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB;QACF;AACA,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;QAC/C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;IACjD;;AAxJmBD,UAAQ,GAAA,UAAA,CAAA;IAJ5B,UAAU,CAAC,iBAAiB,CAAC;QAC5B,UAAU,EAAE,CAAC,QAAQ,CAAC;AACtB,QAAA,WAAW,EAAE,EAAE;KAChB;AACoB,CAAA,EAAAA,UAAQ,CAyJ5B;iBAzJoBA,UAAQ;;ACvB7B;AAIA,MAAM,CAAC,MAAM,CAACA,UAAQ,EAAE;AACtB,IAAA,WAAW,EAAE,6BAA6B;AAC1C,IAAA,cAAc,EAAE,OAAO;AACxB,CAAA,CAAC;;ACPF;AAMc,MAAO,QAA4B,SAAQ,MAAS,CAAA;AA2BhE,IAAA,WAAA,CAAY,MAAU,EAAA;QACpB,KAAK,CAAC,MAAM,CAAC;QAyBL,IAAA,CAAA,UAAU,GAA2B,EAAE;AAxB/C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAmE;AACrF,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;IACvC;;AAIA;;AAEG;IACH,gBAAgB,CAAC,QAA0B,EAAA,EAAI;AAE/C;;;AAGG;IACH,cAAc,CAAC,WAAuB,EAAA,EAAI;AAEjC,IAAA,MAAM,CAAC,CAAgB,EAAA;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC9C,QAAA,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAChC;IACF;AAIU,IAAA,eAAe,CAAC,EAAU,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5B;IAEU,eAAe,CAAC,EAAU,EAAE,OAAe,EAAA;QACnD,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,OAAO;IACxC;AACD;;AC/DD;AACO,MAAM,kBAAkB,GAAG;;;;"}
1
+ {"version":3,"file":"plugin-renderer.esm.js","sources":["../lib/manager/RendererManager.ts","../lib/manager/ContainerManager.ts","../lib/Transform2D.ts","../lib/PixiHierarchy.ts","../lib/compressedTexture/ability.ts","../lib/System.ts","../lib/__combosPackageMeta.gen.ts","../lib/Renderer.ts","../lib/index.ts"],"sourcesContent":["import isEqual from 'lodash-es/isEqual';\nimport { GameObject, Game, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport Renderer from '../Renderer';\nimport RendererSystem from '../System';\n\nclass RendererManager {\n game: Game;\n rendererSystem: RendererSystem;\n constructor({ game, rendererSystem }) {\n this.game = game;\n this.rendererSystem = rendererSystem;\n }\n renderers: Renderer[] = [];\n register(...renderers: Renderer[]) {\n for (const renderer of renderers) {\n renderer.game = this.game;\n renderer.rendererManager = this.rendererSystem.rendererManager;\n renderer.containerManager = this.rendererSystem.containerManager;\n this.renderers.push(renderer);\n }\n }\n componentChanged(changes: ComponentChanged[]) {\n for (const changed of changes) {\n for (const renderer of this.renderers) {\n const props = renderer.observerInfo[changed.componentName];\n if (props) {\n if ([OBSERVER_TYPE.ADD, OBSERVER_TYPE.REMOVE].indexOf(changed.type) > -1) {\n try {\n renderer.componentChanged && renderer.componentChanged(changed);\n } catch (e) {\n console.error(`gameObject: ${changed.gameObject.name}, ${changed.componentName} is error.`, changed, e);\n }\n continue;\n }\n\n const index = props.findIndex(prop => {\n return isEqual(prop, changed.prop);\n });\n\n if (index > -1) {\n try {\n renderer.componentChanged && renderer.componentChanged(changed);\n } catch (e) {\n console.error(\n `gameObject: ${changed.gameObject && changed.gameObject.name}, ${\n changed.componentName\n } is componentChanged error.`,\n changed,\n e,\n );\n }\n }\n }\n }\n }\n }\n update(gameObject: GameObject) {\n for (const component of gameObject.components) {\n for (const renderer of this.renderers) {\n const cache = [];\n const props = renderer.observerInfo[component.name];\n if (props && cache.indexOf(gameObject) === -1) {\n cache.push(gameObject);\n try {\n renderer.rendererUpdate && renderer.rendererUpdate(gameObject);\n } catch (e) {\n console.info(`gameObject: ${gameObject.name}, ${component.name} is update error`, e);\n }\n }\n }\n }\n }\n}\nexport default RendererManager;\n","import { Point, ObservablePoint } from 'pixi.js';\nimport { Container } from '@combos-fun/renderer-adapter';\nimport type Transform2D from '../Transform2D';\n\nexport default class ContainerManager {\n containerMap: { [propName: number]: Container } = {};\n addContainer({ name, container }: { name: number; container: Container }) {\n this.containerMap[name] = container;\n }\n getContainer(name: number) {\n return this.containerMap[name];\n }\n removeContainer(name: number) {\n this.containerMap[name]?.destroy({ children: true });\n delete this.containerMap[name];\n }\n updateTransform({\n name,\n transform,\n parentSize,\n }: {\n name: number;\n transform: Transform2D;\n parentSize?: { width: number; height: number };\n }) {\n const container = this.containerMap[name];\n if (!container || !transform) return;\n const { anchor, origin, position, rotation, scale, size, skew } = transform;\n container.rotation = rotation;\n container.scale = scale as Point;\n container.pivot.x = size.width * origin.x;\n container.pivot.y = size.height * origin.y;\n container.skew = skew as ObservablePoint;\n let x = position.x;\n let y = position.y;\n if (parentSize) {\n x = x + parentSize.width * anchor.x;\n y = y + parentSize.height * anchor.y;\n }\n\n container.position = { x, y } as Point;\n }\n}\n","import { Component } from '@combos-fun/engine';\nimport type { ComponentParams } from '@combos-fun/engine';\nimport { Field } from '@combos-fun/inspector-decorator';\n\ninterface Vector2 {\n x: number;\n y: number;\n}\n\ninterface Size2 {\n width: number;\n height: number;\n}\n\nexport interface TransformMatrix {\n a: number;\n b: number;\n c: number;\n d: number;\n tx: number;\n ty: number;\n array?: number[];\n}\n\nexport interface Transform2DParams extends ComponentParams {\n position?: Vector2;\n size?: Size2;\n origin?: Vector2;\n anchor?: Vector2;\n scale?: Vector2;\n skew?: Vector2;\n rotation?: number;\n}\n\n/** 2D layout pose. Hierarchy lives on GameObject. */\nclass Transform2D extends Component<Transform2DParams> {\n static componentName: string = 'Transform2D';\n readonly name: string = 'Transform2D';\n\n worldTransform: TransformMatrix;\n\n init(params: Transform2DParams = {}) {\n const props = ['position', 'size', 'origin', 'anchor', 'scale', 'skew'];\n for (const key of props) {\n Object.assign(this[key], params[key]);\n }\n this.rotation = params.rotation ?? this.rotation;\n }\n\n @Field({\n type: 'vector2',\n step: 1,\n group: 'Transform2D',\n label: 'Position',\n description: 'Position on the design canvas (x right, y down).',\n })\n position: Vector2 = {x: 0, y: 0};\n\n @Field({\n type: 'size',\n step: 1,\n min: 0,\n group: 'Transform2D',\n label: 'Size',\n description: 'Width and height of the object in design pixels.',\n })\n size: Size2 = {width: 0, height: 0};\n\n @Field({\n type: 'vector2',\n step: 0.1,\n group: 'Transform2D',\n label: 'Origin',\n description: 'Local origin used for layout math.',\n })\n origin: Vector2 = {x: 0, y: 0};\n\n @Field({\n type: 'vector2',\n step: 0.1,\n group: 'Transform2D',\n label: 'Anchor',\n description: 'Anchor point (0–1) used when positioning and scaling.',\n })\n anchor: Vector2 = {x: 0, y: 0};\n\n @Field({\n type: 'vector2',\n step: 0.1,\n group: 'Transform2D',\n label: 'Scale',\n description: 'Scale multipliers on X and Y (1 = original size).',\n })\n scale: Vector2 = {x: 1, y: 1};\n\n @Field({\n type: 'vector2',\n step: 0.1,\n group: 'Transform2D',\n label: 'Skew',\n description: 'Skew amounts on X and Y.',\n })\n skew: Vector2 = {x: 0, y: 0};\n\n @Field({\n type: 'number',\n step: 0.1,\n group: 'Transform2D',\n label: 'Rotation',\n description: 'Rotation in radians.',\n editor: 'number-stepper',\n })\n rotation: number = 0;\n}\n\nexport default Transform2D;\n","import { decorators, ComponentChanged, OBSERVER_TYPE, Scene, LOAD_SCENE_MODE, GameObject } from '@combos-fun/engine';\nimport EventEmitter from 'eventemitter3';\nimport { Application, Container } from '@combos-fun/renderer-adapter';\nimport Render from './System';\nimport ContainerManager from './manager/ContainerManager';\nimport Transform2D from './Transform2D';\n\ntype RenderSortDirty = { sortDirty: boolean };\n\n@decorators.componentObserver({\n GameObject: ['parent'],\n Transform2D: [],\n})\nexport default class PixiHierarchy extends EventEmitter {\n name: string = 'PixiHierarchy';\n waitRemoveIds: number[] = [];\n system: Render;\n containerManager: ContainerManager;\n waitChangeScenes: {\n scene: Scene;\n mode: LOAD_SCENE_MODE;\n application: Application;\n }[] = [];\n constructor({ system, containerManager }) {\n super();\n this.containerManager = containerManager;\n this.init(system);\n }\n init(system: Render) {\n this.system = system;\n this.on('changeScene', ({ scene, mode, application }) => {\n this.waitChangeScenes.push({ scene, mode, application });\n });\n }\n update() {\n for (const id of this.waitRemoveIds) {\n this.containerManager.removeContainer(id);\n }\n this.waitRemoveIds = [];\n\n for (const sceneInfo of this.waitChangeScenes) {\n this.ensureSceneContainer(sceneInfo.scene);\n const container = this.containerManager.getContainer(sceneInfo.scene.id);\n if (container) {\n sceneInfo.application.stage.removeChildren();\n sceneInfo.application.stage.addChild(container);\n }\n }\n this.waitChangeScenes = [];\n }\n ensureSceneContainer(scene: Scene) {\n if (this.containerManager.getContainer(scene.id)) return;\n const container = new Container();\n container.label = scene.name;\n this.containerManager.addContainer({\n name: scene.id,\n container,\n });\n }\n ensureContainer(gameObject: GameObject, transform: Transform2D) {\n if (this.containerManager.getContainer(gameObject.id)) {\n transform.worldTransform = this.containerManager.getContainer(gameObject.id)\n .worldTransform as unknown as Transform2D['worldTransform'];\n return;\n }\n const container = new Container();\n container.label = gameObject.name;\n this.containerManager.addContainer({\n name: gameObject.id,\n container,\n });\n transform.worldTransform = container.worldTransform as unknown as Transform2D['worldTransform'];\n }\n componentChanged(changed: ComponentChanged) {\n if (changed.componentName === 'GameObject') {\n this.reparent(changed.gameObject);\n return;\n }\n if (changed.componentName !== 'Transform2D') return;\n if (changed.type === OBSERVER_TYPE.ADD) {\n this.ensureContainer(changed.gameObject, changed.component as Transform2D);\n this.reparent(changed.gameObject);\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.waitRemoveIds.push(changed.gameObject.id);\n }\n }\n reparent(gameObject?: GameObject) {\n if (!gameObject) return;\n const container = this.containerManager.getContainer(gameObject.id);\n if (!container) return;\n if (gameObject.parent) {\n const parentContainer = this.containerManager.getContainer(gameObject.parent.id);\n if (parentContainer && container.parent !== parentContainer) {\n parentContainer.addChild(container);\n }\n const render = gameObject.parent.getComponent('Render') as unknown as RenderSortDirty;\n if (render) {\n render.sortDirty = true;\n }\n } else if (container.parent) {\n const transform = gameObject.getComponent(Transform2D);\n if (transform) {\n delete transform.worldTransform;\n }\n container.parent.removeChild(container);\n }\n }\n destroy() {\n this.removeAllListeners();\n this.waitRemoveIds = null;\n this.waitChangeScenes = null;\n this.system = null;\n this.containerManager = null;\n }\n}\n","/**\n * Inspired by PixiJS v6\n */\nexport type CompressedTextureExtensions = {\n s3tc?: WEBGL_compressed_texture_s3tc,\n s3tc_sRGB: WEBGL_compressed_texture_s3tc_srgb,\n etc: WEBGL_compressed_texture_etc,\n etc1: WEBGL_compressed_texture_etc1,\n pvrtc: WEBKIT_WEBGL_compressed_texture_pvrtc,\n atc: WEBGL_compressed_texture_atc,\n astc: WEBGL_compressed_texture_astc\n};\nexport type CompressedTextureExtensionRef = keyof CompressedTextureExtensions;\nlet result = undefined;\nexport interface SuportedCompressedTexture {\n s3tc: boolean,\n etc: boolean,\n etc1: boolean,\n pvrtc: boolean,\n atc: boolean,\n astc: boolean,\n}\nexport function getSuportCompressedTextureFormats(gl: WebGLRenderingContext): SuportedCompressedTexture {\n if (result) return result;\n\n if (!gl) {\n // #if _DEBUG\n console.warn('WebGL not available for compressed textures. Silently failing.');\n // #endif\n\n return {\n s3tc: false,\n etc: false,\n etc1: false,\n pvrtc: false,\n atc: false,\n astc: false,\n };\n }\n\n result = {\n s3tc: !!gl.getExtension('WEBGL_compressed_texture_s3tc'),\n etc: !!gl.getExtension('WEBGL_compressed_texture_etc'),\n etc1: !!gl.getExtension('WEBGL_compressed_texture_etc1'),\n pvrtc: !!gl.getExtension('WEBGL_compressed_texture_pvrtc')\n || !!gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc'),\n atc: !!gl.getExtension('WEBGL_compressed_texture_atc'),\n astc: !!gl.getExtension('WEBGL_compressed_texture_astc')\n };\n\n try {\n console.log('Supported compressed texture formats: ' + Object.keys(result).filter((type) => result[type]).join(', '))\n } catch (e) { }\n return result;\n}","import { System, decorators, Game, LOAD_SCENE_MODE, PureObserverInfo } from '@combos-fun/engine';\nimport { Application } from '@combos-fun/renderer-adapter';\nimport RendererManager from './manager/RendererManager';\nimport ContainerManager from './manager/ContainerManager';\nimport PixiHierarchy from './PixiHierarchy';\nimport Transform2D from './Transform2D';\nimport { Ticker } from 'pixi.js';\nimport type { ApplicationOptions } from 'pixi.js';\nimport type { Renderer as PixiRenderer } from 'pixi.js';\nimport type { WebGLRenderer } from 'pixi.js';\nimport { registerCompressedTexture } from './compressedTexture';\nimport { SuportedCompressedTexture, getSuportCompressedTextureFormats } from './compressedTexture/ability';\n\nexport enum RENDERER_TYPE {\n UNKNOWN = 0,\n WEBGL = 1,\n CANVAS = 2,\n}\n\n@decorators.componentObserver({\n GameObject: ['parent'],\n Transform2D: [],\n})\nexport default class Renderer extends System<Partial<ApplicationOptions>> {\n static systemName: string = 'Renderer';\n params: Partial<ApplicationOptions>;\n rendererManager: RendererManager;\n containerManager: ContainerManager;\n application: Application | null = null;\n game: Game;\n hierarchy: PixiHierarchy;\n multiApps: Application[] = [];\n suportedCompressedTextureFormats: SuportedCompressedTexture;\n\n async init(params?: Partial<ApplicationOptions>) {\n this.params = params ?? {};\n const app = await this.createApplication(this.params);\n this.application = app;\n this.game.canvas = app.canvas;\n this.containerManager = new ContainerManager();\n this.rendererManager = new RendererManager({\n game: this.game,\n rendererSystem: this,\n });\n\n this.hierarchy = new PixiHierarchy({\n system: this,\n containerManager: this.containerManager,\n });\n this.game.on('sceneChanged', async ({ scene, mode, params: sceneParams }) => {\n let application: Application | null = this.application;\n if (mode === LOAD_SCENE_MODE.MULTI_CANVAS) {\n application = await this.createApplication(sceneParams);\n this.multiApps.push(application);\n }\n if (!application) {\n return;\n }\n scene.canvas = application.canvas;\n this.hierarchy.ensureSceneContainer(scene);\n this.hierarchy.emit('changeScene', {\n scene,\n mode,\n application,\n });\n });\n\n const gl = (app.renderer as WebGLRenderer).gl;\n if (gl) {\n this.suportedCompressedTextureFormats = getSuportCompressedTextureFormats(gl);\n registerCompressedTexture(gl);\n }\n }\n\n registerObserver(observerInfo: PureObserverInfo): void {\n const Ctor = this.constructor as typeof Renderer & { observerInfo: PureObserverInfo };\n if (!Ctor.observerInfo) {\n Ctor.observerInfo = {} as PureObserverInfo;\n }\n const thisObserverInfo = Ctor.observerInfo;\n for (const key in observerInfo) {\n if (!thisObserverInfo[key]) {\n thisObserverInfo[key] = [];\n }\n thisObserverInfo[key].push(...observerInfo[key]);\n }\n }\n\n private async createApplication(params: Partial<ApplicationOptions>): Promise<Application> {\n const initOptions: Partial<ApplicationOptions> = {\n ...params,\n autoStart: true,\n sharedTicker: true,\n };\n\n const app = new Application();\n try {\n await app.init(initOptions);\n } catch {\n await app.init({\n ...initOptions,\n preference: 'canvas',\n });\n }\n\n Ticker.shared.stop();\n Ticker.shared.autoStart = false;\n\n return app;\n }\n\n update() {\n const changes = this.componentObserver.clear();\n for (const changed of changes) {\n if (changed.componentName === 'GameObject' && changed.gameObject) {\n this.ensureTransform2D(changed.gameObject);\n if (changed.gameObject.parent) this.ensureTransform2D(changed.gameObject.parent);\n }\n this.hierarchy.componentChanged(changed);\n }\n if (!this.application) {\n return;\n }\n for (const gameObject of this.game.gameObjects) {\n const transform = gameObject.getComponent(Transform2D);\n if (transform) {\n this.containerManager.updateTransform({\n name: gameObject.id,\n transform,\n parentSize: gameObject.parent?.getComponent(Transform2D)?.size,\n });\n }\n this.rendererManager.update(gameObject);\n }\n }\n\n private ensureTransform2D(gameObject: Game['gameObjects'][number]) {\n if (!gameObject || gameObject === gameObject.scene) return;\n let transform = gameObject.getComponent(Transform2D);\n if (!transform) {\n transform = gameObject.addComponent(new Transform2D());\n }\n this.hierarchy.ensureContainer(gameObject, transform);\n this.hierarchy.reparent(gameObject);\n }\n\n lateUpdate(e) {\n if (!this.application) {\n return;\n }\n this.hierarchy.update();\n this.application.ticker.update(e.time);\n }\n\n onDestroy() {\n this.application?.destroy();\n for (const app of this.multiApps) {\n app && app.destroy();\n }\n this.hierarchy.destroy();\n this.hierarchy = null;\n this.params = null;\n this.rendererManager = null;\n this.containerManager = null;\n this.application = null;\n this.game = null;\n this.multiApps = null;\n }\n\n resize(width, height) {\n if (!this.application) {\n return;\n }\n this.params = { ...this.params, width, height };\n this.application.renderer.resize(width, height);\n }\n}\n","/** Auto-generated by scripts/build-package.mjs — do not edit. */\n\nimport Renderer from './System';\n\nObject.assign(Renderer, {\n packageName: \"@combos-fun/plugin-renderer\",\n packageVersion: \"0.1.1\",\n});\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport { GameObject, Game, PureObserverInfo, ComponentChanged, System, UpdateParams } from '@combos-fun/engine';\nimport ContainerManager from './manager/ContainerManager';\nimport RendererManager from './manager/RendererManager';\n\nexport default class Renderer<T extends {} = {}> extends System<T> {\n /**\n * Renderer name\n */\n name: string;\n\n /**\n * currentGame\n */\n game: Game;\n\n /**\n * observer component props info\n */\n static observerInfo: PureObserverInfo;\n\n /**\n * observer component props info\n */\n observerInfo: PureObserverInfo;\n\n /**\n * containerManager\n */\n containerManager: ContainerManager;\n rendererManager: RendererManager;\n\n constructor(params?: T) {\n super(params);\n const Ctor = this.constructor as typeof Renderer & { observerInfo: PureObserverInfo };\n this.observerInfo = Ctor.observerInfo;\n }\n\n // init(arg?: any): void;\n\n /**\n * Called when an observed component property changes.\n */\n componentChanged(_changed: ComponentChanged) { }\n\n /**\n * Called every frame.\n * @param _gameObject gameObject\n */\n rendererUpdate(_gameObject: GameObject) { }\n\n override update(e?: UpdateParams): void {\n const changes = this.componentObserver.clear();\n for (const changed of changes) {\n this.componentChanged(changed);\n }\n }\n\n protected asyncIdMap: Record<number, number> = {}\n\n protected increaseAsyncId(id: number) {\n this.asyncIdMap[id] = (this.asyncIdMap[id] || 0) + 1;\n return this.asyncIdMap[id];\n }\n\n protected validateAsyncId(id: number, asyncId: number) {\n return this.asyncIdMap[id] === asyncId;\n }\n}\n","import RendererSystem, { RENDERER_TYPE } from './System';\nimport RendererManager from './manager/RendererManager';\nimport ContainerManager from './manager/ContainerManager';\nimport Renderer from './Renderer';\nimport Transform2D from './Transform2D';\n\n/** Shared resource cache key separator used across renderer plugins */\nexport const RESOURCE_KEY_SPLIT = '_s|r|c_';\n\nexport type { Transform2DParams, TransformMatrix } from './Transform2D';\nexport { RendererManager, ContainerManager, RendererSystem, RENDERER_TYPE, Renderer, Transform2D };\n\n"],"names":["Renderer","PixiHierarchy"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@combos-fun/plugin-renderer",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "2D rendering foundation",
5
5
  "main": "index.js",
6
6
  "module": "dist/plugin-renderer.esm.js",
@@ -40,9 +40,9 @@
40
40
  "lodash-es": "^4.17.21",
41
41
  "pixi.js": "^8.18.1",
42
42
  "resource-loader": "^4.0.0-rc4",
43
- "@combos-fun/engine": "0.1.0",
44
- "@combos-fun/inspector-decorator": "0.1.0",
45
- "@combos-fun/renderer-adapter": "0.1.0"
43
+ "@combos-fun/engine": "0.1.1",
44
+ "@combos-fun/inspector-decorator": "0.1.1",
45
+ "@combos-fun/renderer-adapter": "0.1.1"
46
46
  },
47
47
  "scripts": {
48
48
  "build": "node ../../scripts/build-package.mjs"