@combos-fun/plugin-matterjs 0.0.19 → 0.0.20

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.
@@ -397,7 +397,7 @@ var PhysicsSystem = PhysicsSystem$1;
397
397
  /** Auto-generated by scripts/build-package.mjs — do not edit. */
398
398
  Object.assign(PhysicsSystem, {
399
399
  packageName: "@combos-fun/plugin-matterjs",
400
- packageVersion: "0.0.19",
400
+ packageVersion: "0.0.20",
401
401
  });
402
402
 
403
403
  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 Matter from 'matter-js';\nexport enum PhysicsType {\n RECTANGLE = 'rectangle',\n CIRCLE = 'circle',\n POLYGON = 'polygon',\n}\nexport interface PhysicsParams {\n type?: PhysicsType\n bodyOptions?: {\n isStatic?: boolean,\n restitution?: number,\n density?: number,\n [propName: string]: any,\n },\n position?: {\n x?: number\n y?: number\n }\n sides?: number\n radius?: number\n stopRotation?: boolean\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 this.gameObject.transform.anchor.x = 0;\n this.gameObject.transform.anchor.y = 0;\n this.gameObject.transform.position.x = this.body.position.x;\n this.gameObject.transform.position.y = this.body.position.y;\n if (!this.bodyParams.stopRotation) {\n this.gameObject.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 { PhysicsType, Physics } from './Physics';\nimport { GameObject } from '@combos-fun/engine';\ndeclare interface BodyOptions {\n chamfer?: number; // 斜切角\n angle?: number; // 旋转角\n isStatic?: boolean;\n density?: number; // 密度;\n restitution?: number; // 回弹系数\n velocity?: number; // 速率\n speed?: number; // 速度\n motion?: number; // 势能\n mass?: number;\n}\n\nexport interface RectangleParams {\n x: number;\n y: number;\n width: number;\n height: number;\n options: BodyOptions;\n}\n\nexport interface Verctor {\n x: number;\n y: number;\n}\nexport default class BodiesFactory {\n private Bodies: typeof Matter.Bodies;\n constructor() {\n this.Bodies = Matter.Bodies;\n }\n public create(component: Physics): Matter.Body {\n let body: Matter.Body = null;\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 halfW =\n (gameObject.transform.size.width * gameObject.transform.scale.x) / 2;\n const halfH =\n (gameObject.transform.size.height * gameObject.transform.scale.y) / 2;\n /** Matter.circle approximates with a polygon; NaN/0 radius breaks vertices. */\n const defaultRadius = Math.max(1, Math.min(halfW, halfH));\n switch (bodyParams.type) {\n case PhysicsType.RECTANGLE: {\n const width = gameObject.transform.size.width * gameObject.transform.scale.x;\n const height = gameObject.transform.size.height * gameObject.transform.scale.y;\n body = this.Bodies.rectangle(x, y, width, height, bodyParams.bodyOptions);\n break;\n }\n case PhysicsType.CIRCLE: {\n const radius = bodyParams.radius ?? defaultRadius;\n body = this.Bodies.circle(x, y, radius, bodyParams.bodyOptions);\n break;\n }\n case PhysicsType.POLYGON: {\n const sides = Math.max(3, bodyParams.sides ?? 6);\n const radius = bodyParams.radius ?? defaultRadius;\n body = this.Bodies.polygon(x, y, sides, radius, bodyParams.bodyOptions);\n break;\n }\n }\n return body;\n }\n\n private getCoordinate(gameObject: GameObject): Verctor {\n const x = gameObject.transform.position.x + gameObject.transform.anchor.x * gameObject.parent.transform.size.width;\n const y = gameObject.transform.position.y + gameObject.transform.anchor.y * gameObject.parent.transform.size.height;\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 verts = body.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 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 { Component, 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\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 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 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 component.body = 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): any {\n const body = this.bodiesFactory.create(params) as PhysicsLinkedBody;\n return body;\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: Component = (bodyA as PhysicsLinkedBody).component;\n const componentB: Component = (bodyB as PhysicsLinkedBody).component;\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, Transform } 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 Transform: ['_parent'],\n})\nexport default class PhysicsSystem extends System<PhysicsSystemParams> {\n static systemName = 'PhysicsSystem';\n private engine: PhysicsEngine;\n\n /**\n * System 初始化用,可以配置参数,游戏未开始\n *\n * System init, set params, game is not begain\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 * System 被安装的时候,如果游戏还没有开始,那么会在游戏开始的时候调用。用于前置操作,初始化数据等。\n *\n * Called while the System installed, if game is not begain, it will be called while begain. use to pre operation, init data.\n */\n awake() { }\n\n /**\n * System 被安装后,所有的 awake 执行完后\n *\n * Called while the System installed, after all of systems' awake been called\n */\n start() {\n this.engine.start();\n }\n /**\n * 每一次游戏循环调用,可以做一些游戏操作,控制改变一些组件属性。\n *\n * Called by every loop, can do some operation, change some property or other component property.\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.transform.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.component as Transform).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 * 和 update?() 类似,在所有System和组件的 update?() 执行以后调用。\n *\n * Like update, called all of gameobject update.\n */\n lateUpdate() { }\n /**\n * 游戏开始和游戏暂停后开始播放的时候调用。\n *\n * Called while the game to play when game pause.\n */\n onResume() {\n if (!this.engine.enabled) {\n this.engine.awake();\n }\n }\n /**\n * 游戏暂停的时候调用。\n *\n * Called while the game paused.\n */\n onPause() {\n this.engine.stop();\n }\n /**\n * System 被销毁的时候调用。\n * Called while the system be 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.0.19\",\n});\n"],"names":["PhysicsType","Component","Matter","Application","Graphics","PhysicsSystem","System","OBSERVER_TYPE","__decorate","decorators"],"mappings":";;;;;;;;;;;AAEYA;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;AACrB,CAAC,EAJWA,mBAAW,KAAXA,mBAAW,GAAA,EAAA,CAAA,CAAA;AAsBjB,MAAO,OAAQ,SAAQC,gBAAwB,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,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;AACtC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AACjC,gBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;YACtD;QACF;IACF;IACA,SAAS,GAAA;AACP,QAAAC,uBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;IAChE;;;ACpBY,MAAO,aAAa,CAAA;AAEhC,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,MAAM,GAAGA,uBAAM,CAAC,MAAM;IAC7B;AACO,IAAA,MAAM,CAAC,SAAkB,EAAA;QAC9B,IAAI,IAAI,GAAgB,IAAI;AAC5B,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,KAAK,GACT,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;QACtE,MAAM,KAAK,GACT,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;;AAEvE,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACzD,QAAA,QAAQ,UAAU,CAAC,IAAI;AACrB,YAAA,KAAKF,mBAAW,CAAC,SAAS,EAAE;AAC1B,gBAAA,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5E,gBAAA,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9E,gBAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC;gBACzE;YACF;AACA,YAAA,KAAKA,mBAAW,CAAC,MAAM,EAAE;AACvB,gBAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,aAAa;AACjD,gBAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC;gBAC/D;YACF;AACA,YAAA,KAAKA,mBAAW,CAAC,OAAO,EAAE;AACxB,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC;AAChD,gBAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,aAAa;AACjD,gBAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC;gBACvE;YACF;;AAEF,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,aAAa,CAAC,UAAsB,EAAA;QAC1C,MAAM,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK;QAClH,MAAM,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;QACnH,OAAO;YACL,CAAC;YACD,CAAC;SACF;IACH;AACD;;AC/DD;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,IAAIG,mBAAW,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,IAAIC,gBAAQ,EAAE;QAC9B,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjC,QAAAF,uBAAM,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,GAAGA,uBAAM,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,KAAK,GAAG,IAAI,CAAC,QAAQ;AAC3B,YAAA,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;gBAClB;YACF;AACA,YAAA,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;YACnB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACpB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,gBAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC;YACA,CAAC,CAAC,SAAS,EAAE;AACb,YAAA,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACrD;IACF;IAEA,OAAO,GAAA;AACL,QAAAA,uBAAM,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;;AClEa,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,GAAGA,uBAAM,CAAC,MAAM;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAGA,uBAAM,CAAC,KAAK;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,EAAE;AACxC,QAAA,IAAI,CAAC,MAAM,GAAGA,uBAAM,CAAC,MAAM;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAGA,uBAAM,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;YACfA,uBAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAC/BA,uBAAM,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,SAAS,CAAC,IAAI,GAAG,IAAI;AACrB,QAAA,SAAS,CAAC,IAAI,GAAGA,uBAAM,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;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,SAAS,CAAC,IAAI,GAAG,OAAO;IAC1B;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;AACnE,QAAA,OAAO,IAAI;IACb;IAEQ,mBAAmB,GAAA;AACxB,QAAA,IAAI,CAAC,eAAgF,CAAC,OAAO,CAAC,SAAS,IAAG;AACzG,YAAAA,uBAAM,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,GAAe,KAA2B,CAAC,SAAS;AACpE,oBAAA,MAAM,UAAU,GAAe,KAA2B,CAAC,SAAS;AACpE,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,GAAGA,uBAAM,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,GAAGA,uBAAM,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,YAAAA,uBAAM,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;;AC9Ic,IAAMG,eAAa,GAAnB,MAAM,aAAc,SAAQC,aAA2B,CAAA;aAC7D,IAAA,CAAA,UAAU,GAAG,eAAH,CAAmB;AAGpC;;;;;AAKG;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;;;;AAIG;AACH,IAAA,KAAK,KAAK;AAEV;;;;AAIG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;IACrB;AACA;;;;AAIG;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,KAAKC,oBAAa,CAAC,GAAG,EAAE;oBACtB,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE;wBACzF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;oBACpC;oBACA;gBACF;AACA,gBAAA,KAAKA,oBAAa,CAAC,MAAM,EAAE;oBACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;oBACrC;gBACF;AACA,gBAAA,KAAKA,oBAAa,CAAC,MAAM,EAAE;oBACzB;gBACF;;QAEJ;aAAO;AACL,YAAA,QAAQ,OAAO,CAAC,IAAI;AAClB,gBAAA,KAAKA,oBAAa,CAAC,MAAM,EAAE;AACzB,oBAAA,IAAK,OAAO,CAAC,SAAuB,CAAC,MAAM,EAAE;wBAC3C,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;;;;AAIG;AACH,IAAA,UAAU,KAAK;AACf;;;;AAIG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;QACrB;IACF;AACA;;;;AAIG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;AACA;;;AAGG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE;IACxB;;AA3GmBF,eAAa,GAAAG,gBAAA,CAAA;IAJjCC,iBAAU,CAAC,iBAAiB,CAAC;AAC5B,QAAA,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC/C,SAAS,EAAE,CAAC,SAAS,CAAC;KACvB;AACoB,CAAA,EAAAJ,eAAa,CA4GjC;oBA5GoBA,eAAa;;AC3BlC;AAIA,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;AAC3B,IAAA,WAAW,EAAE,6BAA6B;AAC1C,IAAA,cAAc,EAAE,QAAQ;AACzB,CAAA,CAAC;;;;;"}
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 Matter from 'matter-js';\nexport enum PhysicsType {\n RECTANGLE = 'rectangle',\n CIRCLE = 'circle',\n POLYGON = 'polygon',\n}\nexport interface PhysicsParams {\n type?: PhysicsType\n bodyOptions?: {\n isStatic?: boolean,\n restitution?: number,\n density?: number,\n [propName: string]: any,\n },\n position?: {\n x?: number\n y?: number\n }\n sides?: number\n radius?: number\n stopRotation?: boolean\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 this.gameObject.transform.anchor.x = 0;\n this.gameObject.transform.anchor.y = 0;\n this.gameObject.transform.position.x = this.body.position.x;\n this.gameObject.transform.position.y = this.body.position.y;\n if (!this.bodyParams.stopRotation) {\n this.gameObject.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 { PhysicsType, Physics } from './Physics';\nimport { GameObject } from '@combos-fun/engine';\ndeclare interface BodyOptions {\n chamfer?: number; // 斜切角\n angle?: number; // 旋转角\n isStatic?: boolean;\n density?: number; // 密度;\n restitution?: number; // 回弹系数\n velocity?: number; // 速率\n speed?: number; // 速度\n motion?: number; // 势能\n mass?: number;\n}\n\nexport interface RectangleParams {\n x: number;\n y: number;\n width: number;\n height: number;\n options: BodyOptions;\n}\n\nexport interface Verctor {\n x: number;\n y: number;\n}\nexport default class BodiesFactory {\n private Bodies: typeof Matter.Bodies;\n constructor() {\n this.Bodies = Matter.Bodies;\n }\n public create(component: Physics): Matter.Body {\n let body: Matter.Body = null;\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 halfW =\n (gameObject.transform.size.width * gameObject.transform.scale.x) / 2;\n const halfH =\n (gameObject.transform.size.height * gameObject.transform.scale.y) / 2;\n /** Matter.circle approximates with a polygon; NaN/0 radius breaks vertices. */\n const defaultRadius = Math.max(1, Math.min(halfW, halfH));\n switch (bodyParams.type) {\n case PhysicsType.RECTANGLE: {\n const width = gameObject.transform.size.width * gameObject.transform.scale.x;\n const height = gameObject.transform.size.height * gameObject.transform.scale.y;\n body = this.Bodies.rectangle(x, y, width, height, bodyParams.bodyOptions);\n break;\n }\n case PhysicsType.CIRCLE: {\n const radius = bodyParams.radius ?? defaultRadius;\n body = this.Bodies.circle(x, y, radius, bodyParams.bodyOptions);\n break;\n }\n case PhysicsType.POLYGON: {\n const sides = Math.max(3, bodyParams.sides ?? 6);\n const radius = bodyParams.radius ?? defaultRadius;\n body = this.Bodies.polygon(x, y, sides, radius, bodyParams.bodyOptions);\n break;\n }\n }\n return body;\n }\n\n private getCoordinate(gameObject: GameObject): Verctor {\n const x = gameObject.transform.position.x + gameObject.transform.anchor.x * gameObject.parent.transform.size.width;\n const y = gameObject.transform.position.y + gameObject.transform.anchor.y * gameObject.parent.transform.size.height;\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 verts = body.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 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 { Component, 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\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 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 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 component.body = 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): any {\n const body = this.bodiesFactory.create(params) as PhysicsLinkedBody;\n return body;\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: Component = (bodyA as PhysicsLinkedBody).component;\n const componentB: Component = (bodyB as PhysicsLinkedBody).component;\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, Transform } 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 Transform: ['_parent'],\n})\nexport default class PhysicsSystem extends System<PhysicsSystemParams> {\n static systemName = 'PhysicsSystem';\n private engine: PhysicsEngine;\n\n /**\n * System 初始化用,可以配置参数,游戏未开始\n *\n * System init, set params, game is not begain\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 * System 被安装的时候,如果游戏还没有开始,那么会在游戏开始的时候调用。用于前置操作,初始化数据等。\n *\n * Called while the System installed, if game is not begain, it will be called while begain. use to pre operation, init data.\n */\n awake() { }\n\n /**\n * System 被安装后,所有的 awake 执行完后\n *\n * Called while the System installed, after all of systems' awake been called\n */\n start() {\n this.engine.start();\n }\n /**\n * 每一次游戏循环调用,可以做一些游戏操作,控制改变一些组件属性。\n *\n * Called by every loop, can do some operation, change some property or other component property.\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.transform.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.component as Transform).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 * 和 update?() 类似,在所有System和组件的 update?() 执行以后调用。\n *\n * Like update, called all of gameobject update.\n */\n lateUpdate() { }\n /**\n * 游戏开始和游戏暂停后开始播放的时候调用。\n *\n * Called while the game to play when game pause.\n */\n onResume() {\n if (!this.engine.enabled) {\n this.engine.awake();\n }\n }\n /**\n * 游戏暂停的时候调用。\n *\n * Called while the game paused.\n */\n onPause() {\n this.engine.stop();\n }\n /**\n * System 被销毁的时候调用。\n * Called while the system be 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.0.20\",\n});\n"],"names":["PhysicsType","Component","Matter","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("pixi.js");function n(e){return e&&e.__esModule?e:{default:e}}var o,a=n(s);exports.PhysicsType=void 0,(o=exports.PhysicsType||(exports.PhysicsType={})).RECTANGLE="rectangle",o.CIRCLE="circle",o.POLYGON="polygon";class r extends t.Component{static{this.componentName="Physics"}init(e){this.bodyParams=e}update(){this.body&&this.gameObject&&(this.gameObject.transform.anchor.x=0,this.gameObject.transform.anchor.y=0,this.gameObject.transform.position.x=this.body.position.x,this.gameObject.transform.position.y=this.body.position.y,this.bodyParams.stopRotation||(this.gameObject.transform.rotation=this.body.angle))}onDestroy(){a.default.World.remove(this.PhysicsEngine.world,this.body,!0)}}class h{constructor(){this.Bodies=a.default.Bodies}create(e){let t=null;const{gameObject:s,bodyParams:i}=e,n=this.getCoordinate(s),o=i.position?i.position.x:n.x,a=i.position?i.position.y:n.y,r=s.transform.size.width*s.transform.scale.x/2,h=s.transform.size.height*s.transform.scale.y/2,c=Math.max(1,Math.min(r,h));switch(i.type){case exports.PhysicsType.RECTANGLE:{const e=s.transform.size.width*s.transform.scale.x,n=s.transform.size.height*s.transform.scale.y;t=this.Bodies.rectangle(o,a,e,n,i.bodyOptions);break}case exports.PhysicsType.CIRCLE:{const e=i.radius??c;t=this.Bodies.circle(o,a,e,i.bodyOptions);break}case exports.PhysicsType.POLYGON:{const e=Math.max(3,i.sides??6),s=i.radius??c;t=this.Bodies.polygon(o,a,e,s,i.bodyOptions);break}}return t}getCoordinate(e){return{x:e.transform.position.x+e.transform.anchor.x*e.parent.transform.size.width,y:e.transform.position.y+e.transform.anchor.y*e.parent.transform.size.height}}}class c{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:n=1}=this.opts,o=new i.Application;await o.init({canvas:e,width:t,height:s,resolution:n,autoDensity:!0,antialias:!0,backgroundAlpha:.12,preference:"webgl"}),this.app=o,this.graphics=new i.Graphics,o.stage.addChild(this.graphics),a.default.Events.on(this.engine,"afterUpdate",this.onAfterUpdate)}redraw(){const e=this.graphics;if(!e)return;e.clear();const t=a.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.vertices;if(!n?.length)continue;const o=n[0];e.moveTo(o.x,o.y);for(let t=1;t<n.length;t++)e.lineTo(n[t].x,n[t].y);e.closePath(),e.stroke({width:1,color:58998,alpha:.9})}}destroy(){a.default.Events.off(this.engine,"afterUpdate",this.onAfterUpdate),this.app&&(this.app.destroy(!0,{children:!0,texture:!0}),this.app=null),this.graphics=null}}class d{constructor(e,t){this.debugRenderer=null,this.enabled=!1,this.Engine=a.default.Engine,this.World=a.default.World,this.bodiesFactory=new h,this.Runner=a.default.Runner,this.Constraint=a.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 c({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&&(a.default.Runner.stop(this.runner),a.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]),e.body=t,e.Body=a.default.Body,e.PhysicsEngine=this.engine,e.Constraint=this.Constraint,e.mouseConstraint=this.mouseConstraint,e.World=this.World,t.component=e}change(e){const t=this.createBodies(e);this.World.remove(this.engine.world,e.body,!0),this.World.add(this.engine.world,[t]),e.body=t}remove(e){this.World.remove(this.engine.world,e.body,!0),e.body=void 0}createBodies(e){return this.bodiesFactory.create(e)}initCollisionEvents(){this.collisionEvents.forEach(e=>{a.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,a=n.component,r=o.component;a.emit(e,r.gameObject,a.gameObject),r.emit(e,a.gameObject,r.gameObject)}})})}initMouse(){if(this.options.mouse&&this.options.mouse.open){const e=a.default.Mouse.create(this.game.canvas);let t=this.options.mouse.constraint?{mouse:e,constraint:this.options.mouse.constraint}:{mouse:e};this.mouseConstraint=a.default.MouseConstraint.create(this.engine,t),this.World.add(this.engine.world,this.mouseConstraint)}}initBodyEvents(){this.bodyEvents.forEach(e=>{a.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 l=class extends t.System{static{this.systemName="PhysicsSystem"}init(e){this.engine=new d(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 r)switch(e.type){case t.OBSERVER_TYPE.ADD:e.gameObject.transform.parent&&!e.gameObject.getComponent(r).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.component.parent){let t=e.gameObject.getComponent(r);t&&!t.body&&this.engine.add(t)}else{let t=e.gameObject.getComponent(r);t&&this.engine.remove(t)}}lateUpdate(){}onResume(){this.engine.enabled||this.engine.awake()}onPause(){this.engine.stop()}onDestroy(){this.engine?.destroy()}};l=e.__decorate([t.decorators.componentObserver({Physics:[{prop:["bodyParams"],deep:!0}],Transform:["_parent"]})],l);var p=l;Object.assign(p,{packageName:"@combos-fun/plugin-matterjs",packageVersion:"0.0.19"}),exports.Physics=r,exports.PhysicsSystem=p;
1
+ "use strict";var e=require("tslib"),t=require("@combos-fun/engine"),s=require("matter-js"),i=require("pixi.js");function n(e){return e&&e.__esModule?e:{default:e}}var o,a=n(s);exports.PhysicsType=void 0,(o=exports.PhysicsType||(exports.PhysicsType={})).RECTANGLE="rectangle",o.CIRCLE="circle",o.POLYGON="polygon";class r extends t.Component{static{this.componentName="Physics"}init(e){this.bodyParams=e}update(){this.body&&this.gameObject&&(this.gameObject.transform.anchor.x=0,this.gameObject.transform.anchor.y=0,this.gameObject.transform.position.x=this.body.position.x,this.gameObject.transform.position.y=this.body.position.y,this.bodyParams.stopRotation||(this.gameObject.transform.rotation=this.body.angle))}onDestroy(){a.default.World.remove(this.PhysicsEngine.world,this.body,!0)}}class h{constructor(){this.Bodies=a.default.Bodies}create(e){let t=null;const{gameObject:s,bodyParams:i}=e,n=this.getCoordinate(s),o=i.position?i.position.x:n.x,a=i.position?i.position.y:n.y,r=s.transform.size.width*s.transform.scale.x/2,h=s.transform.size.height*s.transform.scale.y/2,c=Math.max(1,Math.min(r,h));switch(i.type){case exports.PhysicsType.RECTANGLE:{const e=s.transform.size.width*s.transform.scale.x,n=s.transform.size.height*s.transform.scale.y;t=this.Bodies.rectangle(o,a,e,n,i.bodyOptions);break}case exports.PhysicsType.CIRCLE:{const e=i.radius??c;t=this.Bodies.circle(o,a,e,i.bodyOptions);break}case exports.PhysicsType.POLYGON:{const e=Math.max(3,i.sides??6),s=i.radius??c;t=this.Bodies.polygon(o,a,e,s,i.bodyOptions);break}}return t}getCoordinate(e){return{x:e.transform.position.x+e.transform.anchor.x*e.parent.transform.size.width,y:e.transform.position.y+e.transform.anchor.y*e.parent.transform.size.height}}}class c{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:n=1}=this.opts,o=new i.Application;await o.init({canvas:e,width:t,height:s,resolution:n,autoDensity:!0,antialias:!0,backgroundAlpha:.12,preference:"webgl"}),this.app=o,this.graphics=new i.Graphics,o.stage.addChild(this.graphics),a.default.Events.on(this.engine,"afterUpdate",this.onAfterUpdate)}redraw(){const e=this.graphics;if(!e)return;e.clear();const t=a.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.vertices;if(!n?.length)continue;const o=n[0];e.moveTo(o.x,o.y);for(let t=1;t<n.length;t++)e.lineTo(n[t].x,n[t].y);e.closePath(),e.stroke({width:1,color:58998,alpha:.9})}}destroy(){a.default.Events.off(this.engine,"afterUpdate",this.onAfterUpdate),this.app&&(this.app.destroy(!0,{children:!0,texture:!0}),this.app=null),this.graphics=null}}class d{constructor(e,t){this.debugRenderer=null,this.enabled=!1,this.Engine=a.default.Engine,this.World=a.default.World,this.bodiesFactory=new h,this.Runner=a.default.Runner,this.Constraint=a.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 c({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&&(a.default.Runner.stop(this.runner),a.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]),e.body=t,e.Body=a.default.Body,e.PhysicsEngine=this.engine,e.Constraint=this.Constraint,e.mouseConstraint=this.mouseConstraint,e.World=this.World,t.component=e}change(e){const t=this.createBodies(e);this.World.remove(this.engine.world,e.body,!0),this.World.add(this.engine.world,[t]),e.body=t}remove(e){this.World.remove(this.engine.world,e.body,!0),e.body=void 0}createBodies(e){return this.bodiesFactory.create(e)}initCollisionEvents(){this.collisionEvents.forEach(e=>{a.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,a=n.component,r=o.component;a.emit(e,r.gameObject,a.gameObject),r.emit(e,a.gameObject,r.gameObject)}})})}initMouse(){if(this.options.mouse&&this.options.mouse.open){const e=a.default.Mouse.create(this.game.canvas);let t=this.options.mouse.constraint?{mouse:e,constraint:this.options.mouse.constraint}:{mouse:e};this.mouseConstraint=a.default.MouseConstraint.create(this.engine,t),this.World.add(this.engine.world,this.mouseConstraint)}}initBodyEvents(){this.bodyEvents.forEach(e=>{a.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 l=class extends t.System{static{this.systemName="PhysicsSystem"}init(e){this.engine=new d(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 r)switch(e.type){case t.OBSERVER_TYPE.ADD:e.gameObject.transform.parent&&!e.gameObject.getComponent(r).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.component.parent){let t=e.gameObject.getComponent(r);t&&!t.body&&this.engine.add(t)}else{let t=e.gameObject.getComponent(r);t&&this.engine.remove(t)}}lateUpdate(){}onResume(){this.engine.enabled||this.engine.awake()}onPause(){this.engine.stop()}onDestroy(){this.engine?.destroy()}};l=e.__decorate([t.decorators.componentObserver({Physics:[{prop:["bodyParams"],deep:!0}],Transform:["_parent"]})],l);var p=l;Object.assign(p,{packageName:"@combos-fun/plugin-matterjs",packageVersion:"0.0.20"}),exports.Physics=r,exports.PhysicsSystem=p;
@@ -391,7 +391,7 @@ var PhysicsSystem$1 = PhysicsSystem;
391
391
  /** Auto-generated by scripts/build-package.mjs — do not edit. */
392
392
  Object.assign(PhysicsSystem$1, {
393
393
  packageName: "@combos-fun/plugin-matterjs",
394
- packageVersion: "0.0.19",
394
+ packageVersion: "0.0.20",
395
395
  });
396
396
 
397
397
  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 Matter from 'matter-js';\nexport enum PhysicsType {\n RECTANGLE = 'rectangle',\n CIRCLE = 'circle',\n POLYGON = 'polygon',\n}\nexport interface PhysicsParams {\n type?: PhysicsType\n bodyOptions?: {\n isStatic?: boolean,\n restitution?: number,\n density?: number,\n [propName: string]: any,\n },\n position?: {\n x?: number\n y?: number\n }\n sides?: number\n radius?: number\n stopRotation?: boolean\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 this.gameObject.transform.anchor.x = 0;\n this.gameObject.transform.anchor.y = 0;\n this.gameObject.transform.position.x = this.body.position.x;\n this.gameObject.transform.position.y = this.body.position.y;\n if (!this.bodyParams.stopRotation) {\n this.gameObject.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 { PhysicsType, Physics } from './Physics';\nimport { GameObject } from '@combos-fun/engine';\ndeclare interface BodyOptions {\n chamfer?: number; // 斜切角\n angle?: number; // 旋转角\n isStatic?: boolean;\n density?: number; // 密度;\n restitution?: number; // 回弹系数\n velocity?: number; // 速率\n speed?: number; // 速度\n motion?: number; // 势能\n mass?: number;\n}\n\nexport interface RectangleParams {\n x: number;\n y: number;\n width: number;\n height: number;\n options: BodyOptions;\n}\n\nexport interface Verctor {\n x: number;\n y: number;\n}\nexport default class BodiesFactory {\n private Bodies: typeof Matter.Bodies;\n constructor() {\n this.Bodies = Matter.Bodies;\n }\n public create(component: Physics): Matter.Body {\n let body: Matter.Body = null;\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 halfW =\n (gameObject.transform.size.width * gameObject.transform.scale.x) / 2;\n const halfH =\n (gameObject.transform.size.height * gameObject.transform.scale.y) / 2;\n /** Matter.circle approximates with a polygon; NaN/0 radius breaks vertices. */\n const defaultRadius = Math.max(1, Math.min(halfW, halfH));\n switch (bodyParams.type) {\n case PhysicsType.RECTANGLE: {\n const width = gameObject.transform.size.width * gameObject.transform.scale.x;\n const height = gameObject.transform.size.height * gameObject.transform.scale.y;\n body = this.Bodies.rectangle(x, y, width, height, bodyParams.bodyOptions);\n break;\n }\n case PhysicsType.CIRCLE: {\n const radius = bodyParams.radius ?? defaultRadius;\n body = this.Bodies.circle(x, y, radius, bodyParams.bodyOptions);\n break;\n }\n case PhysicsType.POLYGON: {\n const sides = Math.max(3, bodyParams.sides ?? 6);\n const radius = bodyParams.radius ?? defaultRadius;\n body = this.Bodies.polygon(x, y, sides, radius, bodyParams.bodyOptions);\n break;\n }\n }\n return body;\n }\n\n private getCoordinate(gameObject: GameObject): Verctor {\n const x = gameObject.transform.position.x + gameObject.transform.anchor.x * gameObject.parent.transform.size.width;\n const y = gameObject.transform.position.y + gameObject.transform.anchor.y * gameObject.parent.transform.size.height;\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 verts = body.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 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 { Component, 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\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 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 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 component.body = 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): any {\n const body = this.bodiesFactory.create(params) as PhysicsLinkedBody;\n return body;\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: Component = (bodyA as PhysicsLinkedBody).component;\n const componentB: Component = (bodyB as PhysicsLinkedBody).component;\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, Transform } 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 Transform: ['_parent'],\n})\nexport default class PhysicsSystem extends System<PhysicsSystemParams> {\n static systemName = 'PhysicsSystem';\n private engine: PhysicsEngine;\n\n /**\n * System 初始化用,可以配置参数,游戏未开始\n *\n * System init, set params, game is not begain\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 * System 被安装的时候,如果游戏还没有开始,那么会在游戏开始的时候调用。用于前置操作,初始化数据等。\n *\n * Called while the System installed, if game is not begain, it will be called while begain. use to pre operation, init data.\n */\n awake() { }\n\n /**\n * System 被安装后,所有的 awake 执行完后\n *\n * Called while the System installed, after all of systems' awake been called\n */\n start() {\n this.engine.start();\n }\n /**\n * 每一次游戏循环调用,可以做一些游戏操作,控制改变一些组件属性。\n *\n * Called by every loop, can do some operation, change some property or other component property.\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.transform.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.component as Transform).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 * 和 update?() 类似,在所有System和组件的 update?() 执行以后调用。\n *\n * Like update, called all of gameobject update.\n */\n lateUpdate() { }\n /**\n * 游戏开始和游戏暂停后开始播放的时候调用。\n *\n * Called while the game to play when game pause.\n */\n onResume() {\n if (!this.engine.enabled) {\n this.engine.awake();\n }\n }\n /**\n * 游戏暂停的时候调用。\n *\n * Called while the game paused.\n */\n onPause() {\n this.engine.stop();\n }\n /**\n * System 被销毁的时候调用。\n * Called while the system be 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.0.19\",\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 Matter from 'matter-js';\nexport enum PhysicsType {\n RECTANGLE = 'rectangle',\n CIRCLE = 'circle',\n POLYGON = 'polygon',\n}\nexport interface PhysicsParams {\n type?: PhysicsType\n bodyOptions?: {\n isStatic?: boolean,\n restitution?: number,\n density?: number,\n [propName: string]: any,\n },\n position?: {\n x?: number\n y?: number\n }\n sides?: number\n radius?: number\n stopRotation?: boolean\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 this.gameObject.transform.anchor.x = 0;\n this.gameObject.transform.anchor.y = 0;\n this.gameObject.transform.position.x = this.body.position.x;\n this.gameObject.transform.position.y = this.body.position.y;\n if (!this.bodyParams.stopRotation) {\n this.gameObject.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 { PhysicsType, Physics } from './Physics';\nimport { GameObject } from '@combos-fun/engine';\ndeclare interface BodyOptions {\n chamfer?: number; // 斜切角\n angle?: number; // 旋转角\n isStatic?: boolean;\n density?: number; // 密度;\n restitution?: number; // 回弹系数\n velocity?: number; // 速率\n speed?: number; // 速度\n motion?: number; // 势能\n mass?: number;\n}\n\nexport interface RectangleParams {\n x: number;\n y: number;\n width: number;\n height: number;\n options: BodyOptions;\n}\n\nexport interface Verctor {\n x: number;\n y: number;\n}\nexport default class BodiesFactory {\n private Bodies: typeof Matter.Bodies;\n constructor() {\n this.Bodies = Matter.Bodies;\n }\n public create(component: Physics): Matter.Body {\n let body: Matter.Body = null;\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 halfW =\n (gameObject.transform.size.width * gameObject.transform.scale.x) / 2;\n const halfH =\n (gameObject.transform.size.height * gameObject.transform.scale.y) / 2;\n /** Matter.circle approximates with a polygon; NaN/0 radius breaks vertices. */\n const defaultRadius = Math.max(1, Math.min(halfW, halfH));\n switch (bodyParams.type) {\n case PhysicsType.RECTANGLE: {\n const width = gameObject.transform.size.width * gameObject.transform.scale.x;\n const height = gameObject.transform.size.height * gameObject.transform.scale.y;\n body = this.Bodies.rectangle(x, y, width, height, bodyParams.bodyOptions);\n break;\n }\n case PhysicsType.CIRCLE: {\n const radius = bodyParams.radius ?? defaultRadius;\n body = this.Bodies.circle(x, y, radius, bodyParams.bodyOptions);\n break;\n }\n case PhysicsType.POLYGON: {\n const sides = Math.max(3, bodyParams.sides ?? 6);\n const radius = bodyParams.radius ?? defaultRadius;\n body = this.Bodies.polygon(x, y, sides, radius, bodyParams.bodyOptions);\n break;\n }\n }\n return body;\n }\n\n private getCoordinate(gameObject: GameObject): Verctor {\n const x = gameObject.transform.position.x + gameObject.transform.anchor.x * gameObject.parent.transform.size.width;\n const y = gameObject.transform.position.y + gameObject.transform.anchor.y * gameObject.parent.transform.size.height;\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 verts = body.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 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 { Component, 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\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 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 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 component.body = 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): any {\n const body = this.bodiesFactory.create(params) as PhysicsLinkedBody;\n return body;\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: Component = (bodyA as PhysicsLinkedBody).component;\n const componentB: Component = (bodyB as PhysicsLinkedBody).component;\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, Transform } 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 Transform: ['_parent'],\n})\nexport default class PhysicsSystem extends System<PhysicsSystemParams> {\n static systemName = 'PhysicsSystem';\n private engine: PhysicsEngine;\n\n /**\n * System 初始化用,可以配置参数,游戏未开始\n *\n * System init, set params, game is not begain\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 * System 被安装的时候,如果游戏还没有开始,那么会在游戏开始的时候调用。用于前置操作,初始化数据等。\n *\n * Called while the System installed, if game is not begain, it will be called while begain. use to pre operation, init data.\n */\n awake() { }\n\n /**\n * System 被安装后,所有的 awake 执行完后\n *\n * Called while the System installed, after all of systems' awake been called\n */\n start() {\n this.engine.start();\n }\n /**\n * 每一次游戏循环调用,可以做一些游戏操作,控制改变一些组件属性。\n *\n * Called by every loop, can do some operation, change some property or other component property.\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.transform.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.component as Transform).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 * 和 update?() 类似,在所有System和组件的 update?() 执行以后调用。\n *\n * Like update, called all of gameobject update.\n */\n lateUpdate() { }\n /**\n * 游戏开始和游戏暂停后开始播放的时候调用。\n *\n * Called while the game to play when game pause.\n */\n onResume() {\n if (!this.engine.enabled) {\n this.engine.awake();\n }\n }\n /**\n * 游戏暂停的时候调用。\n *\n * Called while the game paused.\n */\n onPause() {\n this.engine.stop();\n }\n /**\n * System 被销毁的时候调用。\n * Called while the system be 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.0.20\",\n});\n"],"names":["PhysicsSystem"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@combos-fun/plugin-matterjs",
3
- "version": "0.0.19",
3
+ "version": "0.0.20",
4
4
  "description": "2D physics",
5
5
  "main": "index.js",
6
6
  "module": "dist/plugin-matterjs.esm.js",
@@ -40,7 +40,7 @@
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.0.19"
43
+ "@combos-fun/engine": "0.0.20"
44
44
  },
45
45
  "scripts": {
46
46
  "build": "node ../../scripts/build-package.mjs"