@combos-fun/plugin-matterjs 0.1.4-beta.0 → 0.1.4-beta.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.
@@ -568,7 +568,7 @@ var PhysicsSystem = PhysicsSystem$1;
568
568
  /** Auto-generated by scripts/build-package.mjs — do not edit. */
569
569
  Object.assign(PhysicsSystem, {
570
570
  packageName: "@combos-fun/plugin-matterjs",
571
- packageVersion: "0.1.4-beta.0",
571
+ packageVersion: "0.1.4-beta.1",
572
572
  });
573
573
 
574
574
  exports.Physics = Physics;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-matterjs.cjs.js","sources":["../lib/Physics.ts","../lib/BodiesFactory.ts","../lib/MatterPixiDebugRenderer.ts","../lib/PhysicsEngine.ts","../lib/PhysicsSystem.ts","../lib/__combosPackageMeta.gen.ts"],"sourcesContent":["import { Component } from '@combos-fun/engine';\nimport { Transform2D } from '@combos-fun/plugin-renderer';\nimport Matter from 'matter-js';\n\nexport enum PhysicsType {\n RECTANGLE = 'rectangle',\n CIRCLE = 'circle',\n POLYGON = 'polygon',\n TRAPEZOID = 'trapezoid',\n FROM_VERTICES = 'fromVertices',\n CAPSULE = 'capsule',\n COMPOUND = 'compound',\n EDGE = 'edge',\n CHAIN = 'chain',\n}\n\nexport interface PhysicsVertex {\n x: number\n y: number\n}\n\nexport interface PhysicsBodyOptions {\n isStatic?: boolean,\n restitution?: number,\n density?: number,\n [propName: string]: any,\n}\n\n/** One piece of a `COMPOUND` body. Nested `COMPOUND` is not allowed. */\nexport interface PhysicsPartParams {\n type: PhysicsType\n bodyOptions?: PhysicsBodyOptions\n position?: {\n x?: number\n y?: number\n }\n sides?: number\n radius?: number\n width?: number\n height?: number\n slope?: number\n vertices?: PhysicsVertex[]\n vertexSets?: PhysicsVertex[][]\n length?: number\n from?: PhysicsVertex\n to?: PhysicsVertex\n thickness?: number\n}\n\nexport interface PhysicsParams {\n type?: PhysicsType\n bodyOptions?: PhysicsBodyOptions\n position?: {\n x?: number\n y?: number\n }\n sides?: number\n radius?: number\n stopRotation?: boolean\n width?: number\n height?: number\n slope?: number\n vertices?: PhysicsVertex[]\n vertexSets?: PhysicsVertex[][]\n length?: number\n from?: PhysicsVertex\n to?: PhysicsVertex\n thickness?: number\n parts?: PhysicsPartParams[]\n}\n\nexport class Physics extends Component<PhysicsParams> {\n static componentName: string = 'Physics';\n public bodyParams: PhysicsParams;\n public body: Matter.Body;\n private PhysicsEngine: Matter.Engine;\n\n init(params: PhysicsParams) {\n this.bodyParams = params;\n }\n\n update() {\n if (this.body && this.gameObject) {\n const transform = this.gameObject.getComponent(Transform2D);\n if (!transform) return;\n transform.anchor.x = 0;\n transform.anchor.y = 0;\n transform.position.x = this.body.position.x;\n transform.position.y = this.body.position.y;\n if (!this.bodyParams.stopRotation) {\n transform.rotation = this.body.angle;\n }\n }\n }\n onDestroy() {\n Matter.World.remove(this.PhysicsEngine.world, this.body, true);\n }\n}\n","import Matter from 'matter-js';\nimport decomp from 'poly-decomp';\nimport { PhysicsType, Physics, PhysicsParams, PhysicsPartParams } from './Physics';\nimport { GameObject } from '@combos-fun/engine';\nimport { Transform2D } from '@combos-fun/plugin-renderer';\n\ntype ShapeParams = PhysicsParams | PhysicsPartParams;\n\ninterface ShapeContext {\n x: number\n y: number\n transformWidth: number\n transformHeight: number\n defaultRadius: number\n}\n\ninterface Vector2 {\n x: number\n y: number\n}\n\nconst DEFAULT_THICKNESS = 4;\nconst MIN_SEGMENT = 0.5;\n\nlet decompRegistered = false;\n\nfunction ensureDecomp() {\n if (decompRegistered) {\n return;\n }\n const lib = (decomp as any)?.quickDecomp ? decomp : (decomp as any)?.default;\n if (lib?.quickDecomp) {\n Matter.Common.setDecomp(lib);\n }\n decompRegistered = true;\n}\n\nexport default class BodiesFactory {\n private Bodies: typeof Matter.Bodies;\n constructor() {\n this.Bodies = Matter.Bodies;\n ensureDecomp();\n }\n\n public create(component: Physics): Matter.Body {\n const { gameObject, bodyParams } = component;\n const coordinate = this.getCoordinate(gameObject);\n const x = bodyParams.position ? bodyParams.position.x : coordinate.x;\n const y = bodyParams.position ? bodyParams.position.y : coordinate.y;\n const transform = gameObject.getComponent(Transform2D);\n const transformWidth =\n (transform?.size.width ?? 0) * (transform?.scale.x ?? 1);\n const transformHeight =\n (transform?.size.height ?? 0) * (transform?.scale.y ?? 1);\n /** Matter.circle approximates with a polygon; NaN/0 radius breaks vertices. */\n const defaultRadius = Math.max(1, Math.min(transformWidth, transformHeight) / 2);\n const body = this.createShape(bodyParams, {\n x,\n y,\n transformWidth,\n transformHeight,\n defaultRadius,\n }, false);\n if (!body) {\n throw new Error(\n `[plugin-matterjs] Failed to create body for type ${String(bodyParams.type)}`,\n );\n }\n return body;\n }\n\n private createShape(\n params: ShapeParams,\n ctx: ShapeContext,\n isPart: boolean,\n ): Matter.Body {\n const options = params.bodyOptions;\n switch (params.type) {\n case PhysicsType.RECTANGLE: {\n const width = params.width ?? ctx.transformWidth;\n const height = params.height ?? ctx.transformHeight;\n return this.Bodies.rectangle(ctx.x, ctx.y, width, height, options);\n }\n case PhysicsType.CIRCLE: {\n const radius = params.radius ?? ctx.defaultRadius;\n return this.Bodies.circle(ctx.x, ctx.y, radius, options);\n }\n case PhysicsType.POLYGON: {\n const sides = Math.max(3, params.sides ?? 6);\n const radius = params.radius ?? ctx.defaultRadius;\n return this.Bodies.polygon(ctx.x, ctx.y, sides, radius, options);\n }\n case PhysicsType.TRAPEZOID: {\n const width = params.width ?? ctx.transformWidth;\n const height = params.height ?? ctx.transformHeight;\n const slope = Math.min(Math.max(params.slope ?? 0.5, 0), 0.999);\n return this.Bodies.trapezoid(ctx.x, ctx.y, width, height, slope, options);\n }\n case PhysicsType.FROM_VERTICES:\n return this.createFromVertices(params, ctx, options);\n case PhysicsType.CAPSULE:\n return this.createCapsule(params, ctx, options);\n case PhysicsType.EDGE:\n return this.createEdge(params, ctx, options);\n case PhysicsType.CHAIN:\n return this.createChain(params, ctx, options);\n case PhysicsType.COMPOUND:\n if (isPart) {\n throw new Error('[plugin-matterjs] Nested COMPOUND parts are not supported');\n }\n return this.createCompound(params, ctx, options);\n default:\n throw new Error(\n `[plugin-matterjs] Unsupported PhysicsType: ${String(params.type)}`,\n );\n }\n }\n\n private createFromVertices(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n const sets = params.vertexSets ?? (params.vertices ? [params.vertices] : []);\n if (!sets.length || sets.some(set => !set || set.length < 3)) {\n throw new Error(\n '[plugin-matterjs] FROM_VERTICES requires vertices (or vertexSets) with at least 3 points each',\n );\n }\n ensureDecomp();\n const body = this.Bodies.fromVertices(\n ctx.x,\n ctx.y,\n sets as Matter.Vector[][],\n options,\n true,\n );\n if (!body) {\n throw new Error('[plugin-matterjs] FROM_VERTICES produced an empty body');\n }\n return body;\n }\n\n private createCapsule(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n const radius = Math.max(1, params.radius ?? ctx.defaultRadius);\n const length = Math.max(radius * 2, params.length ?? ctx.transformWidth);\n const shaft = length - radius * 2;\n if (shaft < MIN_SEGMENT) {\n return this.Bodies.circle(ctx.x, ctx.y, radius, options);\n }\n const parts = [\n this.Bodies.rectangle(ctx.x, ctx.y, shaft, radius * 2),\n this.Bodies.circle(ctx.x - shaft / 2, ctx.y, radius),\n this.Bodies.circle(ctx.x + shaft / 2, ctx.y, radius),\n ];\n return Matter.Body.create({ ...options, parts });\n }\n\n private createEdge(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n if (!params.from || !params.to) {\n throw new Error('[plugin-matterjs] EDGE requires from and to');\n }\n const x1 = ctx.x + params.from.x;\n const y1 = ctx.y + params.from.y;\n const x2 = ctx.x + params.to.x;\n const y2 = ctx.y + params.to.y;\n const dx = x2 - x1;\n const dy = y2 - y1;\n const len = Math.hypot(dx, dy);\n if (len < MIN_SEGMENT) {\n throw new Error('[plugin-matterjs] EDGE from/to are too close');\n }\n const thickness = Math.max(1, params.thickness ?? DEFAULT_THICKNESS);\n const { angle: _ignored, ...rest } = options ?? {};\n return this.Bodies.rectangle((x1 + x2) / 2, (y1 + y2) / 2, len, thickness, {\n ...rest,\n angle: Math.atan2(dy, dx),\n });\n }\n\n private createChain(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n const verts = params.vertices;\n if (!verts || verts.length < 2) {\n throw new Error('[plugin-matterjs] CHAIN requires vertices with at least 2 points');\n }\n const thickness = Math.max(1, params.thickness ?? DEFAULT_THICKNESS);\n const parts: Matter.Body[] = [];\n for (let i = 0; i < verts.length - 1; i++) {\n const a = verts[i];\n const b = verts[i + 1];\n const x1 = ctx.x + a.x;\n const y1 = ctx.y + a.y;\n const x2 = ctx.x + b.x;\n const y2 = ctx.y + b.y;\n const dx = x2 - x1;\n const dy = y2 - y1;\n const len = Math.hypot(dx, dy);\n if (len < MIN_SEGMENT) {\n continue;\n }\n parts.push(this.Bodies.rectangle(\n (x1 + x2) / 2,\n (y1 + y2) / 2,\n len,\n thickness,\n { angle: Math.atan2(dy, dx) },\n ));\n }\n if (!parts.length) {\n throw new Error('[plugin-matterjs] CHAIN has no usable segments');\n }\n return Matter.Body.create({ ...options, parts });\n }\n\n private createCompound(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n const partParams = (params as PhysicsParams).parts;\n if (!partParams?.length) {\n throw new Error('[plugin-matterjs] COMPOUND requires a non-empty parts array');\n }\n const parts: Matter.Body[] = [];\n for (let i = 0; i < partParams.length; i++) {\n const part = partParams[i];\n const ox = ctx.x + (part.position?.x ?? 0);\n const oy = ctx.y + (part.position?.y ?? 0);\n const partBody = this.createShape(part, { ...ctx, x: ox, y: oy }, true);\n parts.push(...this.asParts(partBody));\n }\n if (!parts.length) {\n throw new Error('[plugin-matterjs] COMPOUND produced no parts');\n }\n return Matter.Body.create({ ...options, parts });\n }\n\n /** Unwrap a compound wrapper so it can be merged into another parent. */\n private asParts(body: Matter.Body): Matter.Body[] {\n if (body.parts && body.parts.length > 1) {\n return body.parts.slice(1);\n }\n return [body];\n }\n\n private getCoordinate(gameObject: GameObject): Vector2 {\n const transform = gameObject.getComponent(Transform2D);\n const parentSize = gameObject.parent?.getComponent(Transform2D)?.size;\n const x = (transform?.position.x ?? 0) + (transform?.anchor.x ?? 0) * (parentSize?.width ?? 0);\n const y = (transform?.position.y ?? 0) + (transform?.anchor.y ?? 0) * (parentSize?.height ?? 0);\n return {\n x,\n y,\n };\n }\n}\n","import Matter from 'matter-js';\nimport { Application, Graphics } from 'pixi.js';\n\nexport interface MatterPixiDebugOptions {\n engine: Matter.Engine;\n canvas: HTMLCanvasElement;\n width: number;\n height: number;\n resolution?: number;\n}\n\n/** WebGL wireframe overlay for Matter bodies in test mode. */\nexport class MatterPixiDebugRenderer {\n private readonly engine: Matter.Engine;\n private readonly opts: MatterPixiDebugOptions;\n private app: Application | null = null;\n private graphics: Graphics | null = null;\n private readonly onAfterUpdate: () => void;\n\n constructor(opts: MatterPixiDebugOptions) {\n this.opts = opts;\n this.engine = opts.engine;\n this.onAfterUpdate = () => this.redraw();\n }\n\n async init(): Promise<void> {\n const { canvas, width, height, resolution = 1 } = this.opts;\n const app = new Application();\n await app.init({\n canvas,\n width,\n height,\n resolution,\n autoDensity: true,\n antialias: true,\n backgroundAlpha: 0.12,\n preference: 'webgl',\n });\n this.app = app;\n this.graphics = new Graphics();\n app.stage.addChild(this.graphics);\n Matter.Events.on(this.engine, 'afterUpdate', this.onAfterUpdate);\n }\n\n private redraw(): void {\n const g = this.graphics;\n if (!g) {\n return;\n }\n g.clear();\n const bodies = Matter.Composite.allBodies(this.engine.world);\n for (let b = 0; b < bodies.length; b++) {\n const body = bodies[b];\n if (body.render?.visible === false) {\n continue;\n }\n const pieces = body.parts && body.parts.length > 1 ? body.parts.slice(1) : [body];\n for (let p = 0; p < pieces.length; p++) {\n const verts = pieces[p].vertices;\n if (!verts?.length) {\n continue;\n }\n const v0 = verts[0];\n g.moveTo(v0.x, v0.y);\n for (let i = 1; i < verts.length; i++) {\n g.lineTo(verts[i].x, verts[i].y);\n }\n g.closePath();\n g.stroke({ width: 1, color: 0x00e676, alpha: 0.9 });\n }\n }\n }\n\n destroy(): void {\n Matter.Events.off(this.engine, 'afterUpdate', this.onAfterUpdate);\n if (this.app) {\n this.app.destroy(true, { children: true, texture: true });\n this.app = null;\n }\n this.graphics = null;\n }\n}\n","import Matter from 'matter-js';\n\nimport BodiesFactory from './BodiesFactory';\nimport { Game } from '@combos-fun/engine';\nimport type { PhysicsSystemParams } from './PhysicsSystem';\nimport type { Physics } from './Physics';\nimport { MatterPixiDebugRenderer } from './MatterPixiDebugRenderer';\n\nexport interface PhysicsLinkedBody extends Matter.Body {\n component: Physics;\n}\n\n/** Collision pairs often report a compound part, not the parent body. */\nfunction resolveLinkedComponent(body: Matter.Body): Physics | undefined {\n let current: Matter.Body | undefined = body;\n while (current) {\n const linked = current as PhysicsLinkedBody;\n if (linked.component) {\n return linked.component;\n }\n if (!current.parent || current.parent === current) {\n break;\n }\n current = current.parent;\n }\n return undefined;\n}\n\nexport default class PhysicsEngine {\n private Engine: typeof Matter.Engine;\n private World: typeof Matter.World;\n private engine: Matter.Engine;\n private bodiesFactory: BodiesFactory;\n private collisionEvents: string[];\n private bodyEvents: string[];\n private options: PhysicsSystemParams;\n private game: Game;\n private Runner: typeof Matter.Runner;\n private Constraint: typeof Matter.Constraint;\n private mouseConstraint: Matter.MouseConstraint;\n private runner: Matter.Runner;\n private debugRenderer: MatterPixiDebugRenderer | null = null;\n public enabled: boolean = false;\n constructor(game: Game, options: PhysicsSystemParams) {\n this.Engine = Matter.Engine;\n this.World = Matter.World;\n this.bodiesFactory = new BodiesFactory();\n this.Runner = Matter.Runner;\n this.Constraint = Matter.Constraint;\n this.game = game;\n\n this.collisionEvents = ['collisionStart', 'collisionActive', 'collisionEnd'];\n this.bodyEvents = ['tick', 'beforeUpdate', 'afterUpdate', 'beforeRender', 'afterRender', 'afterTick'];\n this.options = options;\n this.runner = this.Runner.create({\n delta: 1000 / (this.options.fps || 60),\n frameDeltaSmoothing: (this.options.deltaSampleSize ?? 1) > 1,\n });\n }\n\n public start() {\n this.engine = this.Engine.create();\n const world = this.World.create(this.options.world as Matter.IWorldDefinition);\n this.engine.world = world;\n if (this.options.isTest) {\n const ownCanvas = !this.options.canvas;\n const canvas = this.options.canvas ?? document.createElement('canvas');\n if (ownCanvas && this.options.element) {\n this.options.element.appendChild(canvas);\n }\n const resolution = this.options.resolution || 1;\n this.debugRenderer = new MatterPixiDebugRenderer({\n engine: this.engine,\n canvas,\n width: this.game.canvas.width / resolution,\n height: this.game.canvas.height / resolution,\n resolution,\n });\n void this.debugRenderer.init().catch(err => {\n console.error('[plugin-matterjs] MatterPixiDebugRenderer init failed', err);\n });\n this.Runner.run(this.runner, this.engine);\n }\n this.enabled = true;\n this.initMouse();\n this.initCollisionEvents();\n this.initBodyEvents();\n }\n\n public update(e) {\n if (!this.engine) {\n return;\n }\n if (!this.options.isTest) {\n this.Runner.tick(this.runner, this.engine, e.currentTime);\n }\n }\n\n public stop() {\n this.enabled = false;\n this.runner.enabled = false;\n }\n\n public destroy() {\n this.debugRenderer?.destroy();\n this.debugRenderer = null;\n if (this.engine) {\n Matter.Runner.stop(this.runner);\n Matter.Engine.clear(this.engine);\n }\n }\n\n public awake() {\n this.enabled = true;\n this.runner.enabled = true;\n }\n public add(component) {\n const body = this.createBodies(component);\n this.World.add(this.engine.world, [body]);\n this.linkComponent(component, body);\n }\n\n public change(component: Physics) {\n const newBody = this.createBodies(component);\n this.World.remove(this.engine.world, component.body, true);\n this.World.add(this.engine.world, [newBody]);\n this.linkComponent(component, newBody);\n }\n public remove(component: Physics) {\n this.World.remove(this.engine.world, component.body, true);\n component.body = undefined;\n }\n\n private createBodies(params): PhysicsLinkedBody {\n const body = this.bodiesFactory.create(params) as PhysicsLinkedBody;\n if (!body) {\n throw new Error('[plugin-matterjs] Failed to create Matter body');\n }\n return body;\n }\n\n private linkComponent(component, body: PhysicsLinkedBody) {\n component.body = body;\n component.Body = Matter.Body;\n component.PhysicsEngine = this.engine;\n component.Constraint = this.Constraint;\n component.mouseConstraint = this.mouseConstraint;\n component.World = this.World;\n body.component = component;\n }\n\n private initCollisionEvents() {\n (this.collisionEvents as Array<'collisionStart' | 'collisionActive' | 'collisionEnd'>).forEach(eventName => {\n Matter.Events.on(this.engine, eventName, (event: Matter.IEventCollision<Matter.Engine>) => {\n const pairs = event.pairs ?? [];\n for (let i = 0; i < pairs.length; i++) {\n const pair = pairs[i];\n const { bodyA, bodyB } = pair;\n const componentA = resolveLinkedComponent(bodyA);\n const componentB = resolveLinkedComponent(bodyB);\n if (!componentA || !componentB) {\n continue;\n }\n componentA.emit(eventName, componentB.gameObject, componentA.gameObject);\n componentB.emit(eventName, componentA.gameObject, componentB.gameObject);\n }\n });\n });\n }\n\n private initMouse() {\n if (this.options.mouse && this.options.mouse.open) {\n const mouse = Matter.Mouse.create(this.game.canvas);\n let options = this.options.mouse.constraint ? {\n mouse,\n constraint: this.options.mouse.constraint\n } : {\n mouse\n };\n this.mouseConstraint = Matter.MouseConstraint.create(this.engine, options);\n this.World.add(this.engine.world, this.mouseConstraint);\n }\n }\n\n private initBodyEvents() {\n this.bodyEvents.forEach(eventName => {\n Matter.Events.on(this.engine, eventName, e => {\n const bodies = e.source.world.bodies;\n bodies.forEach(body => {\n const linked = body as PhysicsLinkedBody;\n linked.component?.emit(eventName, body, linked.component.gameObject);\n });\n });\n });\n }\n}\n","import { System, decorators, OBSERVER_TYPE } from '@combos-fun/engine';\nimport type { ComponentChanged } from \"@combos-fun/engine\";\nimport PhysicsEngine from './PhysicsEngine';\nimport { Physics } from './Physics';\n\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends Object ? DeepPartial<T[P]> : T[P];\n}\n\nexport interface PhysicsSystemParams {\n resolution?: number\n fps?: number\n isTest?: boolean\n element?: HTMLElement\n canvas?: HTMLCanvasElement\n deltaSampleSize?: number\n mouse?: {\n open: boolean\n constraint?: Matter.Constraint\n }\n world: DeepPartial<Matter.IWorldDefinition>\n}\n\n@decorators.componentObserver({\n Physics: [{ prop: ['bodyParams'], deep: true }],\n GameObject: ['parent'],\n})\nexport default class PhysicsSystem extends System<PhysicsSystemParams> {\n static systemName = 'PhysicsSystem';\n private engine: PhysicsEngine;\n\n /**\n * System init: configure params before the game starts.\n * @param param init params\n */\n init(param?: PhysicsSystemParams) {\n this.engine = new PhysicsEngine(this.game, param);\n this.game.canvas.setAttribute('data-pixel-ratio', (param.resolution || '1') as string);\n }\n /**\n * Called when the System is installed; if the game has not started, it runs when the\n * game starts. Use it for setup work such as initializing data.\n */\n awake() { }\n\n /**\n * Called after the System is installed and all systems' `awake` have run.\n */\n start() {\n this.engine.start();\n }\n /**\n * Called on every game loop; can perform operations and change component properties.\n */\n update(e) {\n const changes = this.componentObserver.clear();\n for (const changed of changes) {\n if (changed) {\n this.componentChanged(changed);\n }\n }\n this.engine.update(e);\n }\n\n componentChanged(changed: ComponentChanged) {\n if (changed.component instanceof Physics) {\n switch (changed.type) {\n case OBSERVER_TYPE.ADD: {\n if (changed.gameObject.parent && !changed.gameObject.getComponent(Physics).body) {\n this.engine.add(changed.component);\n }\n break;\n }\n case OBSERVER_TYPE.CHANGE: {\n this.engine.change(changed.component);\n break;\n }\n case OBSERVER_TYPE.REMOVE: {\n break;\n }\n }\n } else {\n switch (changed.type) {\n case OBSERVER_TYPE.CHANGE: {\n if (changed.gameObject.parent) {\n let physics = changed.gameObject.getComponent(Physics);\n if (physics && !physics.body) {\n this.engine.add(physics);\n }\n } else {\n let physics = changed.gameObject.getComponent(Physics);\n physics && this.engine.remove(physics);\n }\n }\n }\n }\n }\n /**\n * Like `update`, but called after every System's and component's `update` has run.\n */\n lateUpdate() { }\n /**\n * Called when the game starts or resumes playing after a pause.\n */\n onResume() {\n if (!this.engine.enabled) {\n this.engine.awake();\n }\n }\n /**\n * Called when the game is paused.\n */\n onPause() {\n this.engine.stop();\n }\n /**\n * Called when the system is destroyed.\n */\n onDestroy() {\n this.engine?.destroy();\n }\n}\n","/** Auto-generated by scripts/build-package.mjs — do not edit. */\n\nimport PhysicsSystem from './PhysicsSystem';\n\nObject.assign(PhysicsSystem, {\n packageName: \"@combos-fun/plugin-matterjs\",\n packageVersion: \"0.1.4-beta.0\",\n});\n"],"names":["PhysicsType","Component","Transform2D","Matter","decomp","Application","Graphics","PhysicsSystem","System","OBSERVER_TYPE","__decorate","decorators"],"mappings":"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"}
1
+ {"version":3,"file":"plugin-matterjs.cjs.js","sources":["../lib/Physics.ts","../lib/BodiesFactory.ts","../lib/MatterPixiDebugRenderer.ts","../lib/PhysicsEngine.ts","../lib/PhysicsSystem.ts","../lib/__combosPackageMeta.gen.ts"],"sourcesContent":["import { Component } from '@combos-fun/engine';\nimport { Transform2D } from '@combos-fun/plugin-renderer';\nimport Matter from 'matter-js';\n\nexport enum PhysicsType {\n RECTANGLE = 'rectangle',\n CIRCLE = 'circle',\n POLYGON = 'polygon',\n TRAPEZOID = 'trapezoid',\n FROM_VERTICES = 'fromVertices',\n CAPSULE = 'capsule',\n COMPOUND = 'compound',\n EDGE = 'edge',\n CHAIN = 'chain',\n}\n\nexport interface PhysicsVertex {\n x: number\n y: number\n}\n\nexport interface PhysicsBodyOptions {\n isStatic?: boolean,\n restitution?: number,\n density?: number,\n [propName: string]: any,\n}\n\n/** One piece of a `COMPOUND` body. Nested `COMPOUND` is not allowed. */\nexport interface PhysicsPartParams {\n type: PhysicsType\n bodyOptions?: PhysicsBodyOptions\n position?: {\n x?: number\n y?: number\n }\n sides?: number\n radius?: number\n width?: number\n height?: number\n slope?: number\n vertices?: PhysicsVertex[]\n vertexSets?: PhysicsVertex[][]\n length?: number\n from?: PhysicsVertex\n to?: PhysicsVertex\n thickness?: number\n}\n\nexport interface PhysicsParams {\n type?: PhysicsType\n bodyOptions?: PhysicsBodyOptions\n position?: {\n x?: number\n y?: number\n }\n sides?: number\n radius?: number\n stopRotation?: boolean\n width?: number\n height?: number\n slope?: number\n vertices?: PhysicsVertex[]\n vertexSets?: PhysicsVertex[][]\n length?: number\n from?: PhysicsVertex\n to?: PhysicsVertex\n thickness?: number\n parts?: PhysicsPartParams[]\n}\n\nexport class Physics extends Component<PhysicsParams> {\n static componentName: string = 'Physics';\n public bodyParams: PhysicsParams;\n public body: Matter.Body;\n private PhysicsEngine: Matter.Engine;\n\n init(params: PhysicsParams) {\n this.bodyParams = params;\n }\n\n update() {\n if (this.body && this.gameObject) {\n const transform = this.gameObject.getComponent(Transform2D);\n if (!transform) return;\n transform.anchor.x = 0;\n transform.anchor.y = 0;\n transform.position.x = this.body.position.x;\n transform.position.y = this.body.position.y;\n if (!this.bodyParams.stopRotation) {\n transform.rotation = this.body.angle;\n }\n }\n }\n onDestroy() {\n Matter.World.remove(this.PhysicsEngine.world, this.body, true);\n }\n}\n","import Matter from 'matter-js';\nimport decomp from 'poly-decomp';\nimport { PhysicsType, Physics, PhysicsParams, PhysicsPartParams } from './Physics';\nimport { GameObject } from '@combos-fun/engine';\nimport { Transform2D } from '@combos-fun/plugin-renderer';\n\ntype ShapeParams = PhysicsParams | PhysicsPartParams;\n\ninterface ShapeContext {\n x: number\n y: number\n transformWidth: number\n transformHeight: number\n defaultRadius: number\n}\n\ninterface Vector2 {\n x: number\n y: number\n}\n\nconst DEFAULT_THICKNESS = 4;\nconst MIN_SEGMENT = 0.5;\n\nlet decompRegistered = false;\n\nfunction ensureDecomp() {\n if (decompRegistered) {\n return;\n }\n const lib = (decomp as any)?.quickDecomp ? decomp : (decomp as any)?.default;\n if (lib?.quickDecomp) {\n Matter.Common.setDecomp(lib);\n }\n decompRegistered = true;\n}\n\nexport default class BodiesFactory {\n private Bodies: typeof Matter.Bodies;\n constructor() {\n this.Bodies = Matter.Bodies;\n ensureDecomp();\n }\n\n public create(component: Physics): Matter.Body {\n const { gameObject, bodyParams } = component;\n const coordinate = this.getCoordinate(gameObject);\n const x = bodyParams.position ? bodyParams.position.x : coordinate.x;\n const y = bodyParams.position ? bodyParams.position.y : coordinate.y;\n const transform = gameObject.getComponent(Transform2D);\n const transformWidth =\n (transform?.size.width ?? 0) * (transform?.scale.x ?? 1);\n const transformHeight =\n (transform?.size.height ?? 0) * (transform?.scale.y ?? 1);\n /** Matter.circle approximates with a polygon; NaN/0 radius breaks vertices. */\n const defaultRadius = Math.max(1, Math.min(transformWidth, transformHeight) / 2);\n const body = this.createShape(bodyParams, {\n x,\n y,\n transformWidth,\n transformHeight,\n defaultRadius,\n }, false);\n if (!body) {\n throw new Error(\n `[plugin-matterjs] Failed to create body for type ${String(bodyParams.type)}`,\n );\n }\n return body;\n }\n\n private createShape(\n params: ShapeParams,\n ctx: ShapeContext,\n isPart: boolean,\n ): Matter.Body {\n const options = params.bodyOptions;\n switch (params.type) {\n case PhysicsType.RECTANGLE: {\n const width = params.width ?? ctx.transformWidth;\n const height = params.height ?? ctx.transformHeight;\n return this.Bodies.rectangle(ctx.x, ctx.y, width, height, options);\n }\n case PhysicsType.CIRCLE: {\n const radius = params.radius ?? ctx.defaultRadius;\n return this.Bodies.circle(ctx.x, ctx.y, radius, options);\n }\n case PhysicsType.POLYGON: {\n const sides = Math.max(3, params.sides ?? 6);\n const radius = params.radius ?? ctx.defaultRadius;\n return this.Bodies.polygon(ctx.x, ctx.y, sides, radius, options);\n }\n case PhysicsType.TRAPEZOID: {\n const width = params.width ?? ctx.transformWidth;\n const height = params.height ?? ctx.transformHeight;\n const slope = Math.min(Math.max(params.slope ?? 0.5, 0), 0.999);\n return this.Bodies.trapezoid(ctx.x, ctx.y, width, height, slope, options);\n }\n case PhysicsType.FROM_VERTICES:\n return this.createFromVertices(params, ctx, options);\n case PhysicsType.CAPSULE:\n return this.createCapsule(params, ctx, options);\n case PhysicsType.EDGE:\n return this.createEdge(params, ctx, options);\n case PhysicsType.CHAIN:\n return this.createChain(params, ctx, options);\n case PhysicsType.COMPOUND:\n if (isPart) {\n throw new Error('[plugin-matterjs] Nested COMPOUND parts are not supported');\n }\n return this.createCompound(params, ctx, options);\n default:\n throw new Error(\n `[plugin-matterjs] Unsupported PhysicsType: ${String(params.type)}`,\n );\n }\n }\n\n private createFromVertices(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n const sets = params.vertexSets ?? (params.vertices ? [params.vertices] : []);\n if (!sets.length || sets.some(set => !set || set.length < 3)) {\n throw new Error(\n '[plugin-matterjs] FROM_VERTICES requires vertices (or vertexSets) with at least 3 points each',\n );\n }\n ensureDecomp();\n const body = this.Bodies.fromVertices(\n ctx.x,\n ctx.y,\n sets as Matter.Vector[][],\n options,\n true,\n );\n if (!body) {\n throw new Error('[plugin-matterjs] FROM_VERTICES produced an empty body');\n }\n return body;\n }\n\n private createCapsule(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n const radius = Math.max(1, params.radius ?? ctx.defaultRadius);\n const length = Math.max(radius * 2, params.length ?? ctx.transformWidth);\n const shaft = length - radius * 2;\n if (shaft < MIN_SEGMENT) {\n return this.Bodies.circle(ctx.x, ctx.y, radius, options);\n }\n const parts = [\n this.Bodies.rectangle(ctx.x, ctx.y, shaft, radius * 2),\n this.Bodies.circle(ctx.x - shaft / 2, ctx.y, radius),\n this.Bodies.circle(ctx.x + shaft / 2, ctx.y, radius),\n ];\n return Matter.Body.create({ ...options, parts });\n }\n\n private createEdge(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n if (!params.from || !params.to) {\n throw new Error('[plugin-matterjs] EDGE requires from and to');\n }\n const x1 = ctx.x + params.from.x;\n const y1 = ctx.y + params.from.y;\n const x2 = ctx.x + params.to.x;\n const y2 = ctx.y + params.to.y;\n const dx = x2 - x1;\n const dy = y2 - y1;\n const len = Math.hypot(dx, dy);\n if (len < MIN_SEGMENT) {\n throw new Error('[plugin-matterjs] EDGE from/to are too close');\n }\n const thickness = Math.max(1, params.thickness ?? DEFAULT_THICKNESS);\n const { angle: _ignored, ...rest } = options ?? {};\n return this.Bodies.rectangle((x1 + x2) / 2, (y1 + y2) / 2, len, thickness, {\n ...rest,\n angle: Math.atan2(dy, dx),\n });\n }\n\n private createChain(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n const verts = params.vertices;\n if (!verts || verts.length < 2) {\n throw new Error('[plugin-matterjs] CHAIN requires vertices with at least 2 points');\n }\n const thickness = Math.max(1, params.thickness ?? DEFAULT_THICKNESS);\n const parts: Matter.Body[] = [];\n for (let i = 0; i < verts.length - 1; i++) {\n const a = verts[i];\n const b = verts[i + 1];\n const x1 = ctx.x + a.x;\n const y1 = ctx.y + a.y;\n const x2 = ctx.x + b.x;\n const y2 = ctx.y + b.y;\n const dx = x2 - x1;\n const dy = y2 - y1;\n const len = Math.hypot(dx, dy);\n if (len < MIN_SEGMENT) {\n continue;\n }\n parts.push(this.Bodies.rectangle(\n (x1 + x2) / 2,\n (y1 + y2) / 2,\n len,\n thickness,\n { angle: Math.atan2(dy, dx) },\n ));\n }\n if (!parts.length) {\n throw new Error('[plugin-matterjs] CHAIN has no usable segments');\n }\n return Matter.Body.create({ ...options, parts });\n }\n\n private createCompound(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n const partParams = (params as PhysicsParams).parts;\n if (!partParams?.length) {\n throw new Error('[plugin-matterjs] COMPOUND requires a non-empty parts array');\n }\n const parts: Matter.Body[] = [];\n for (let i = 0; i < partParams.length; i++) {\n const part = partParams[i];\n const ox = ctx.x + (part.position?.x ?? 0);\n const oy = ctx.y + (part.position?.y ?? 0);\n const partBody = this.createShape(part, { ...ctx, x: ox, y: oy }, true);\n parts.push(...this.asParts(partBody));\n }\n if (!parts.length) {\n throw new Error('[plugin-matterjs] COMPOUND produced no parts');\n }\n return Matter.Body.create({ ...options, parts });\n }\n\n /** Unwrap a compound wrapper so it can be merged into another parent. */\n private asParts(body: Matter.Body): Matter.Body[] {\n if (body.parts && body.parts.length > 1) {\n return body.parts.slice(1);\n }\n return [body];\n }\n\n private getCoordinate(gameObject: GameObject): Vector2 {\n const transform = gameObject.getComponent(Transform2D);\n const parentSize = gameObject.parent?.getComponent(Transform2D)?.size;\n const x = (transform?.position.x ?? 0) + (transform?.anchor.x ?? 0) * (parentSize?.width ?? 0);\n const y = (transform?.position.y ?? 0) + (transform?.anchor.y ?? 0) * (parentSize?.height ?? 0);\n return {\n x,\n y,\n };\n }\n}\n","import Matter from 'matter-js';\nimport { Application, Graphics } from 'pixi.js';\n\nexport interface MatterPixiDebugOptions {\n engine: Matter.Engine;\n canvas: HTMLCanvasElement;\n width: number;\n height: number;\n resolution?: number;\n}\n\n/** WebGL wireframe overlay for Matter bodies in test mode. */\nexport class MatterPixiDebugRenderer {\n private readonly engine: Matter.Engine;\n private readonly opts: MatterPixiDebugOptions;\n private app: Application | null = null;\n private graphics: Graphics | null = null;\n private readonly onAfterUpdate: () => void;\n\n constructor(opts: MatterPixiDebugOptions) {\n this.opts = opts;\n this.engine = opts.engine;\n this.onAfterUpdate = () => this.redraw();\n }\n\n async init(): Promise<void> {\n const { canvas, width, height, resolution = 1 } = this.opts;\n const app = new Application();\n await app.init({\n canvas,\n width,\n height,\n resolution,\n autoDensity: true,\n antialias: true,\n backgroundAlpha: 0.12,\n preference: 'webgl',\n });\n this.app = app;\n this.graphics = new Graphics();\n app.stage.addChild(this.graphics);\n Matter.Events.on(this.engine, 'afterUpdate', this.onAfterUpdate);\n }\n\n private redraw(): void {\n const g = this.graphics;\n if (!g) {\n return;\n }\n g.clear();\n const bodies = Matter.Composite.allBodies(this.engine.world);\n for (let b = 0; b < bodies.length; b++) {\n const body = bodies[b];\n if (body.render?.visible === false) {\n continue;\n }\n const pieces = body.parts && body.parts.length > 1 ? body.parts.slice(1) : [body];\n for (let p = 0; p < pieces.length; p++) {\n const verts = pieces[p].vertices;\n if (!verts?.length) {\n continue;\n }\n const v0 = verts[0];\n g.moveTo(v0.x, v0.y);\n for (let i = 1; i < verts.length; i++) {\n g.lineTo(verts[i].x, verts[i].y);\n }\n g.closePath();\n g.stroke({ width: 1, color: 0x00e676, alpha: 0.9 });\n }\n }\n }\n\n destroy(): void {\n Matter.Events.off(this.engine, 'afterUpdate', this.onAfterUpdate);\n if (this.app) {\n this.app.destroy(true, { children: true, texture: true });\n this.app = null;\n }\n this.graphics = null;\n }\n}\n","import Matter from 'matter-js';\n\nimport BodiesFactory from './BodiesFactory';\nimport { Game } from '@combos-fun/engine';\nimport type { PhysicsSystemParams } from './PhysicsSystem';\nimport type { Physics } from './Physics';\nimport { MatterPixiDebugRenderer } from './MatterPixiDebugRenderer';\n\nexport interface PhysicsLinkedBody extends Matter.Body {\n component: Physics;\n}\n\n/** Collision pairs often report a compound part, not the parent body. */\nfunction resolveLinkedComponent(body: Matter.Body): Physics | undefined {\n let current: Matter.Body | undefined = body;\n while (current) {\n const linked = current as PhysicsLinkedBody;\n if (linked.component) {\n return linked.component;\n }\n if (!current.parent || current.parent === current) {\n break;\n }\n current = current.parent;\n }\n return undefined;\n}\n\nexport default class PhysicsEngine {\n private Engine: typeof Matter.Engine;\n private World: typeof Matter.World;\n private engine: Matter.Engine;\n private bodiesFactory: BodiesFactory;\n private collisionEvents: string[];\n private bodyEvents: string[];\n private options: PhysicsSystemParams;\n private game: Game;\n private Runner: typeof Matter.Runner;\n private Constraint: typeof Matter.Constraint;\n private mouseConstraint: Matter.MouseConstraint;\n private runner: Matter.Runner;\n private debugRenderer: MatterPixiDebugRenderer | null = null;\n public enabled: boolean = false;\n constructor(game: Game, options: PhysicsSystemParams) {\n this.Engine = Matter.Engine;\n this.World = Matter.World;\n this.bodiesFactory = new BodiesFactory();\n this.Runner = Matter.Runner;\n this.Constraint = Matter.Constraint;\n this.game = game;\n\n this.collisionEvents = ['collisionStart', 'collisionActive', 'collisionEnd'];\n this.bodyEvents = ['tick', 'beforeUpdate', 'afterUpdate', 'beforeRender', 'afterRender', 'afterTick'];\n this.options = options;\n this.runner = this.Runner.create({\n delta: 1000 / (this.options.fps || 60),\n frameDeltaSmoothing: (this.options.deltaSampleSize ?? 1) > 1,\n });\n }\n\n public start() {\n this.engine = this.Engine.create();\n const world = this.World.create(this.options.world as Matter.IWorldDefinition);\n this.engine.world = world;\n if (this.options.isTest) {\n const ownCanvas = !this.options.canvas;\n const canvas = this.options.canvas ?? document.createElement('canvas');\n if (ownCanvas && this.options.element) {\n this.options.element.appendChild(canvas);\n }\n const resolution = this.options.resolution || 1;\n this.debugRenderer = new MatterPixiDebugRenderer({\n engine: this.engine,\n canvas,\n width: this.game.canvas.width / resolution,\n height: this.game.canvas.height / resolution,\n resolution,\n });\n void this.debugRenderer.init().catch(err => {\n console.error('[plugin-matterjs] MatterPixiDebugRenderer init failed', err);\n });\n this.Runner.run(this.runner, this.engine);\n }\n this.enabled = true;\n this.initMouse();\n this.initCollisionEvents();\n this.initBodyEvents();\n }\n\n public update(e) {\n if (!this.engine) {\n return;\n }\n if (!this.options.isTest) {\n this.Runner.tick(this.runner, this.engine, e.currentTime);\n }\n }\n\n public stop() {\n this.enabled = false;\n this.runner.enabled = false;\n }\n\n public destroy() {\n this.debugRenderer?.destroy();\n this.debugRenderer = null;\n if (this.engine) {\n Matter.Runner.stop(this.runner);\n Matter.Engine.clear(this.engine);\n }\n }\n\n public awake() {\n this.enabled = true;\n this.runner.enabled = true;\n }\n public add(component) {\n const body = this.createBodies(component);\n this.World.add(this.engine.world, [body]);\n this.linkComponent(component, body);\n }\n\n public change(component: Physics) {\n const newBody = this.createBodies(component);\n this.World.remove(this.engine.world, component.body, true);\n this.World.add(this.engine.world, [newBody]);\n this.linkComponent(component, newBody);\n }\n public remove(component: Physics) {\n this.World.remove(this.engine.world, component.body, true);\n component.body = undefined;\n }\n\n private createBodies(params): PhysicsLinkedBody {\n const body = this.bodiesFactory.create(params) as PhysicsLinkedBody;\n if (!body) {\n throw new Error('[plugin-matterjs] Failed to create Matter body');\n }\n return body;\n }\n\n private linkComponent(component, body: PhysicsLinkedBody) {\n component.body = body;\n component.Body = Matter.Body;\n component.PhysicsEngine = this.engine;\n component.Constraint = this.Constraint;\n component.mouseConstraint = this.mouseConstraint;\n component.World = this.World;\n body.component = component;\n }\n\n private initCollisionEvents() {\n (this.collisionEvents as Array<'collisionStart' | 'collisionActive' | 'collisionEnd'>).forEach(eventName => {\n Matter.Events.on(this.engine, eventName, (event: Matter.IEventCollision<Matter.Engine>) => {\n const pairs = event.pairs ?? [];\n for (let i = 0; i < pairs.length; i++) {\n const pair = pairs[i];\n const { bodyA, bodyB } = pair;\n const componentA = resolveLinkedComponent(bodyA);\n const componentB = resolveLinkedComponent(bodyB);\n if (!componentA || !componentB) {\n continue;\n }\n componentA.emit(eventName, componentB.gameObject, componentA.gameObject);\n componentB.emit(eventName, componentA.gameObject, componentB.gameObject);\n }\n });\n });\n }\n\n private initMouse() {\n if (this.options.mouse && this.options.mouse.open) {\n const mouse = Matter.Mouse.create(this.game.canvas);\n let options = this.options.mouse.constraint ? {\n mouse,\n constraint: this.options.mouse.constraint\n } : {\n mouse\n };\n this.mouseConstraint = Matter.MouseConstraint.create(this.engine, options);\n this.World.add(this.engine.world, this.mouseConstraint);\n }\n }\n\n private initBodyEvents() {\n this.bodyEvents.forEach(eventName => {\n Matter.Events.on(this.engine, eventName, e => {\n const bodies = e.source.world.bodies;\n bodies.forEach(body => {\n const linked = body as PhysicsLinkedBody;\n linked.component?.emit(eventName, body, linked.component.gameObject);\n });\n });\n });\n }\n}\n","import { System, decorators, OBSERVER_TYPE } from '@combos-fun/engine';\nimport type { ComponentChanged } from \"@combos-fun/engine\";\nimport PhysicsEngine from './PhysicsEngine';\nimport { Physics } from './Physics';\n\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends Object ? DeepPartial<T[P]> : T[P];\n}\n\nexport interface PhysicsSystemParams {\n resolution?: number\n fps?: number\n isTest?: boolean\n element?: HTMLElement\n canvas?: HTMLCanvasElement\n deltaSampleSize?: number\n mouse?: {\n open: boolean\n constraint?: Matter.Constraint\n }\n world: DeepPartial<Matter.IWorldDefinition>\n}\n\n@decorators.componentObserver({\n Physics: [{ prop: ['bodyParams'], deep: true }],\n GameObject: ['parent'],\n})\nexport default class PhysicsSystem extends System<PhysicsSystemParams> {\n static systemName = 'PhysicsSystem';\n private engine: PhysicsEngine;\n\n /**\n * System init: configure params before the game starts.\n * @param param init params\n */\n init(param?: PhysicsSystemParams) {\n this.engine = new PhysicsEngine(this.game, param);\n this.game.canvas.setAttribute('data-pixel-ratio', (param.resolution || '1') as string);\n }\n /**\n * Called when the System is installed; if the game has not started, it runs when the\n * game starts. Use it for setup work such as initializing data.\n */\n awake() { }\n\n /**\n * Called after the System is installed and all systems' `awake` have run.\n */\n start() {\n this.engine.start();\n }\n /**\n * Called on every game loop; can perform operations and change component properties.\n */\n update(e) {\n const changes = this.componentObserver.clear();\n for (const changed of changes) {\n if (changed) {\n this.componentChanged(changed);\n }\n }\n this.engine.update(e);\n }\n\n componentChanged(changed: ComponentChanged) {\n if (changed.component instanceof Physics) {\n switch (changed.type) {\n case OBSERVER_TYPE.ADD: {\n if (changed.gameObject.parent && !changed.gameObject.getComponent(Physics).body) {\n this.engine.add(changed.component);\n }\n break;\n }\n case OBSERVER_TYPE.CHANGE: {\n this.engine.change(changed.component);\n break;\n }\n case OBSERVER_TYPE.REMOVE: {\n break;\n }\n }\n } else {\n switch (changed.type) {\n case OBSERVER_TYPE.CHANGE: {\n if (changed.gameObject.parent) {\n let physics = changed.gameObject.getComponent(Physics);\n if (physics && !physics.body) {\n this.engine.add(physics);\n }\n } else {\n let physics = changed.gameObject.getComponent(Physics);\n physics && this.engine.remove(physics);\n }\n }\n }\n }\n }\n /**\n * Like `update`, but called after every System's and component's `update` has run.\n */\n lateUpdate() { }\n /**\n * Called when the game starts or resumes playing after a pause.\n */\n onResume() {\n if (!this.engine.enabled) {\n this.engine.awake();\n }\n }\n /**\n * Called when the game is paused.\n */\n onPause() {\n this.engine.stop();\n }\n /**\n * Called when the system is destroyed.\n */\n onDestroy() {\n this.engine?.destroy();\n }\n}\n","/** Auto-generated by scripts/build-package.mjs — do not edit. */\n\nimport PhysicsSystem from './PhysicsSystem';\n\nObject.assign(PhysicsSystem, {\n packageName: \"@combos-fun/plugin-matterjs\",\n packageVersion: \"0.1.4-beta.1\",\n});\n"],"names":["PhysicsType","Component","Transform2D","Matter","decomp","Application","Graphics","PhysicsSystem","System","OBSERVER_TYPE","__decorate","decorators"],"mappings":"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"}
@@ -1 +1 @@
1
- "use strict";var e=require("tslib"),t=require("@combos-fun/engine"),s=require("matter-js"),i=require("poly-decomp"),n=require("@combos-fun/plugin-renderer"),o=require("pixi.js");function r(e){return e&&e.__esModule?e:{default:e}}var a,h=r(s),c=r(i);exports.PhysicsType=void 0,(a=exports.PhysicsType||(exports.PhysicsType={})).RECTANGLE="rectangle",a.CIRCLE="circle",a.POLYGON="polygon",a.TRAPEZOID="trapezoid",a.FROM_VERTICES="fromVertices",a.CAPSULE="capsule",a.COMPOUND="compound",a.EDGE="edge",a.CHAIN="chain";class d extends t.Component{static{this.componentName="Physics"}init(e){this.bodyParams=e}update(){if(this.body&&this.gameObject){const e=this.gameObject.getComponent(n.Transform2D);if(!e)return;e.anchor.x=0,e.anchor.y=0,e.position.x=this.body.position.x,e.position.y=this.body.position.y,this.bodyParams.stopRotation||(e.rotation=this.body.angle)}}onDestroy(){h.default.World.remove(this.PhysicsEngine.world,this.body,!0)}}let p=!1;function l(){if(p)return;const e=c.default?.quickDecomp?c.default:c.default?.default;e?.quickDecomp&&h.default.Common.setDecomp(e),p=!0}class u{constructor(){this.Bodies=h.default.Bodies,l()}create(e){const{gameObject:t,bodyParams:s}=e,i=this.getCoordinate(t),o=s.position?s.position.x:i.x,r=s.position?s.position.y:i.y,a=t.getComponent(n.Transform2D),h=(a?.size.width??0)*(a?.scale.x??1),c=(a?.size.height??0)*(a?.scale.y??1),d=Math.max(1,Math.min(h,c)/2),p=this.createShape(s,{x:o,y:r,transformWidth:h,transformHeight:c,defaultRadius:d},!1);if(!p)throw new Error(`[plugin-matterjs] Failed to create body for type ${String(s.type)}`);return p}createShape(e,t,s){const i=e.bodyOptions;switch(e.type){case exports.PhysicsType.RECTANGLE:{const s=e.width??t.transformWidth,n=e.height??t.transformHeight;return this.Bodies.rectangle(t.x,t.y,s,n,i)}case exports.PhysicsType.CIRCLE:{const s=e.radius??t.defaultRadius;return this.Bodies.circle(t.x,t.y,s,i)}case exports.PhysicsType.POLYGON:{const s=Math.max(3,e.sides??6),n=e.radius??t.defaultRadius;return this.Bodies.polygon(t.x,t.y,s,n,i)}case exports.PhysicsType.TRAPEZOID:{const s=e.width??t.transformWidth,n=e.height??t.transformHeight,o=Math.min(Math.max(e.slope??.5,0),.999);return this.Bodies.trapezoid(t.x,t.y,s,n,o,i)}case exports.PhysicsType.FROM_VERTICES:return this.createFromVertices(e,t,i);case exports.PhysicsType.CAPSULE:return this.createCapsule(e,t,i);case exports.PhysicsType.EDGE:return this.createEdge(e,t,i);case exports.PhysicsType.CHAIN:return this.createChain(e,t,i);case exports.PhysicsType.COMPOUND:if(s)throw new Error("[plugin-matterjs] Nested COMPOUND parts are not supported");return this.createCompound(e,t,i);default:throw new Error(`[plugin-matterjs] Unsupported PhysicsType: ${String(e.type)}`)}}createFromVertices(e,t,s){const i=e.vertexSets??(e.vertices?[e.vertices]:[]);if(!i.length||i.some(e=>!e||e.length<3))throw new Error("[plugin-matterjs] FROM_VERTICES requires vertices (or vertexSets) with at least 3 points each");l();const n=this.Bodies.fromVertices(t.x,t.y,i,s,!0);if(!n)throw new Error("[plugin-matterjs] FROM_VERTICES produced an empty body");return n}createCapsule(e,t,s){const i=Math.max(1,e.radius??t.defaultRadius),n=Math.max(2*i,e.length??t.transformWidth)-2*i;if(n<.5)return this.Bodies.circle(t.x,t.y,i,s);const o=[this.Bodies.rectangle(t.x,t.y,n,2*i),this.Bodies.circle(t.x-n/2,t.y,i),this.Bodies.circle(t.x+n/2,t.y,i)];return h.default.Body.create({...s,parts:o})}createEdge(e,t,s){if(!e.from||!e.to)throw new Error("[plugin-matterjs] EDGE requires from and to");const i=t.x+e.from.x,n=t.y+e.from.y,o=t.x+e.to.x,r=t.y+e.to.y,a=o-i,h=r-n,c=Math.hypot(a,h);if(c<.5)throw new Error("[plugin-matterjs] EDGE from/to are too close");const d=Math.max(1,e.thickness??4),{angle:p,...l}=s??{};return this.Bodies.rectangle((i+o)/2,(n+r)/2,c,d,{...l,angle:Math.atan2(h,a)})}createChain(e,t,s){const i=e.vertices;if(!i||i.length<2)throw new Error("[plugin-matterjs] CHAIN requires vertices with at least 2 points");const n=Math.max(1,e.thickness??4),o=[];for(let e=0;e<i.length-1;e++){const s=i[e],r=i[e+1],a=t.x+s.x,h=t.y+s.y,c=t.x+r.x,d=t.y+r.y,p=c-a,l=d-h,u=Math.hypot(p,l);u<.5||o.push(this.Bodies.rectangle((a+c)/2,(h+d)/2,u,n,{angle:Math.atan2(l,p)}))}if(!o.length)throw new Error("[plugin-matterjs] CHAIN has no usable segments");return h.default.Body.create({...s,parts:o})}createCompound(e,t,s){const i=e.parts;if(!i?.length)throw new Error("[plugin-matterjs] COMPOUND requires a non-empty parts array");const n=[];for(let e=0;e<i.length;e++){const s=i[e],o=t.x+(s.position?.x??0),r=t.y+(s.position?.y??0),a=this.createShape(s,{...t,x:o,y:r},!0);n.push(...this.asParts(a))}if(!n.length)throw new Error("[plugin-matterjs] COMPOUND produced no parts");return h.default.Body.create({...s,parts:n})}asParts(e){return e.parts&&e.parts.length>1?e.parts.slice(1):[e]}getCoordinate(e){const t=e.getComponent(n.Transform2D),s=e.parent?.getComponent(n.Transform2D)?.size;return{x:(t?.position.x??0)+(t?.anchor.x??0)*(s?.width??0),y:(t?.position.y??0)+(t?.anchor.y??0)*(s?.height??0)}}}class g{constructor(e){this.app=null,this.graphics=null,this.opts=e,this.engine=e.engine,this.onAfterUpdate=()=>this.redraw()}async init(){const{canvas:e,width:t,height:s,resolution:i=1}=this.opts,n=new o.Application;await n.init({canvas:e,width:t,height:s,resolution:i,autoDensity:!0,antialias:!0,backgroundAlpha:.12,preference:"webgl"}),this.app=n,this.graphics=new o.Graphics,n.stage.addChild(this.graphics),h.default.Events.on(this.engine,"afterUpdate",this.onAfterUpdate)}redraw(){const e=this.graphics;if(!e)return;e.clear();const t=h.default.Composite.allBodies(this.engine.world);for(let s=0;s<t.length;s++){const i=t[s];if(!1===i.render?.visible)continue;const n=i.parts&&i.parts.length>1?i.parts.slice(1):[i];for(let t=0;t<n.length;t++){const s=n[t].vertices;if(!s?.length)continue;const i=s[0];e.moveTo(i.x,i.y);for(let t=1;t<s.length;t++)e.lineTo(s[t].x,s[t].y);e.closePath(),e.stroke({width:1,color:58998,alpha:.9})}}}destroy(){h.default.Events.off(this.engine,"afterUpdate",this.onAfterUpdate),this.app&&(this.app.destroy(!0,{children:!0,texture:!0}),this.app=null),this.graphics=null}}function m(e){let t=e;for(;t;){const e=t;if(e.component)return e.component;if(!t.parent||t.parent===t)break;t=t.parent}}class y{constructor(e,t){this.debugRenderer=null,this.enabled=!1,this.Engine=h.default.Engine,this.World=h.default.World,this.bodiesFactory=new u,this.Runner=h.default.Runner,this.Constraint=h.default.Constraint,this.game=e,this.collisionEvents=["collisionStart","collisionActive","collisionEnd"],this.bodyEvents=["tick","beforeUpdate","afterUpdate","beforeRender","afterRender","afterTick"],this.options=t,this.runner=this.Runner.create({delta:1e3/(this.options.fps||60),frameDeltaSmoothing:(this.options.deltaSampleSize??1)>1})}start(){this.engine=this.Engine.create();const e=this.World.create(this.options.world);if(this.engine.world=e,this.options.isTest){const e=!this.options.canvas,t=this.options.canvas??document.createElement("canvas");e&&this.options.element&&this.options.element.appendChild(t);const s=this.options.resolution||1;this.debugRenderer=new g({engine:this.engine,canvas:t,width:this.game.canvas.width/s,height:this.game.canvas.height/s,resolution:s}),this.debugRenderer.init().catch(e=>{console.error("[plugin-matterjs] MatterPixiDebugRenderer init failed",e)}),this.Runner.run(this.runner,this.engine)}this.enabled=!0,this.initMouse(),this.initCollisionEvents(),this.initBodyEvents()}update(e){this.engine&&(this.options.isTest||this.Runner.tick(this.runner,this.engine,e.currentTime))}stop(){this.enabled=!1,this.runner.enabled=!1}destroy(){this.debugRenderer?.destroy(),this.debugRenderer=null,this.engine&&(h.default.Runner.stop(this.runner),h.default.Engine.clear(this.engine))}awake(){this.enabled=!0,this.runner.enabled=!0}add(e){const t=this.createBodies(e);this.World.add(this.engine.world,[t]),this.linkComponent(e,t)}change(e){const t=this.createBodies(e);this.World.remove(this.engine.world,e.body,!0),this.World.add(this.engine.world,[t]),this.linkComponent(e,t)}remove(e){this.World.remove(this.engine.world,e.body,!0),e.body=void 0}createBodies(e){const t=this.bodiesFactory.create(e);if(!t)throw new Error("[plugin-matterjs] Failed to create Matter body");return t}linkComponent(e,t){e.body=t,e.Body=h.default.Body,e.PhysicsEngine=this.engine,e.Constraint=this.Constraint,e.mouseConstraint=this.mouseConstraint,e.World=this.World,t.component=e}initCollisionEvents(){this.collisionEvents.forEach(e=>{h.default.Events.on(this.engine,e,t=>{const s=t.pairs??[];for(let t=0;t<s.length;t++){const i=s[t],{bodyA:n,bodyB:o}=i,r=m(n),a=m(o);r&&a&&(r.emit(e,a.gameObject,r.gameObject),a.emit(e,r.gameObject,a.gameObject))}})})}initMouse(){if(this.options.mouse&&this.options.mouse.open){const e=h.default.Mouse.create(this.game.canvas);let t=this.options.mouse.constraint?{mouse:e,constraint:this.options.mouse.constraint}:{mouse:e};this.mouseConstraint=h.default.MouseConstraint.create(this.engine,t),this.World.add(this.engine.world,this.mouseConstraint)}}initBodyEvents(){this.bodyEvents.forEach(e=>{h.default.Events.on(this.engine,e,t=>{t.source.world.bodies.forEach(t=>{const s=t;s.component?.emit(e,t,s.component.gameObject)})})})}}let f=class extends t.System{static{this.systemName="PhysicsSystem"}init(e){this.engine=new y(this.game,e),this.game.canvas.setAttribute("data-pixel-ratio",e.resolution||"1")}awake(){}start(){this.engine.start()}update(e){const t=this.componentObserver.clear();for(const e of t)e&&this.componentChanged(e);this.engine.update(e)}componentChanged(e){if(e.component instanceof d)switch(e.type){case t.OBSERVER_TYPE.ADD:e.gameObject.parent&&!e.gameObject.getComponent(d).body&&this.engine.add(e.component);break;case t.OBSERVER_TYPE.CHANGE:this.engine.change(e.component);case t.OBSERVER_TYPE.REMOVE:}else if(e.type===t.OBSERVER_TYPE.CHANGE)if(e.gameObject.parent){let t=e.gameObject.getComponent(d);t&&!t.body&&this.engine.add(t)}else{let t=e.gameObject.getComponent(d);t&&this.engine.remove(t)}}lateUpdate(){}onResume(){this.engine.enabled||this.engine.awake()}onPause(){this.engine.stop()}onDestroy(){this.engine?.destroy()}};f=e.__decorate([t.decorators.componentObserver({Physics:[{prop:["bodyParams"],deep:!0}],GameObject:["parent"]})],f);var E=f;Object.assign(E,{packageName:"@combos-fun/plugin-matterjs",packageVersion:"0.1.4-beta.0"}),exports.Physics=d,exports.PhysicsSystem=E;
1
+ "use strict";var e=require("tslib"),t=require("@combos-fun/engine"),s=require("matter-js"),i=require("poly-decomp"),n=require("@combos-fun/plugin-renderer"),o=require("pixi.js");function r(e){return e&&e.__esModule?e:{default:e}}var a,h=r(s),c=r(i);exports.PhysicsType=void 0,(a=exports.PhysicsType||(exports.PhysicsType={})).RECTANGLE="rectangle",a.CIRCLE="circle",a.POLYGON="polygon",a.TRAPEZOID="trapezoid",a.FROM_VERTICES="fromVertices",a.CAPSULE="capsule",a.COMPOUND="compound",a.EDGE="edge",a.CHAIN="chain";class d extends t.Component{static{this.componentName="Physics"}init(e){this.bodyParams=e}update(){if(this.body&&this.gameObject){const e=this.gameObject.getComponent(n.Transform2D);if(!e)return;e.anchor.x=0,e.anchor.y=0,e.position.x=this.body.position.x,e.position.y=this.body.position.y,this.bodyParams.stopRotation||(e.rotation=this.body.angle)}}onDestroy(){h.default.World.remove(this.PhysicsEngine.world,this.body,!0)}}let p=!1;function l(){if(p)return;const e=c.default?.quickDecomp?c.default:c.default?.default;e?.quickDecomp&&h.default.Common.setDecomp(e),p=!0}class u{constructor(){this.Bodies=h.default.Bodies,l()}create(e){const{gameObject:t,bodyParams:s}=e,i=this.getCoordinate(t),o=s.position?s.position.x:i.x,r=s.position?s.position.y:i.y,a=t.getComponent(n.Transform2D),h=(a?.size.width??0)*(a?.scale.x??1),c=(a?.size.height??0)*(a?.scale.y??1),d=Math.max(1,Math.min(h,c)/2),p=this.createShape(s,{x:o,y:r,transformWidth:h,transformHeight:c,defaultRadius:d},!1);if(!p)throw new Error(`[plugin-matterjs] Failed to create body for type ${String(s.type)}`);return p}createShape(e,t,s){const i=e.bodyOptions;switch(e.type){case exports.PhysicsType.RECTANGLE:{const s=e.width??t.transformWidth,n=e.height??t.transformHeight;return this.Bodies.rectangle(t.x,t.y,s,n,i)}case exports.PhysicsType.CIRCLE:{const s=e.radius??t.defaultRadius;return this.Bodies.circle(t.x,t.y,s,i)}case exports.PhysicsType.POLYGON:{const s=Math.max(3,e.sides??6),n=e.radius??t.defaultRadius;return this.Bodies.polygon(t.x,t.y,s,n,i)}case exports.PhysicsType.TRAPEZOID:{const s=e.width??t.transformWidth,n=e.height??t.transformHeight,o=Math.min(Math.max(e.slope??.5,0),.999);return this.Bodies.trapezoid(t.x,t.y,s,n,o,i)}case exports.PhysicsType.FROM_VERTICES:return this.createFromVertices(e,t,i);case exports.PhysicsType.CAPSULE:return this.createCapsule(e,t,i);case exports.PhysicsType.EDGE:return this.createEdge(e,t,i);case exports.PhysicsType.CHAIN:return this.createChain(e,t,i);case exports.PhysicsType.COMPOUND:if(s)throw new Error("[plugin-matterjs] Nested COMPOUND parts are not supported");return this.createCompound(e,t,i);default:throw new Error(`[plugin-matterjs] Unsupported PhysicsType: ${String(e.type)}`)}}createFromVertices(e,t,s){const i=e.vertexSets??(e.vertices?[e.vertices]:[]);if(!i.length||i.some(e=>!e||e.length<3))throw new Error("[plugin-matterjs] FROM_VERTICES requires vertices (or vertexSets) with at least 3 points each");l();const n=this.Bodies.fromVertices(t.x,t.y,i,s,!0);if(!n)throw new Error("[plugin-matterjs] FROM_VERTICES produced an empty body");return n}createCapsule(e,t,s){const i=Math.max(1,e.radius??t.defaultRadius),n=Math.max(2*i,e.length??t.transformWidth)-2*i;if(n<.5)return this.Bodies.circle(t.x,t.y,i,s);const o=[this.Bodies.rectangle(t.x,t.y,n,2*i),this.Bodies.circle(t.x-n/2,t.y,i),this.Bodies.circle(t.x+n/2,t.y,i)];return h.default.Body.create({...s,parts:o})}createEdge(e,t,s){if(!e.from||!e.to)throw new Error("[plugin-matterjs] EDGE requires from and to");const i=t.x+e.from.x,n=t.y+e.from.y,o=t.x+e.to.x,r=t.y+e.to.y,a=o-i,h=r-n,c=Math.hypot(a,h);if(c<.5)throw new Error("[plugin-matterjs] EDGE from/to are too close");const d=Math.max(1,e.thickness??4),{angle:p,...l}=s??{};return this.Bodies.rectangle((i+o)/2,(n+r)/2,c,d,{...l,angle:Math.atan2(h,a)})}createChain(e,t,s){const i=e.vertices;if(!i||i.length<2)throw new Error("[plugin-matterjs] CHAIN requires vertices with at least 2 points");const n=Math.max(1,e.thickness??4),o=[];for(let e=0;e<i.length-1;e++){const s=i[e],r=i[e+1],a=t.x+s.x,h=t.y+s.y,c=t.x+r.x,d=t.y+r.y,p=c-a,l=d-h,u=Math.hypot(p,l);u<.5||o.push(this.Bodies.rectangle((a+c)/2,(h+d)/2,u,n,{angle:Math.atan2(l,p)}))}if(!o.length)throw new Error("[plugin-matterjs] CHAIN has no usable segments");return h.default.Body.create({...s,parts:o})}createCompound(e,t,s){const i=e.parts;if(!i?.length)throw new Error("[plugin-matterjs] COMPOUND requires a non-empty parts array");const n=[];for(let e=0;e<i.length;e++){const s=i[e],o=t.x+(s.position?.x??0),r=t.y+(s.position?.y??0),a=this.createShape(s,{...t,x:o,y:r},!0);n.push(...this.asParts(a))}if(!n.length)throw new Error("[plugin-matterjs] COMPOUND produced no parts");return h.default.Body.create({...s,parts:n})}asParts(e){return e.parts&&e.parts.length>1?e.parts.slice(1):[e]}getCoordinate(e){const t=e.getComponent(n.Transform2D),s=e.parent?.getComponent(n.Transform2D)?.size;return{x:(t?.position.x??0)+(t?.anchor.x??0)*(s?.width??0),y:(t?.position.y??0)+(t?.anchor.y??0)*(s?.height??0)}}}class g{constructor(e){this.app=null,this.graphics=null,this.opts=e,this.engine=e.engine,this.onAfterUpdate=()=>this.redraw()}async init(){const{canvas:e,width:t,height:s,resolution:i=1}=this.opts,n=new o.Application;await n.init({canvas:e,width:t,height:s,resolution:i,autoDensity:!0,antialias:!0,backgroundAlpha:.12,preference:"webgl"}),this.app=n,this.graphics=new o.Graphics,n.stage.addChild(this.graphics),h.default.Events.on(this.engine,"afterUpdate",this.onAfterUpdate)}redraw(){const e=this.graphics;if(!e)return;e.clear();const t=h.default.Composite.allBodies(this.engine.world);for(let s=0;s<t.length;s++){const i=t[s];if(!1===i.render?.visible)continue;const n=i.parts&&i.parts.length>1?i.parts.slice(1):[i];for(let t=0;t<n.length;t++){const s=n[t].vertices;if(!s?.length)continue;const i=s[0];e.moveTo(i.x,i.y);for(let t=1;t<s.length;t++)e.lineTo(s[t].x,s[t].y);e.closePath(),e.stroke({width:1,color:58998,alpha:.9})}}}destroy(){h.default.Events.off(this.engine,"afterUpdate",this.onAfterUpdate),this.app&&(this.app.destroy(!0,{children:!0,texture:!0}),this.app=null),this.graphics=null}}function m(e){let t=e;for(;t;){const e=t;if(e.component)return e.component;if(!t.parent||t.parent===t)break;t=t.parent}}class y{constructor(e,t){this.debugRenderer=null,this.enabled=!1,this.Engine=h.default.Engine,this.World=h.default.World,this.bodiesFactory=new u,this.Runner=h.default.Runner,this.Constraint=h.default.Constraint,this.game=e,this.collisionEvents=["collisionStart","collisionActive","collisionEnd"],this.bodyEvents=["tick","beforeUpdate","afterUpdate","beforeRender","afterRender","afterTick"],this.options=t,this.runner=this.Runner.create({delta:1e3/(this.options.fps||60),frameDeltaSmoothing:(this.options.deltaSampleSize??1)>1})}start(){this.engine=this.Engine.create();const e=this.World.create(this.options.world);if(this.engine.world=e,this.options.isTest){const e=!this.options.canvas,t=this.options.canvas??document.createElement("canvas");e&&this.options.element&&this.options.element.appendChild(t);const s=this.options.resolution||1;this.debugRenderer=new g({engine:this.engine,canvas:t,width:this.game.canvas.width/s,height:this.game.canvas.height/s,resolution:s}),this.debugRenderer.init().catch(e=>{console.error("[plugin-matterjs] MatterPixiDebugRenderer init failed",e)}),this.Runner.run(this.runner,this.engine)}this.enabled=!0,this.initMouse(),this.initCollisionEvents(),this.initBodyEvents()}update(e){this.engine&&(this.options.isTest||this.Runner.tick(this.runner,this.engine,e.currentTime))}stop(){this.enabled=!1,this.runner.enabled=!1}destroy(){this.debugRenderer?.destroy(),this.debugRenderer=null,this.engine&&(h.default.Runner.stop(this.runner),h.default.Engine.clear(this.engine))}awake(){this.enabled=!0,this.runner.enabled=!0}add(e){const t=this.createBodies(e);this.World.add(this.engine.world,[t]),this.linkComponent(e,t)}change(e){const t=this.createBodies(e);this.World.remove(this.engine.world,e.body,!0),this.World.add(this.engine.world,[t]),this.linkComponent(e,t)}remove(e){this.World.remove(this.engine.world,e.body,!0),e.body=void 0}createBodies(e){const t=this.bodiesFactory.create(e);if(!t)throw new Error("[plugin-matterjs] Failed to create Matter body");return t}linkComponent(e,t){e.body=t,e.Body=h.default.Body,e.PhysicsEngine=this.engine,e.Constraint=this.Constraint,e.mouseConstraint=this.mouseConstraint,e.World=this.World,t.component=e}initCollisionEvents(){this.collisionEvents.forEach(e=>{h.default.Events.on(this.engine,e,t=>{const s=t.pairs??[];for(let t=0;t<s.length;t++){const i=s[t],{bodyA:n,bodyB:o}=i,r=m(n),a=m(o);r&&a&&(r.emit(e,a.gameObject,r.gameObject),a.emit(e,r.gameObject,a.gameObject))}})})}initMouse(){if(this.options.mouse&&this.options.mouse.open){const e=h.default.Mouse.create(this.game.canvas);let t=this.options.mouse.constraint?{mouse:e,constraint:this.options.mouse.constraint}:{mouse:e};this.mouseConstraint=h.default.MouseConstraint.create(this.engine,t),this.World.add(this.engine.world,this.mouseConstraint)}}initBodyEvents(){this.bodyEvents.forEach(e=>{h.default.Events.on(this.engine,e,t=>{t.source.world.bodies.forEach(t=>{const s=t;s.component?.emit(e,t,s.component.gameObject)})})})}}let f=class extends t.System{static{this.systemName="PhysicsSystem"}init(e){this.engine=new y(this.game,e),this.game.canvas.setAttribute("data-pixel-ratio",e.resolution||"1")}awake(){}start(){this.engine.start()}update(e){const t=this.componentObserver.clear();for(const e of t)e&&this.componentChanged(e);this.engine.update(e)}componentChanged(e){if(e.component instanceof d)switch(e.type){case t.OBSERVER_TYPE.ADD:e.gameObject.parent&&!e.gameObject.getComponent(d).body&&this.engine.add(e.component);break;case t.OBSERVER_TYPE.CHANGE:this.engine.change(e.component);case t.OBSERVER_TYPE.REMOVE:}else if(e.type===t.OBSERVER_TYPE.CHANGE)if(e.gameObject.parent){let t=e.gameObject.getComponent(d);t&&!t.body&&this.engine.add(t)}else{let t=e.gameObject.getComponent(d);t&&this.engine.remove(t)}}lateUpdate(){}onResume(){this.engine.enabled||this.engine.awake()}onPause(){this.engine.stop()}onDestroy(){this.engine?.destroy()}};f=e.__decorate([t.decorators.componentObserver({Physics:[{prop:["bodyParams"],deep:!0}],GameObject:["parent"]})],f);var E=f;Object.assign(E,{packageName:"@combos-fun/plugin-matterjs",packageVersion:"0.1.4-beta.1"}),exports.Physics=d,exports.PhysicsSystem=E;
@@ -561,7 +561,7 @@ var PhysicsSystem$1 = PhysicsSystem;
561
561
  /** Auto-generated by scripts/build-package.mjs — do not edit. */
562
562
  Object.assign(PhysicsSystem$1, {
563
563
  packageName: "@combos-fun/plugin-matterjs",
564
- packageVersion: "0.1.4-beta.0",
564
+ packageVersion: "0.1.4-beta.1",
565
565
  });
566
566
 
567
567
  export { Physics, PhysicsSystem$1 as PhysicsSystem, PhysicsType };
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-matterjs.esm.js","sources":["../lib/Physics.ts","../lib/BodiesFactory.ts","../lib/MatterPixiDebugRenderer.ts","../lib/PhysicsEngine.ts","../lib/PhysicsSystem.ts","../lib/__combosPackageMeta.gen.ts"],"sourcesContent":["import { Component } from '@combos-fun/engine';\nimport { Transform2D } from '@combos-fun/plugin-renderer';\nimport Matter from 'matter-js';\n\nexport enum PhysicsType {\n RECTANGLE = 'rectangle',\n CIRCLE = 'circle',\n POLYGON = 'polygon',\n TRAPEZOID = 'trapezoid',\n FROM_VERTICES = 'fromVertices',\n CAPSULE = 'capsule',\n COMPOUND = 'compound',\n EDGE = 'edge',\n CHAIN = 'chain',\n}\n\nexport interface PhysicsVertex {\n x: number\n y: number\n}\n\nexport interface PhysicsBodyOptions {\n isStatic?: boolean,\n restitution?: number,\n density?: number,\n [propName: string]: any,\n}\n\n/** One piece of a `COMPOUND` body. Nested `COMPOUND` is not allowed. */\nexport interface PhysicsPartParams {\n type: PhysicsType\n bodyOptions?: PhysicsBodyOptions\n position?: {\n x?: number\n y?: number\n }\n sides?: number\n radius?: number\n width?: number\n height?: number\n slope?: number\n vertices?: PhysicsVertex[]\n vertexSets?: PhysicsVertex[][]\n length?: number\n from?: PhysicsVertex\n to?: PhysicsVertex\n thickness?: number\n}\n\nexport interface PhysicsParams {\n type?: PhysicsType\n bodyOptions?: PhysicsBodyOptions\n position?: {\n x?: number\n y?: number\n }\n sides?: number\n radius?: number\n stopRotation?: boolean\n width?: number\n height?: number\n slope?: number\n vertices?: PhysicsVertex[]\n vertexSets?: PhysicsVertex[][]\n length?: number\n from?: PhysicsVertex\n to?: PhysicsVertex\n thickness?: number\n parts?: PhysicsPartParams[]\n}\n\nexport class Physics extends Component<PhysicsParams> {\n static componentName: string = 'Physics';\n public bodyParams: PhysicsParams;\n public body: Matter.Body;\n private PhysicsEngine: Matter.Engine;\n\n init(params: PhysicsParams) {\n this.bodyParams = params;\n }\n\n update() {\n if (this.body && this.gameObject) {\n const transform = this.gameObject.getComponent(Transform2D);\n if (!transform) return;\n transform.anchor.x = 0;\n transform.anchor.y = 0;\n transform.position.x = this.body.position.x;\n transform.position.y = this.body.position.y;\n if (!this.bodyParams.stopRotation) {\n transform.rotation = this.body.angle;\n }\n }\n }\n onDestroy() {\n Matter.World.remove(this.PhysicsEngine.world, this.body, true);\n }\n}\n","import Matter from 'matter-js';\nimport decomp from 'poly-decomp';\nimport { PhysicsType, Physics, PhysicsParams, PhysicsPartParams } from './Physics';\nimport { GameObject } from '@combos-fun/engine';\nimport { Transform2D } from '@combos-fun/plugin-renderer';\n\ntype ShapeParams = PhysicsParams | PhysicsPartParams;\n\ninterface ShapeContext {\n x: number\n y: number\n transformWidth: number\n transformHeight: number\n defaultRadius: number\n}\n\ninterface Vector2 {\n x: number\n y: number\n}\n\nconst DEFAULT_THICKNESS = 4;\nconst MIN_SEGMENT = 0.5;\n\nlet decompRegistered = false;\n\nfunction ensureDecomp() {\n if (decompRegistered) {\n return;\n }\n const lib = (decomp as any)?.quickDecomp ? decomp : (decomp as any)?.default;\n if (lib?.quickDecomp) {\n Matter.Common.setDecomp(lib);\n }\n decompRegistered = true;\n}\n\nexport default class BodiesFactory {\n private Bodies: typeof Matter.Bodies;\n constructor() {\n this.Bodies = Matter.Bodies;\n ensureDecomp();\n }\n\n public create(component: Physics): Matter.Body {\n const { gameObject, bodyParams } = component;\n const coordinate = this.getCoordinate(gameObject);\n const x = bodyParams.position ? bodyParams.position.x : coordinate.x;\n const y = bodyParams.position ? bodyParams.position.y : coordinate.y;\n const transform = gameObject.getComponent(Transform2D);\n const transformWidth =\n (transform?.size.width ?? 0) * (transform?.scale.x ?? 1);\n const transformHeight =\n (transform?.size.height ?? 0) * (transform?.scale.y ?? 1);\n /** Matter.circle approximates with a polygon; NaN/0 radius breaks vertices. */\n const defaultRadius = Math.max(1, Math.min(transformWidth, transformHeight) / 2);\n const body = this.createShape(bodyParams, {\n x,\n y,\n transformWidth,\n transformHeight,\n defaultRadius,\n }, false);\n if (!body) {\n throw new Error(\n `[plugin-matterjs] Failed to create body for type ${String(bodyParams.type)}`,\n );\n }\n return body;\n }\n\n private createShape(\n params: ShapeParams,\n ctx: ShapeContext,\n isPart: boolean,\n ): Matter.Body {\n const options = params.bodyOptions;\n switch (params.type) {\n case PhysicsType.RECTANGLE: {\n const width = params.width ?? ctx.transformWidth;\n const height = params.height ?? ctx.transformHeight;\n return this.Bodies.rectangle(ctx.x, ctx.y, width, height, options);\n }\n case PhysicsType.CIRCLE: {\n const radius = params.radius ?? ctx.defaultRadius;\n return this.Bodies.circle(ctx.x, ctx.y, radius, options);\n }\n case PhysicsType.POLYGON: {\n const sides = Math.max(3, params.sides ?? 6);\n const radius = params.radius ?? ctx.defaultRadius;\n return this.Bodies.polygon(ctx.x, ctx.y, sides, radius, options);\n }\n case PhysicsType.TRAPEZOID: {\n const width = params.width ?? ctx.transformWidth;\n const height = params.height ?? ctx.transformHeight;\n const slope = Math.min(Math.max(params.slope ?? 0.5, 0), 0.999);\n return this.Bodies.trapezoid(ctx.x, ctx.y, width, height, slope, options);\n }\n case PhysicsType.FROM_VERTICES:\n return this.createFromVertices(params, ctx, options);\n case PhysicsType.CAPSULE:\n return this.createCapsule(params, ctx, options);\n case PhysicsType.EDGE:\n return this.createEdge(params, ctx, options);\n case PhysicsType.CHAIN:\n return this.createChain(params, ctx, options);\n case PhysicsType.COMPOUND:\n if (isPart) {\n throw new Error('[plugin-matterjs] Nested COMPOUND parts are not supported');\n }\n return this.createCompound(params, ctx, options);\n default:\n throw new Error(\n `[plugin-matterjs] Unsupported PhysicsType: ${String(params.type)}`,\n );\n }\n }\n\n private createFromVertices(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n const sets = params.vertexSets ?? (params.vertices ? [params.vertices] : []);\n if (!sets.length || sets.some(set => !set || set.length < 3)) {\n throw new Error(\n '[plugin-matterjs] FROM_VERTICES requires vertices (or vertexSets) with at least 3 points each',\n );\n }\n ensureDecomp();\n const body = this.Bodies.fromVertices(\n ctx.x,\n ctx.y,\n sets as Matter.Vector[][],\n options,\n true,\n );\n if (!body) {\n throw new Error('[plugin-matterjs] FROM_VERTICES produced an empty body');\n }\n return body;\n }\n\n private createCapsule(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n const radius = Math.max(1, params.radius ?? ctx.defaultRadius);\n const length = Math.max(radius * 2, params.length ?? ctx.transformWidth);\n const shaft = length - radius * 2;\n if (shaft < MIN_SEGMENT) {\n return this.Bodies.circle(ctx.x, ctx.y, radius, options);\n }\n const parts = [\n this.Bodies.rectangle(ctx.x, ctx.y, shaft, radius * 2),\n this.Bodies.circle(ctx.x - shaft / 2, ctx.y, radius),\n this.Bodies.circle(ctx.x + shaft / 2, ctx.y, radius),\n ];\n return Matter.Body.create({ ...options, parts });\n }\n\n private createEdge(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n if (!params.from || !params.to) {\n throw new Error('[plugin-matterjs] EDGE requires from and to');\n }\n const x1 = ctx.x + params.from.x;\n const y1 = ctx.y + params.from.y;\n const x2 = ctx.x + params.to.x;\n const y2 = ctx.y + params.to.y;\n const dx = x2 - x1;\n const dy = y2 - y1;\n const len = Math.hypot(dx, dy);\n if (len < MIN_SEGMENT) {\n throw new Error('[plugin-matterjs] EDGE from/to are too close');\n }\n const thickness = Math.max(1, params.thickness ?? DEFAULT_THICKNESS);\n const { angle: _ignored, ...rest } = options ?? {};\n return this.Bodies.rectangle((x1 + x2) / 2, (y1 + y2) / 2, len, thickness, {\n ...rest,\n angle: Math.atan2(dy, dx),\n });\n }\n\n private createChain(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n const verts = params.vertices;\n if (!verts || verts.length < 2) {\n throw new Error('[plugin-matterjs] CHAIN requires vertices with at least 2 points');\n }\n const thickness = Math.max(1, params.thickness ?? DEFAULT_THICKNESS);\n const parts: Matter.Body[] = [];\n for (let i = 0; i < verts.length - 1; i++) {\n const a = verts[i];\n const b = verts[i + 1];\n const x1 = ctx.x + a.x;\n const y1 = ctx.y + a.y;\n const x2 = ctx.x + b.x;\n const y2 = ctx.y + b.y;\n const dx = x2 - x1;\n const dy = y2 - y1;\n const len = Math.hypot(dx, dy);\n if (len < MIN_SEGMENT) {\n continue;\n }\n parts.push(this.Bodies.rectangle(\n (x1 + x2) / 2,\n (y1 + y2) / 2,\n len,\n thickness,\n { angle: Math.atan2(dy, dx) },\n ));\n }\n if (!parts.length) {\n throw new Error('[plugin-matterjs] CHAIN has no usable segments');\n }\n return Matter.Body.create({ ...options, parts });\n }\n\n private createCompound(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n const partParams = (params as PhysicsParams).parts;\n if (!partParams?.length) {\n throw new Error('[plugin-matterjs] COMPOUND requires a non-empty parts array');\n }\n const parts: Matter.Body[] = [];\n for (let i = 0; i < partParams.length; i++) {\n const part = partParams[i];\n const ox = ctx.x + (part.position?.x ?? 0);\n const oy = ctx.y + (part.position?.y ?? 0);\n const partBody = this.createShape(part, { ...ctx, x: ox, y: oy }, true);\n parts.push(...this.asParts(partBody));\n }\n if (!parts.length) {\n throw new Error('[plugin-matterjs] COMPOUND produced no parts');\n }\n return Matter.Body.create({ ...options, parts });\n }\n\n /** Unwrap a compound wrapper so it can be merged into another parent. */\n private asParts(body: Matter.Body): Matter.Body[] {\n if (body.parts && body.parts.length > 1) {\n return body.parts.slice(1);\n }\n return [body];\n }\n\n private getCoordinate(gameObject: GameObject): Vector2 {\n const transform = gameObject.getComponent(Transform2D);\n const parentSize = gameObject.parent?.getComponent(Transform2D)?.size;\n const x = (transform?.position.x ?? 0) + (transform?.anchor.x ?? 0) * (parentSize?.width ?? 0);\n const y = (transform?.position.y ?? 0) + (transform?.anchor.y ?? 0) * (parentSize?.height ?? 0);\n return {\n x,\n y,\n };\n }\n}\n","import Matter from 'matter-js';\nimport { Application, Graphics } from 'pixi.js';\n\nexport interface MatterPixiDebugOptions {\n engine: Matter.Engine;\n canvas: HTMLCanvasElement;\n width: number;\n height: number;\n resolution?: number;\n}\n\n/** WebGL wireframe overlay for Matter bodies in test mode. */\nexport class MatterPixiDebugRenderer {\n private readonly engine: Matter.Engine;\n private readonly opts: MatterPixiDebugOptions;\n private app: Application | null = null;\n private graphics: Graphics | null = null;\n private readonly onAfterUpdate: () => void;\n\n constructor(opts: MatterPixiDebugOptions) {\n this.opts = opts;\n this.engine = opts.engine;\n this.onAfterUpdate = () => this.redraw();\n }\n\n async init(): Promise<void> {\n const { canvas, width, height, resolution = 1 } = this.opts;\n const app = new Application();\n await app.init({\n canvas,\n width,\n height,\n resolution,\n autoDensity: true,\n antialias: true,\n backgroundAlpha: 0.12,\n preference: 'webgl',\n });\n this.app = app;\n this.graphics = new Graphics();\n app.stage.addChild(this.graphics);\n Matter.Events.on(this.engine, 'afterUpdate', this.onAfterUpdate);\n }\n\n private redraw(): void {\n const g = this.graphics;\n if (!g) {\n return;\n }\n g.clear();\n const bodies = Matter.Composite.allBodies(this.engine.world);\n for (let b = 0; b < bodies.length; b++) {\n const body = bodies[b];\n if (body.render?.visible === false) {\n continue;\n }\n const pieces = body.parts && body.parts.length > 1 ? body.parts.slice(1) : [body];\n for (let p = 0; p < pieces.length; p++) {\n const verts = pieces[p].vertices;\n if (!verts?.length) {\n continue;\n }\n const v0 = verts[0];\n g.moveTo(v0.x, v0.y);\n for (let i = 1; i < verts.length; i++) {\n g.lineTo(verts[i].x, verts[i].y);\n }\n g.closePath();\n g.stroke({ width: 1, color: 0x00e676, alpha: 0.9 });\n }\n }\n }\n\n destroy(): void {\n Matter.Events.off(this.engine, 'afterUpdate', this.onAfterUpdate);\n if (this.app) {\n this.app.destroy(true, { children: true, texture: true });\n this.app = null;\n }\n this.graphics = null;\n }\n}\n","import Matter from 'matter-js';\n\nimport BodiesFactory from './BodiesFactory';\nimport { Game } from '@combos-fun/engine';\nimport type { PhysicsSystemParams } from './PhysicsSystem';\nimport type { Physics } from './Physics';\nimport { MatterPixiDebugRenderer } from './MatterPixiDebugRenderer';\n\nexport interface PhysicsLinkedBody extends Matter.Body {\n component: Physics;\n}\n\n/** Collision pairs often report a compound part, not the parent body. */\nfunction resolveLinkedComponent(body: Matter.Body): Physics | undefined {\n let current: Matter.Body | undefined = body;\n while (current) {\n const linked = current as PhysicsLinkedBody;\n if (linked.component) {\n return linked.component;\n }\n if (!current.parent || current.parent === current) {\n break;\n }\n current = current.parent;\n }\n return undefined;\n}\n\nexport default class PhysicsEngine {\n private Engine: typeof Matter.Engine;\n private World: typeof Matter.World;\n private engine: Matter.Engine;\n private bodiesFactory: BodiesFactory;\n private collisionEvents: string[];\n private bodyEvents: string[];\n private options: PhysicsSystemParams;\n private game: Game;\n private Runner: typeof Matter.Runner;\n private Constraint: typeof Matter.Constraint;\n private mouseConstraint: Matter.MouseConstraint;\n private runner: Matter.Runner;\n private debugRenderer: MatterPixiDebugRenderer | null = null;\n public enabled: boolean = false;\n constructor(game: Game, options: PhysicsSystemParams) {\n this.Engine = Matter.Engine;\n this.World = Matter.World;\n this.bodiesFactory = new BodiesFactory();\n this.Runner = Matter.Runner;\n this.Constraint = Matter.Constraint;\n this.game = game;\n\n this.collisionEvents = ['collisionStart', 'collisionActive', 'collisionEnd'];\n this.bodyEvents = ['tick', 'beforeUpdate', 'afterUpdate', 'beforeRender', 'afterRender', 'afterTick'];\n this.options = options;\n this.runner = this.Runner.create({\n delta: 1000 / (this.options.fps || 60),\n frameDeltaSmoothing: (this.options.deltaSampleSize ?? 1) > 1,\n });\n }\n\n public start() {\n this.engine = this.Engine.create();\n const world = this.World.create(this.options.world as Matter.IWorldDefinition);\n this.engine.world = world;\n if (this.options.isTest) {\n const ownCanvas = !this.options.canvas;\n const canvas = this.options.canvas ?? document.createElement('canvas');\n if (ownCanvas && this.options.element) {\n this.options.element.appendChild(canvas);\n }\n const resolution = this.options.resolution || 1;\n this.debugRenderer = new MatterPixiDebugRenderer({\n engine: this.engine,\n canvas,\n width: this.game.canvas.width / resolution,\n height: this.game.canvas.height / resolution,\n resolution,\n });\n void this.debugRenderer.init().catch(err => {\n console.error('[plugin-matterjs] MatterPixiDebugRenderer init failed', err);\n });\n this.Runner.run(this.runner, this.engine);\n }\n this.enabled = true;\n this.initMouse();\n this.initCollisionEvents();\n this.initBodyEvents();\n }\n\n public update(e) {\n if (!this.engine) {\n return;\n }\n if (!this.options.isTest) {\n this.Runner.tick(this.runner, this.engine, e.currentTime);\n }\n }\n\n public stop() {\n this.enabled = false;\n this.runner.enabled = false;\n }\n\n public destroy() {\n this.debugRenderer?.destroy();\n this.debugRenderer = null;\n if (this.engine) {\n Matter.Runner.stop(this.runner);\n Matter.Engine.clear(this.engine);\n }\n }\n\n public awake() {\n this.enabled = true;\n this.runner.enabled = true;\n }\n public add(component) {\n const body = this.createBodies(component);\n this.World.add(this.engine.world, [body]);\n this.linkComponent(component, body);\n }\n\n public change(component: Physics) {\n const newBody = this.createBodies(component);\n this.World.remove(this.engine.world, component.body, true);\n this.World.add(this.engine.world, [newBody]);\n this.linkComponent(component, newBody);\n }\n public remove(component: Physics) {\n this.World.remove(this.engine.world, component.body, true);\n component.body = undefined;\n }\n\n private createBodies(params): PhysicsLinkedBody {\n const body = this.bodiesFactory.create(params) as PhysicsLinkedBody;\n if (!body) {\n throw new Error('[plugin-matterjs] Failed to create Matter body');\n }\n return body;\n }\n\n private linkComponent(component, body: PhysicsLinkedBody) {\n component.body = body;\n component.Body = Matter.Body;\n component.PhysicsEngine = this.engine;\n component.Constraint = this.Constraint;\n component.mouseConstraint = this.mouseConstraint;\n component.World = this.World;\n body.component = component;\n }\n\n private initCollisionEvents() {\n (this.collisionEvents as Array<'collisionStart' | 'collisionActive' | 'collisionEnd'>).forEach(eventName => {\n Matter.Events.on(this.engine, eventName, (event: Matter.IEventCollision<Matter.Engine>) => {\n const pairs = event.pairs ?? [];\n for (let i = 0; i < pairs.length; i++) {\n const pair = pairs[i];\n const { bodyA, bodyB } = pair;\n const componentA = resolveLinkedComponent(bodyA);\n const componentB = resolveLinkedComponent(bodyB);\n if (!componentA || !componentB) {\n continue;\n }\n componentA.emit(eventName, componentB.gameObject, componentA.gameObject);\n componentB.emit(eventName, componentA.gameObject, componentB.gameObject);\n }\n });\n });\n }\n\n private initMouse() {\n if (this.options.mouse && this.options.mouse.open) {\n const mouse = Matter.Mouse.create(this.game.canvas);\n let options = this.options.mouse.constraint ? {\n mouse,\n constraint: this.options.mouse.constraint\n } : {\n mouse\n };\n this.mouseConstraint = Matter.MouseConstraint.create(this.engine, options);\n this.World.add(this.engine.world, this.mouseConstraint);\n }\n }\n\n private initBodyEvents() {\n this.bodyEvents.forEach(eventName => {\n Matter.Events.on(this.engine, eventName, e => {\n const bodies = e.source.world.bodies;\n bodies.forEach(body => {\n const linked = body as PhysicsLinkedBody;\n linked.component?.emit(eventName, body, linked.component.gameObject);\n });\n });\n });\n }\n}\n","import { System, decorators, OBSERVER_TYPE } from '@combos-fun/engine';\nimport type { ComponentChanged } from \"@combos-fun/engine\";\nimport PhysicsEngine from './PhysicsEngine';\nimport { Physics } from './Physics';\n\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends Object ? DeepPartial<T[P]> : T[P];\n}\n\nexport interface PhysicsSystemParams {\n resolution?: number\n fps?: number\n isTest?: boolean\n element?: HTMLElement\n canvas?: HTMLCanvasElement\n deltaSampleSize?: number\n mouse?: {\n open: boolean\n constraint?: Matter.Constraint\n }\n world: DeepPartial<Matter.IWorldDefinition>\n}\n\n@decorators.componentObserver({\n Physics: [{ prop: ['bodyParams'], deep: true }],\n GameObject: ['parent'],\n})\nexport default class PhysicsSystem extends System<PhysicsSystemParams> {\n static systemName = 'PhysicsSystem';\n private engine: PhysicsEngine;\n\n /**\n * System init: configure params before the game starts.\n * @param param init params\n */\n init(param?: PhysicsSystemParams) {\n this.engine = new PhysicsEngine(this.game, param);\n this.game.canvas.setAttribute('data-pixel-ratio', (param.resolution || '1') as string);\n }\n /**\n * Called when the System is installed; if the game has not started, it runs when the\n * game starts. Use it for setup work such as initializing data.\n */\n awake() { }\n\n /**\n * Called after the System is installed and all systems' `awake` have run.\n */\n start() {\n this.engine.start();\n }\n /**\n * Called on every game loop; can perform operations and change component properties.\n */\n update(e) {\n const changes = this.componentObserver.clear();\n for (const changed of changes) {\n if (changed) {\n this.componentChanged(changed);\n }\n }\n this.engine.update(e);\n }\n\n componentChanged(changed: ComponentChanged) {\n if (changed.component instanceof Physics) {\n switch (changed.type) {\n case OBSERVER_TYPE.ADD: {\n if (changed.gameObject.parent && !changed.gameObject.getComponent(Physics).body) {\n this.engine.add(changed.component);\n }\n break;\n }\n case OBSERVER_TYPE.CHANGE: {\n this.engine.change(changed.component);\n break;\n }\n case OBSERVER_TYPE.REMOVE: {\n break;\n }\n }\n } else {\n switch (changed.type) {\n case OBSERVER_TYPE.CHANGE: {\n if (changed.gameObject.parent) {\n let physics = changed.gameObject.getComponent(Physics);\n if (physics && !physics.body) {\n this.engine.add(physics);\n }\n } else {\n let physics = changed.gameObject.getComponent(Physics);\n physics && this.engine.remove(physics);\n }\n }\n }\n }\n }\n /**\n * Like `update`, but called after every System's and component's `update` has run.\n */\n lateUpdate() { }\n /**\n * Called when the game starts or resumes playing after a pause.\n */\n onResume() {\n if (!this.engine.enabled) {\n this.engine.awake();\n }\n }\n /**\n * Called when the game is paused.\n */\n onPause() {\n this.engine.stop();\n }\n /**\n * Called when the system is destroyed.\n */\n onDestroy() {\n this.engine?.destroy();\n }\n}\n","/** Auto-generated by scripts/build-package.mjs — do not edit. */\n\nimport PhysicsSystem from './PhysicsSystem';\n\nObject.assign(PhysicsSystem, {\n packageName: \"@combos-fun/plugin-matterjs\",\n packageVersion: \"0.1.4-beta.0\",\n});\n"],"names":["PhysicsSystem"],"mappings":"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"}
1
+ {"version":3,"file":"plugin-matterjs.esm.js","sources":["../lib/Physics.ts","../lib/BodiesFactory.ts","../lib/MatterPixiDebugRenderer.ts","../lib/PhysicsEngine.ts","../lib/PhysicsSystem.ts","../lib/__combosPackageMeta.gen.ts"],"sourcesContent":["import { Component } from '@combos-fun/engine';\nimport { Transform2D } from '@combos-fun/plugin-renderer';\nimport Matter from 'matter-js';\n\nexport enum PhysicsType {\n RECTANGLE = 'rectangle',\n CIRCLE = 'circle',\n POLYGON = 'polygon',\n TRAPEZOID = 'trapezoid',\n FROM_VERTICES = 'fromVertices',\n CAPSULE = 'capsule',\n COMPOUND = 'compound',\n EDGE = 'edge',\n CHAIN = 'chain',\n}\n\nexport interface PhysicsVertex {\n x: number\n y: number\n}\n\nexport interface PhysicsBodyOptions {\n isStatic?: boolean,\n restitution?: number,\n density?: number,\n [propName: string]: any,\n}\n\n/** One piece of a `COMPOUND` body. Nested `COMPOUND` is not allowed. */\nexport interface PhysicsPartParams {\n type: PhysicsType\n bodyOptions?: PhysicsBodyOptions\n position?: {\n x?: number\n y?: number\n }\n sides?: number\n radius?: number\n width?: number\n height?: number\n slope?: number\n vertices?: PhysicsVertex[]\n vertexSets?: PhysicsVertex[][]\n length?: number\n from?: PhysicsVertex\n to?: PhysicsVertex\n thickness?: number\n}\n\nexport interface PhysicsParams {\n type?: PhysicsType\n bodyOptions?: PhysicsBodyOptions\n position?: {\n x?: number\n y?: number\n }\n sides?: number\n radius?: number\n stopRotation?: boolean\n width?: number\n height?: number\n slope?: number\n vertices?: PhysicsVertex[]\n vertexSets?: PhysicsVertex[][]\n length?: number\n from?: PhysicsVertex\n to?: PhysicsVertex\n thickness?: number\n parts?: PhysicsPartParams[]\n}\n\nexport class Physics extends Component<PhysicsParams> {\n static componentName: string = 'Physics';\n public bodyParams: PhysicsParams;\n public body: Matter.Body;\n private PhysicsEngine: Matter.Engine;\n\n init(params: PhysicsParams) {\n this.bodyParams = params;\n }\n\n update() {\n if (this.body && this.gameObject) {\n const transform = this.gameObject.getComponent(Transform2D);\n if (!transform) return;\n transform.anchor.x = 0;\n transform.anchor.y = 0;\n transform.position.x = this.body.position.x;\n transform.position.y = this.body.position.y;\n if (!this.bodyParams.stopRotation) {\n transform.rotation = this.body.angle;\n }\n }\n }\n onDestroy() {\n Matter.World.remove(this.PhysicsEngine.world, this.body, true);\n }\n}\n","import Matter from 'matter-js';\nimport decomp from 'poly-decomp';\nimport { PhysicsType, Physics, PhysicsParams, PhysicsPartParams } from './Physics';\nimport { GameObject } from '@combos-fun/engine';\nimport { Transform2D } from '@combos-fun/plugin-renderer';\n\ntype ShapeParams = PhysicsParams | PhysicsPartParams;\n\ninterface ShapeContext {\n x: number\n y: number\n transformWidth: number\n transformHeight: number\n defaultRadius: number\n}\n\ninterface Vector2 {\n x: number\n y: number\n}\n\nconst DEFAULT_THICKNESS = 4;\nconst MIN_SEGMENT = 0.5;\n\nlet decompRegistered = false;\n\nfunction ensureDecomp() {\n if (decompRegistered) {\n return;\n }\n const lib = (decomp as any)?.quickDecomp ? decomp : (decomp as any)?.default;\n if (lib?.quickDecomp) {\n Matter.Common.setDecomp(lib);\n }\n decompRegistered = true;\n}\n\nexport default class BodiesFactory {\n private Bodies: typeof Matter.Bodies;\n constructor() {\n this.Bodies = Matter.Bodies;\n ensureDecomp();\n }\n\n public create(component: Physics): Matter.Body {\n const { gameObject, bodyParams } = component;\n const coordinate = this.getCoordinate(gameObject);\n const x = bodyParams.position ? bodyParams.position.x : coordinate.x;\n const y = bodyParams.position ? bodyParams.position.y : coordinate.y;\n const transform = gameObject.getComponent(Transform2D);\n const transformWidth =\n (transform?.size.width ?? 0) * (transform?.scale.x ?? 1);\n const transformHeight =\n (transform?.size.height ?? 0) * (transform?.scale.y ?? 1);\n /** Matter.circle approximates with a polygon; NaN/0 radius breaks vertices. */\n const defaultRadius = Math.max(1, Math.min(transformWidth, transformHeight) / 2);\n const body = this.createShape(bodyParams, {\n x,\n y,\n transformWidth,\n transformHeight,\n defaultRadius,\n }, false);\n if (!body) {\n throw new Error(\n `[plugin-matterjs] Failed to create body for type ${String(bodyParams.type)}`,\n );\n }\n return body;\n }\n\n private createShape(\n params: ShapeParams,\n ctx: ShapeContext,\n isPart: boolean,\n ): Matter.Body {\n const options = params.bodyOptions;\n switch (params.type) {\n case PhysicsType.RECTANGLE: {\n const width = params.width ?? ctx.transformWidth;\n const height = params.height ?? ctx.transformHeight;\n return this.Bodies.rectangle(ctx.x, ctx.y, width, height, options);\n }\n case PhysicsType.CIRCLE: {\n const radius = params.radius ?? ctx.defaultRadius;\n return this.Bodies.circle(ctx.x, ctx.y, radius, options);\n }\n case PhysicsType.POLYGON: {\n const sides = Math.max(3, params.sides ?? 6);\n const radius = params.radius ?? ctx.defaultRadius;\n return this.Bodies.polygon(ctx.x, ctx.y, sides, radius, options);\n }\n case PhysicsType.TRAPEZOID: {\n const width = params.width ?? ctx.transformWidth;\n const height = params.height ?? ctx.transformHeight;\n const slope = Math.min(Math.max(params.slope ?? 0.5, 0), 0.999);\n return this.Bodies.trapezoid(ctx.x, ctx.y, width, height, slope, options);\n }\n case PhysicsType.FROM_VERTICES:\n return this.createFromVertices(params, ctx, options);\n case PhysicsType.CAPSULE:\n return this.createCapsule(params, ctx, options);\n case PhysicsType.EDGE:\n return this.createEdge(params, ctx, options);\n case PhysicsType.CHAIN:\n return this.createChain(params, ctx, options);\n case PhysicsType.COMPOUND:\n if (isPart) {\n throw new Error('[plugin-matterjs] Nested COMPOUND parts are not supported');\n }\n return this.createCompound(params, ctx, options);\n default:\n throw new Error(\n `[plugin-matterjs] Unsupported PhysicsType: ${String(params.type)}`,\n );\n }\n }\n\n private createFromVertices(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n const sets = params.vertexSets ?? (params.vertices ? [params.vertices] : []);\n if (!sets.length || sets.some(set => !set || set.length < 3)) {\n throw new Error(\n '[plugin-matterjs] FROM_VERTICES requires vertices (or vertexSets) with at least 3 points each',\n );\n }\n ensureDecomp();\n const body = this.Bodies.fromVertices(\n ctx.x,\n ctx.y,\n sets as Matter.Vector[][],\n options,\n true,\n );\n if (!body) {\n throw new Error('[plugin-matterjs] FROM_VERTICES produced an empty body');\n }\n return body;\n }\n\n private createCapsule(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n const radius = Math.max(1, params.radius ?? ctx.defaultRadius);\n const length = Math.max(radius * 2, params.length ?? ctx.transformWidth);\n const shaft = length - radius * 2;\n if (shaft < MIN_SEGMENT) {\n return this.Bodies.circle(ctx.x, ctx.y, radius, options);\n }\n const parts = [\n this.Bodies.rectangle(ctx.x, ctx.y, shaft, radius * 2),\n this.Bodies.circle(ctx.x - shaft / 2, ctx.y, radius),\n this.Bodies.circle(ctx.x + shaft / 2, ctx.y, radius),\n ];\n return Matter.Body.create({ ...options, parts });\n }\n\n private createEdge(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n if (!params.from || !params.to) {\n throw new Error('[plugin-matterjs] EDGE requires from and to');\n }\n const x1 = ctx.x + params.from.x;\n const y1 = ctx.y + params.from.y;\n const x2 = ctx.x + params.to.x;\n const y2 = ctx.y + params.to.y;\n const dx = x2 - x1;\n const dy = y2 - y1;\n const len = Math.hypot(dx, dy);\n if (len < MIN_SEGMENT) {\n throw new Error('[plugin-matterjs] EDGE from/to are too close');\n }\n const thickness = Math.max(1, params.thickness ?? DEFAULT_THICKNESS);\n const { angle: _ignored, ...rest } = options ?? {};\n return this.Bodies.rectangle((x1 + x2) / 2, (y1 + y2) / 2, len, thickness, {\n ...rest,\n angle: Math.atan2(dy, dx),\n });\n }\n\n private createChain(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n const verts = params.vertices;\n if (!verts || verts.length < 2) {\n throw new Error('[plugin-matterjs] CHAIN requires vertices with at least 2 points');\n }\n const thickness = Math.max(1, params.thickness ?? DEFAULT_THICKNESS);\n const parts: Matter.Body[] = [];\n for (let i = 0; i < verts.length - 1; i++) {\n const a = verts[i];\n const b = verts[i + 1];\n const x1 = ctx.x + a.x;\n const y1 = ctx.y + a.y;\n const x2 = ctx.x + b.x;\n const y2 = ctx.y + b.y;\n const dx = x2 - x1;\n const dy = y2 - y1;\n const len = Math.hypot(dx, dy);\n if (len < MIN_SEGMENT) {\n continue;\n }\n parts.push(this.Bodies.rectangle(\n (x1 + x2) / 2,\n (y1 + y2) / 2,\n len,\n thickness,\n { angle: Math.atan2(dy, dx) },\n ));\n }\n if (!parts.length) {\n throw new Error('[plugin-matterjs] CHAIN has no usable segments');\n }\n return Matter.Body.create({ ...options, parts });\n }\n\n private createCompound(\n params: ShapeParams,\n ctx: ShapeContext,\n options: PhysicsParams['bodyOptions'],\n ): Matter.Body {\n const partParams = (params as PhysicsParams).parts;\n if (!partParams?.length) {\n throw new Error('[plugin-matterjs] COMPOUND requires a non-empty parts array');\n }\n const parts: Matter.Body[] = [];\n for (let i = 0; i < partParams.length; i++) {\n const part = partParams[i];\n const ox = ctx.x + (part.position?.x ?? 0);\n const oy = ctx.y + (part.position?.y ?? 0);\n const partBody = this.createShape(part, { ...ctx, x: ox, y: oy }, true);\n parts.push(...this.asParts(partBody));\n }\n if (!parts.length) {\n throw new Error('[plugin-matterjs] COMPOUND produced no parts');\n }\n return Matter.Body.create({ ...options, parts });\n }\n\n /** Unwrap a compound wrapper so it can be merged into another parent. */\n private asParts(body: Matter.Body): Matter.Body[] {\n if (body.parts && body.parts.length > 1) {\n return body.parts.slice(1);\n }\n return [body];\n }\n\n private getCoordinate(gameObject: GameObject): Vector2 {\n const transform = gameObject.getComponent(Transform2D);\n const parentSize = gameObject.parent?.getComponent(Transform2D)?.size;\n const x = (transform?.position.x ?? 0) + (transform?.anchor.x ?? 0) * (parentSize?.width ?? 0);\n const y = (transform?.position.y ?? 0) + (transform?.anchor.y ?? 0) * (parentSize?.height ?? 0);\n return {\n x,\n y,\n };\n }\n}\n","import Matter from 'matter-js';\nimport { Application, Graphics } from 'pixi.js';\n\nexport interface MatterPixiDebugOptions {\n engine: Matter.Engine;\n canvas: HTMLCanvasElement;\n width: number;\n height: number;\n resolution?: number;\n}\n\n/** WebGL wireframe overlay for Matter bodies in test mode. */\nexport class MatterPixiDebugRenderer {\n private readonly engine: Matter.Engine;\n private readonly opts: MatterPixiDebugOptions;\n private app: Application | null = null;\n private graphics: Graphics | null = null;\n private readonly onAfterUpdate: () => void;\n\n constructor(opts: MatterPixiDebugOptions) {\n this.opts = opts;\n this.engine = opts.engine;\n this.onAfterUpdate = () => this.redraw();\n }\n\n async init(): Promise<void> {\n const { canvas, width, height, resolution = 1 } = this.opts;\n const app = new Application();\n await app.init({\n canvas,\n width,\n height,\n resolution,\n autoDensity: true,\n antialias: true,\n backgroundAlpha: 0.12,\n preference: 'webgl',\n });\n this.app = app;\n this.graphics = new Graphics();\n app.stage.addChild(this.graphics);\n Matter.Events.on(this.engine, 'afterUpdate', this.onAfterUpdate);\n }\n\n private redraw(): void {\n const g = this.graphics;\n if (!g) {\n return;\n }\n g.clear();\n const bodies = Matter.Composite.allBodies(this.engine.world);\n for (let b = 0; b < bodies.length; b++) {\n const body = bodies[b];\n if (body.render?.visible === false) {\n continue;\n }\n const pieces = body.parts && body.parts.length > 1 ? body.parts.slice(1) : [body];\n for (let p = 0; p < pieces.length; p++) {\n const verts = pieces[p].vertices;\n if (!verts?.length) {\n continue;\n }\n const v0 = verts[0];\n g.moveTo(v0.x, v0.y);\n for (let i = 1; i < verts.length; i++) {\n g.lineTo(verts[i].x, verts[i].y);\n }\n g.closePath();\n g.stroke({ width: 1, color: 0x00e676, alpha: 0.9 });\n }\n }\n }\n\n destroy(): void {\n Matter.Events.off(this.engine, 'afterUpdate', this.onAfterUpdate);\n if (this.app) {\n this.app.destroy(true, { children: true, texture: true });\n this.app = null;\n }\n this.graphics = null;\n }\n}\n","import Matter from 'matter-js';\n\nimport BodiesFactory from './BodiesFactory';\nimport { Game } from '@combos-fun/engine';\nimport type { PhysicsSystemParams } from './PhysicsSystem';\nimport type { Physics } from './Physics';\nimport { MatterPixiDebugRenderer } from './MatterPixiDebugRenderer';\n\nexport interface PhysicsLinkedBody extends Matter.Body {\n component: Physics;\n}\n\n/** Collision pairs often report a compound part, not the parent body. */\nfunction resolveLinkedComponent(body: Matter.Body): Physics | undefined {\n let current: Matter.Body | undefined = body;\n while (current) {\n const linked = current as PhysicsLinkedBody;\n if (linked.component) {\n return linked.component;\n }\n if (!current.parent || current.parent === current) {\n break;\n }\n current = current.parent;\n }\n return undefined;\n}\n\nexport default class PhysicsEngine {\n private Engine: typeof Matter.Engine;\n private World: typeof Matter.World;\n private engine: Matter.Engine;\n private bodiesFactory: BodiesFactory;\n private collisionEvents: string[];\n private bodyEvents: string[];\n private options: PhysicsSystemParams;\n private game: Game;\n private Runner: typeof Matter.Runner;\n private Constraint: typeof Matter.Constraint;\n private mouseConstraint: Matter.MouseConstraint;\n private runner: Matter.Runner;\n private debugRenderer: MatterPixiDebugRenderer | null = null;\n public enabled: boolean = false;\n constructor(game: Game, options: PhysicsSystemParams) {\n this.Engine = Matter.Engine;\n this.World = Matter.World;\n this.bodiesFactory = new BodiesFactory();\n this.Runner = Matter.Runner;\n this.Constraint = Matter.Constraint;\n this.game = game;\n\n this.collisionEvents = ['collisionStart', 'collisionActive', 'collisionEnd'];\n this.bodyEvents = ['tick', 'beforeUpdate', 'afterUpdate', 'beforeRender', 'afterRender', 'afterTick'];\n this.options = options;\n this.runner = this.Runner.create({\n delta: 1000 / (this.options.fps || 60),\n frameDeltaSmoothing: (this.options.deltaSampleSize ?? 1) > 1,\n });\n }\n\n public start() {\n this.engine = this.Engine.create();\n const world = this.World.create(this.options.world as Matter.IWorldDefinition);\n this.engine.world = world;\n if (this.options.isTest) {\n const ownCanvas = !this.options.canvas;\n const canvas = this.options.canvas ?? document.createElement('canvas');\n if (ownCanvas && this.options.element) {\n this.options.element.appendChild(canvas);\n }\n const resolution = this.options.resolution || 1;\n this.debugRenderer = new MatterPixiDebugRenderer({\n engine: this.engine,\n canvas,\n width: this.game.canvas.width / resolution,\n height: this.game.canvas.height / resolution,\n resolution,\n });\n void this.debugRenderer.init().catch(err => {\n console.error('[plugin-matterjs] MatterPixiDebugRenderer init failed', err);\n });\n this.Runner.run(this.runner, this.engine);\n }\n this.enabled = true;\n this.initMouse();\n this.initCollisionEvents();\n this.initBodyEvents();\n }\n\n public update(e) {\n if (!this.engine) {\n return;\n }\n if (!this.options.isTest) {\n this.Runner.tick(this.runner, this.engine, e.currentTime);\n }\n }\n\n public stop() {\n this.enabled = false;\n this.runner.enabled = false;\n }\n\n public destroy() {\n this.debugRenderer?.destroy();\n this.debugRenderer = null;\n if (this.engine) {\n Matter.Runner.stop(this.runner);\n Matter.Engine.clear(this.engine);\n }\n }\n\n public awake() {\n this.enabled = true;\n this.runner.enabled = true;\n }\n public add(component) {\n const body = this.createBodies(component);\n this.World.add(this.engine.world, [body]);\n this.linkComponent(component, body);\n }\n\n public change(component: Physics) {\n const newBody = this.createBodies(component);\n this.World.remove(this.engine.world, component.body, true);\n this.World.add(this.engine.world, [newBody]);\n this.linkComponent(component, newBody);\n }\n public remove(component: Physics) {\n this.World.remove(this.engine.world, component.body, true);\n component.body = undefined;\n }\n\n private createBodies(params): PhysicsLinkedBody {\n const body = this.bodiesFactory.create(params) as PhysicsLinkedBody;\n if (!body) {\n throw new Error('[plugin-matterjs] Failed to create Matter body');\n }\n return body;\n }\n\n private linkComponent(component, body: PhysicsLinkedBody) {\n component.body = body;\n component.Body = Matter.Body;\n component.PhysicsEngine = this.engine;\n component.Constraint = this.Constraint;\n component.mouseConstraint = this.mouseConstraint;\n component.World = this.World;\n body.component = component;\n }\n\n private initCollisionEvents() {\n (this.collisionEvents as Array<'collisionStart' | 'collisionActive' | 'collisionEnd'>).forEach(eventName => {\n Matter.Events.on(this.engine, eventName, (event: Matter.IEventCollision<Matter.Engine>) => {\n const pairs = event.pairs ?? [];\n for (let i = 0; i < pairs.length; i++) {\n const pair = pairs[i];\n const { bodyA, bodyB } = pair;\n const componentA = resolveLinkedComponent(bodyA);\n const componentB = resolveLinkedComponent(bodyB);\n if (!componentA || !componentB) {\n continue;\n }\n componentA.emit(eventName, componentB.gameObject, componentA.gameObject);\n componentB.emit(eventName, componentA.gameObject, componentB.gameObject);\n }\n });\n });\n }\n\n private initMouse() {\n if (this.options.mouse && this.options.mouse.open) {\n const mouse = Matter.Mouse.create(this.game.canvas);\n let options = this.options.mouse.constraint ? {\n mouse,\n constraint: this.options.mouse.constraint\n } : {\n mouse\n };\n this.mouseConstraint = Matter.MouseConstraint.create(this.engine, options);\n this.World.add(this.engine.world, this.mouseConstraint);\n }\n }\n\n private initBodyEvents() {\n this.bodyEvents.forEach(eventName => {\n Matter.Events.on(this.engine, eventName, e => {\n const bodies = e.source.world.bodies;\n bodies.forEach(body => {\n const linked = body as PhysicsLinkedBody;\n linked.component?.emit(eventName, body, linked.component.gameObject);\n });\n });\n });\n }\n}\n","import { System, decorators, OBSERVER_TYPE } from '@combos-fun/engine';\nimport type { ComponentChanged } from \"@combos-fun/engine\";\nimport PhysicsEngine from './PhysicsEngine';\nimport { Physics } from './Physics';\n\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends Object ? DeepPartial<T[P]> : T[P];\n}\n\nexport interface PhysicsSystemParams {\n resolution?: number\n fps?: number\n isTest?: boolean\n element?: HTMLElement\n canvas?: HTMLCanvasElement\n deltaSampleSize?: number\n mouse?: {\n open: boolean\n constraint?: Matter.Constraint\n }\n world: DeepPartial<Matter.IWorldDefinition>\n}\n\n@decorators.componentObserver({\n Physics: [{ prop: ['bodyParams'], deep: true }],\n GameObject: ['parent'],\n})\nexport default class PhysicsSystem extends System<PhysicsSystemParams> {\n static systemName = 'PhysicsSystem';\n private engine: PhysicsEngine;\n\n /**\n * System init: configure params before the game starts.\n * @param param init params\n */\n init(param?: PhysicsSystemParams) {\n this.engine = new PhysicsEngine(this.game, param);\n this.game.canvas.setAttribute('data-pixel-ratio', (param.resolution || '1') as string);\n }\n /**\n * Called when the System is installed; if the game has not started, it runs when the\n * game starts. Use it for setup work such as initializing data.\n */\n awake() { }\n\n /**\n * Called after the System is installed and all systems' `awake` have run.\n */\n start() {\n this.engine.start();\n }\n /**\n * Called on every game loop; can perform operations and change component properties.\n */\n update(e) {\n const changes = this.componentObserver.clear();\n for (const changed of changes) {\n if (changed) {\n this.componentChanged(changed);\n }\n }\n this.engine.update(e);\n }\n\n componentChanged(changed: ComponentChanged) {\n if (changed.component instanceof Physics) {\n switch (changed.type) {\n case OBSERVER_TYPE.ADD: {\n if (changed.gameObject.parent && !changed.gameObject.getComponent(Physics).body) {\n this.engine.add(changed.component);\n }\n break;\n }\n case OBSERVER_TYPE.CHANGE: {\n this.engine.change(changed.component);\n break;\n }\n case OBSERVER_TYPE.REMOVE: {\n break;\n }\n }\n } else {\n switch (changed.type) {\n case OBSERVER_TYPE.CHANGE: {\n if (changed.gameObject.parent) {\n let physics = changed.gameObject.getComponent(Physics);\n if (physics && !physics.body) {\n this.engine.add(physics);\n }\n } else {\n let physics = changed.gameObject.getComponent(Physics);\n physics && this.engine.remove(physics);\n }\n }\n }\n }\n }\n /**\n * Like `update`, but called after every System's and component's `update` has run.\n */\n lateUpdate() { }\n /**\n * Called when the game starts or resumes playing after a pause.\n */\n onResume() {\n if (!this.engine.enabled) {\n this.engine.awake();\n }\n }\n /**\n * Called when the game is paused.\n */\n onPause() {\n this.engine.stop();\n }\n /**\n * Called when the system is destroyed.\n */\n onDestroy() {\n this.engine?.destroy();\n }\n}\n","/** Auto-generated by scripts/build-package.mjs — do not edit. */\n\nimport PhysicsSystem from './PhysicsSystem';\n\nObject.assign(PhysicsSystem, {\n packageName: \"@combos-fun/plugin-matterjs\",\n packageVersion: \"0.1.4-beta.1\",\n});\n"],"names":["PhysicsSystem"],"mappings":";;;;;;;IAIY;AAAZ,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,WAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,WAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,WAAA,CAAA,eAAA,CAAA,GAAA,cAA8B;AAC9B,IAAA,WAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,WAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,WAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EAVW,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;AAmEjB,MAAO,OAAQ,SAAQ,SAAwB,CAAA;aAC5C,IAAA,CAAA,aAAa,GAAW,SAAS,CAAC;AAKzC,IAAA,IAAI,CAAC,MAAqB,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM;IAC1B;IAEA,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC;AAC3D,YAAA,IAAI,CAAC,SAAS;gBAAE;AAChB,YAAA,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;AACtB,YAAA,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;AACtB,YAAA,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3C,YAAA,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;gBACjC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;YACtC;QACF;IACF;IACA,SAAS,GAAA;AACP,QAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;IAChE;;;AC3EF,MAAM,iBAAiB,GAAG,CAAC;AAC3B,MAAM,WAAW,GAAG,GAAG;AAEvB,IAAI,gBAAgB,GAAG,KAAK;AAE5B,SAAS,YAAY,GAAA;IACnB,IAAI,gBAAgB,EAAE;QACpB;IACF;AACA,IAAA,MAAM,GAAG,GAAI,MAAc,EAAE,WAAW,GAAG,MAAM,GAAI,MAAc,EAAE,OAAO;AAC5E,IAAA,IAAI,GAAG,EAAE,WAAW,EAAE;AACpB,QAAA,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;IAC9B;IACA,gBAAgB,GAAG,IAAI;AACzB;AAEc,MAAO,aAAa,CAAA;AAEhC,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;AAC3B,QAAA,YAAY,EAAE;IAChB;AAEO,IAAA,MAAM,CAAC,SAAkB,EAAA;AAC9B,QAAA,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,SAAS;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AACjD,QAAA,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;AACpE,QAAA,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC;QACtD,MAAM,cAAc,GAClB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,eAAe,GACnB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;;AAE3D,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;AAChF,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;YACxC,CAAC;YACD,CAAC;YACD,cAAc;YACd,eAAe;YACf,aAAa;SACd,EAAE,KAAK,CAAC;QACT,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,MAAM,IAAI,KAAK,CACb,CAAA,iDAAA,EAAoD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA,CAAE,CAC9E;QACH;AACA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,WAAW,CACjB,MAAmB,EACnB,GAAiB,EACjB,MAAe,EAAA;AAEf,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW;AAClC,QAAA,QAAQ,MAAM,CAAC,IAAI;AACjB,YAAA,KAAK,WAAW,CAAC,SAAS,EAAE;gBAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,cAAc;gBAChD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,eAAe;gBACnD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;YACpE;AACA,YAAA,KAAK,WAAW,CAAC,MAAM,EAAE;gBACvB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,aAAa;AACjD,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC;YAC1D;AACA,YAAA,KAAK,WAAW,CAAC,OAAO,EAAE;AACxB,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,aAAa;gBACjD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;YAClE;AACA,YAAA,KAAK,WAAW,CAAC,SAAS,EAAE;gBAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,cAAc;gBAChD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,eAAe;gBACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC;gBAC/D,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;YAC3E;YACA,KAAK,WAAW,CAAC,aAAa;gBAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;YACtD,KAAK,WAAW,CAAC,OAAO;gBACtB,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;YACjD,KAAK,WAAW,CAAC,IAAI;gBACnB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;YAC9C,KAAK,WAAW,CAAC,KAAK;gBACpB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;YAC/C,KAAK,WAAW,CAAC,QAAQ;gBACvB,IAAI,MAAM,EAAE;AACV,oBAAA,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC;gBAC9E;gBACA,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;AAClD,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CACb,CAAA,2CAAA,EAA8C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAE,CACpE;;IAEP;AAEQ,IAAA,kBAAkB,CACxB,MAAmB,EACnB,GAAiB,EACjB,OAAqC,EAAA;QAErC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC5E,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AAC5D,YAAA,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG;QACH;AACA,QAAA,YAAY,EAAE;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CACnC,GAAG,CAAC,CAAC,EACL,GAAG,CAAC,CAAC,EACL,IAAyB,EACzB,OAAO,EACP,IAAI,CACL;QACD,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;QAC3E;AACA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,aAAa,CACnB,MAAmB,EACnB,GAAiB,EACjB,OAAqC,EAAA;AAErC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,aAAa,CAAC;AAC9D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,cAAc,CAAC;AACxE,QAAA,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC;AACjC,QAAA,IAAI,KAAK,GAAG,WAAW,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC;QAC1D;AACA,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC;AACtD,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;AACpD,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;SACrD;AACD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC;IAClD;AAEQ,IAAA,UAAU,CAChB,MAAmB,EACnB,GAAiB,EACjB,OAAqC,EAAA;QAErC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;AAC9B,YAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;QAChE;QACA,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9B,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;AAClB,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;AAC9B,QAAA,IAAI,GAAG,GAAG,WAAW,EAAE;AACrB,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;QACjE;AACA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,IAAI,iBAAiB,CAAC;AACpE,QAAA,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE;QAClD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE;AACzE,YAAA,GAAG,IAAI;YACP,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;AAC1B,SAAA,CAAC;IACJ;AAEQ,IAAA,WAAW,CACjB,MAAmB,EACnB,GAAiB,EACjB,OAAqC,EAAA;AAErC,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ;QAC7B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAA,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC;QACrF;AACA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,IAAI,iBAAiB,CAAC;QACpE,MAAM,KAAK,GAAkB,EAAE;AAC/B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACzC,YAAA,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YAClB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;YACtB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACtB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACtB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACtB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACtB,YAAA,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;AAClB,YAAA,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;YAClB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;AAC9B,YAAA,IAAI,GAAG,GAAG,WAAW,EAAE;gBACrB;YACF;AACA,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAC9B,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EACb,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EACb,GAAG,EACH,SAAS,EACT,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAC9B,CAAC;QACJ;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;QACnE;AACA,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC;IAClD;AAEQ,IAAA,cAAc,CACpB,MAAmB,EACnB,GAAiB,EACjB,OAAqC,EAAA;AAErC,QAAA,MAAM,UAAU,GAAI,MAAwB,CAAC,KAAK;AAClD,QAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;AACvB,YAAA,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC;QAChF;QACA,MAAM,KAAK,GAAkB,EAAE;AAC/B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,YAAA,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;AAC1B,YAAA,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;AAC1C,YAAA,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC;YACvE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;QACjE;AACA,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC;IAClD;;AAGQ,IAAA,OAAO,CAAC,IAAiB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5B;QACA,OAAO,CAAC,IAAI,CAAC;IACf;AAEQ,IAAA,aAAa,CAAC,UAAsB,EAAA;QAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC;AACtD,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE,IAAI;AACrE,QAAA,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,KAAK,IAAI,CAAC,CAAC;AAC9F,QAAA,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC;QAC/F,OAAO;YACL,CAAC;YACD,CAAC;SACF;IACH;AACD;;AChQD;MACa,uBAAuB,CAAA;AAOlC,IAAA,WAAA,CAAY,IAA4B,EAAA;QAJhC,IAAA,CAAA,GAAG,GAAuB,IAAI;QAC9B,IAAA,CAAA,QAAQ,GAAoB,IAAI;AAItC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QACzB,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE;IAC1C;AAEA,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI;AAC3D,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE;QAC7B,MAAM,GAAG,CAAC,IAAI,CAAC;YACb,MAAM;YACN,KAAK;YACL,MAAM;YACN,UAAU;AACV,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,UAAU,EAAE,OAAO;AACpB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;AACd,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE;QAC9B,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjC,QAAA,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;IAClE;IAEQ,MAAM,GAAA;AACZ,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ;QACvB,IAAI,CAAC,CAAC,EAAE;YACN;QACF;QACA,CAAC,CAAC,KAAK,EAAE;AACT,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK,KAAK,EAAE;gBAClC;YACF;AACA,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACjF,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ;AAChC,gBAAA,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;oBAClB;gBACF;AACA,gBAAA,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACpB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,oBAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC;gBACA,CAAC,CAAC,SAAS,EAAE;AACb,gBAAA,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;YACrD;QACF;IACF;IAEA,OAAO,GAAA;AACL,QAAA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;AACjE,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACzD,YAAA,IAAI,CAAC,GAAG,GAAG,IAAI;QACjB;AACA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;IACtB;AACD;;ACrED;AACA,SAAS,sBAAsB,CAAC,IAAiB,EAAA;IAC/C,IAAI,OAAO,GAA4B,IAAI;IAC3C,OAAO,OAAO,EAAE;QACd,MAAM,MAAM,GAAG,OAA4B;AAC3C,QAAA,IAAI,MAAM,CAAC,SAAS,EAAE;YACpB,OAAO,MAAM,CAAC,SAAS;QACzB;QACA,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;YACjD;QACF;AACA,QAAA,OAAO,GAAG,OAAO,CAAC,MAAM;IAC1B;AACA,IAAA,OAAO,SAAS;AAClB;AAEc,MAAO,aAAa,CAAA;IAehC,WAAA,CAAY,IAAU,EAAE,OAA4B,EAAA;QAF5C,IAAA,CAAA,aAAa,GAAmC,IAAI;QACrD,IAAA,CAAA,OAAO,GAAY,KAAK;AAE7B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,EAAE;AACxC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU;AACnC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;QAEhB,IAAI,CAAC,eAAe,GAAG,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,CAAC;AAC5E,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,CAAC;AACrG,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC/B,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;YACtC,mBAAmB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC;AAC7D,SAAA,CAAC;IACJ;IAEO,KAAK,GAAA;QACV,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAClC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAgC,CAAC;AAC9E,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK;AACzB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACvB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AACtC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;YACtE,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;YAC1C;YACA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC;AAC/C,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,uBAAuB,CAAC;gBAC/C,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM;gBACN,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU;gBAC1C,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU;gBAC5C,UAAU;AACX,aAAA,CAAC;YACF,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,IAAG;AACzC,gBAAA,OAAO,CAAC,KAAK,CAAC,uDAAuD,EAAE,GAAG,CAAC;AAC7E,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;QAC3C;AACA,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,cAAc,EAAE;IACvB;AAEO,IAAA,MAAM,CAAC,CAAC,EAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB;QACF;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC;QAC3D;IACF;IAEO,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK;IAC7B;IAEO,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QAClC;IACF;IAEO,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI;IAC5B;AACO,IAAA,GAAG,CAAC,SAAS,EAAA;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AACzC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC;IACrC;AAEO,IAAA,MAAM,CAAC,SAAkB,EAAA;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AAC5C,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;AAC1D,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC;IACxC;AACO,IAAA,MAAM,CAAC,SAAkB,EAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;AAC1D,QAAA,SAAS,CAAC,IAAI,GAAG,SAAS;IAC5B;AAEQ,IAAA,YAAY,CAAC,MAAM,EAAA;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAsB;QACnE,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;QACnE;AACA,QAAA,OAAO,IAAI;IACb;IAEQ,aAAa,CAAC,SAAS,EAAE,IAAuB,EAAA;AACtD,QAAA,SAAS,CAAC,IAAI,GAAG,IAAI;AACrB,QAAA,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;AAC5B,QAAA,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM;AACrC,QAAA,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AACtC,QAAA,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;AAChD,QAAA,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC5B;IAEQ,mBAAmB,GAAA;AACxB,QAAA,IAAI,CAAC,eAAgF,CAAC,OAAO,CAAC,SAAS,IAAG;AACzG,YAAA,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,KAA4C,KAAI;AACxF,gBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE;AAC/B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,oBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACrB,oBAAA,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI;AAC7B,oBAAA,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC;AAChD,oBAAA,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC;AAChD,oBAAA,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE;wBAC9B;oBACF;AACA,oBAAA,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC;AACxE,oBAAA,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC;gBAC1E;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;AACjD,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACnD,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG;gBAC5C,KAAK;AACL,gBAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAChC,aAAA,GAAG;gBACA;aACD;AACH,YAAA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;AAC1E,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;QACzD;IACF;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAG;AAClC,YAAA,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,IAAG;gBAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;AACpC,gBAAA,MAAM,CAAC,OAAO,CAAC,IAAI,IAAG;oBACpB,MAAM,MAAM,GAAG,IAAyB;AACxC,oBAAA,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC;AACtE,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AACD;;ACxKc,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,MAA2B,CAAA;aAC7D,IAAA,CAAA,UAAU,GAAG,eAAH,CAAmB;AAGpC;;;AAGG;AACH,IAAA,IAAI,CAAC,KAA2B,EAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AACjD,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,kBAAkB,GAAG,KAAK,CAAC,UAAU,IAAI,GAAG,EAAY;IACxF;AACA;;;AAGG;AACH,IAAA,KAAK,KAAK;AAEV;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;IACrB;AACA;;AAEG;AACH,IAAA,MAAM,CAAC,CAAC,EAAA;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC9C,QAAA,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE;YAC7B,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAChC;QACF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACvB;AAEA,IAAA,gBAAgB,CAAC,OAAyB,EAAA;AACxC,QAAA,IAAI,OAAO,CAAC,SAAS,YAAY,OAAO,EAAE;AACxC,YAAA,QAAQ,OAAO,CAAC,IAAI;AAClB,gBAAA,KAAK,aAAa,CAAC,GAAG,EAAE;AACtB,oBAAA,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE;wBAC/E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;oBACpC;oBACA;gBACF;AACA,gBAAA,KAAK,aAAa,CAAC,MAAM,EAAE;oBACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;oBACrC;gBACF;AACA,gBAAA,KAAK,aAAa,CAAC,MAAM,EAAE;oBACzB;gBACF;;QAEJ;aAAO;AACL,YAAA,QAAQ,OAAO,CAAC,IAAI;AAClB,gBAAA,KAAK,aAAa,CAAC,MAAM,EAAE;AACzB,oBAAA,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE;wBAC7B,IAAI,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC;AACtD,wBAAA,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AAC5B,4BAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;wBAC1B;oBACF;yBAAO;wBACL,IAAI,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC;wBACtD,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;oBACxC;gBACF;;QAEJ;IACF;AACA;;AAEG;AACH,IAAA,UAAU,KAAK;AACf;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;QACrB;IACF;AACA;;AAEG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;AACA;;AAEG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE;IACxB;;AA7FmB,aAAa,GAAA,UAAA,CAAA;IAJjC,UAAU,CAAC,iBAAiB,CAAC;AAC5B,QAAA,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC/C,UAAU,EAAE,CAAC,QAAQ,CAAC;KACvB;AACoB,CAAA,EAAA,aAAa,CA8FjC;sBA9FoB,aAAa;;AC3BlC;AAIA,MAAM,CAAC,MAAM,CAACA,eAAa,EAAE;AAC3B,IAAA,WAAW,EAAE,6BAA6B;AAC1C,IAAA,cAAc,EAAE,cAAc;AAC/B,CAAA,CAAC;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@combos-fun/plugin-matterjs",
3
- "version": "0.1.4-beta.0",
3
+ "version": "0.1.4-beta.1",
4
4
  "description": "2D physics",
5
5
  "main": "index.js",
6
6
  "module": "dist/plugin-matterjs.esm.js",
@@ -40,8 +40,8 @@
40
40
  "matter-js": "^0.20.0",
41
41
  "pixi.js": "^8.18.1",
42
42
  "poly-decomp": "^0.3.0",
43
- "@combos-fun/engine": "0.1.4-beta.0",
44
- "@combos-fun/plugin-renderer": "0.1.4-beta.0"
43
+ "@combos-fun/engine": "0.1.4-beta.1",
44
+ "@combos-fun/plugin-renderer": "0.1.4-beta.1"
45
45
  },
46
46
  "scripts": {
47
47
  "build": "node ../../scripts/build-package.mjs"