@combos-fun/plugin-renderer-event 0.0.10 → 0.0.12

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.
@@ -110,7 +110,7 @@ let EventSystem = class EventSystem extends pluginRenderer.Renderer {
110
110
  remove(changed) {
111
111
  const container = this.containerManager.getContainer(changed.gameObject.id);
112
112
  container.interactive = false;
113
- container.off('tap');
113
+ container.off('pointertap');
114
114
  container.off('pointerdown');
115
115
  container.off('pointermove');
116
116
  container.off('pointerup');
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-renderer-event.cjs.js","sources":["../lib/system.ts","../lib/component.ts"],"sourcesContent":["import { Renderer, RendererSystem, RendererManager, ContainerManager } from '@combos-fun/plugin-renderer';\nimport { decorators, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { Circle, Ellipse, Polygon, RoundedRectangle, Rectangle } from 'pixi.js';\nimport type { Container as PixiContainer } from 'pixi.js';\nimport type { FederatedPointerEvent } from 'pixi.js';\nimport EventComponent from './component';\n\nfunction pointerEventData(e: FederatedPointerEvent, container: PixiContainer) {\n return {\n pointerId: e.pointerId,\n position: {\n x: e.global.x,\n y: e.global.y,\n },\n localPosition: e.getLocalPosition(container),\n };\n}\n\nconst hitAreaFunc = {\n Circle,\n Ellipse,\n Polygon,\n Rect: Rectangle,\n RoundedRect: RoundedRectangle,\n};\n\nconst propertyForHitArea = {\n Circle: ['x', 'y', 'radius'],\n Ellipse: ['x', 'y', 'width', 'height'],\n Rect: ['x', 'y', 'width', 'height'],\n RoundedRect: ['x', 'y', 'width', 'height', 'radius'],\n Polygon: ['paths'],\n};\n\nexport interface EventSystemParams {\n moveWhenInside?: boolean\n}\n\n@decorators.componentObserver({\n Event: [{ prop: ['hitArea'], deep: true }],\n})\nexport default class EventSystem extends Renderer<EventSystemParams> {\n static systemName = 'Event';\n name: string = 'Event';\n renderSystem: RendererSystem;\n rendererManager: RendererManager;\n containerManager: ContainerManager;\n init({ moveWhenInside = false }: EventSystemParams = {}) {\n this.renderSystem = this.game.getSystem(RendererSystem) as RendererSystem;\n this.renderSystem.rendererManager.register(this);\n const events = this.renderSystem.application?.renderer?.events;\n if (events) {\n events.features.globalMove = !moveWhenInside;\n }\n }\n componentChanged(changed: ComponentChanged) {\n switch (changed.type) {\n case OBSERVER_TYPE.ADD:\n this.add(changed);\n break;\n case OBSERVER_TYPE.REMOVE:\n this.remove(changed);\n break;\n case OBSERVER_TYPE.CHANGE:\n this.change(changed);\n break;\n }\n }\n add(changed: ComponentChanged) {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n container.interactive = true;\n container.interactiveChildren = true;\n const component = changed.component as EventComponent;\n\n if (component.hitArea) {\n this.addHitArea(changed, container, component.hitArea);\n }\n\n container.on('pointertap', (e: FederatedPointerEvent) => {\n component.emit('tap', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointerdown', (e: FederatedPointerEvent) => {\n component.emit('touchstart', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointermove', (e: FederatedPointerEvent) => {\n component.emit('touchmove', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointerup', (e: FederatedPointerEvent) => {\n component.emit('touchend', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointerupoutside', (e: FederatedPointerEvent) => {\n component.emit('touchendoutside', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointercancel', (e: FederatedPointerEvent) => {\n component.emit('touchcancel', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n }\n remove(changed: ComponentChanged) {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n container.interactive = false;\n container.off('tap');\n container.off('pointerdown');\n container.off('pointermove');\n container.off('pointerup');\n container.off('pointerupoutside');\n container.off('pointercancel');\n changed.component.removeAllListeners();\n }\n change(changed: ComponentChanged) {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n container.interactive = true;\n const component = changed.component as EventComponent;\n\n if (component.hitArea) {\n this.addHitArea(changed, container, component.hitArea);\n } else {\n component.hitArea = null;\n }\n }\n addHitArea(changed: ComponentChanged, container, hitArea) {\n const { type, style } = hitArea;\n if (!hitAreaFunc[type]) {\n console.error(`${changed.gameObject.name}'s hitArea type is not defined`);\n return;\n }\n const params = [];\n for (const key of propertyForHitArea[type]) {\n params.push(style[key]);\n }\n const hitAreaShape = new hitAreaFunc[type](...params);\n container.hitArea = hitAreaShape;\n }\n}\n","import { Component } from '@combos-fun/engine';\nimport type { GameObject } from \"@combos-fun/engine\";\n\nexport enum HIT_AREA_TYPE {\n Circle = 'Circle',\n Ellipse = 'Ellipse',\n Polygon = 'Polygon',\n Rect = 'Rect',\n RoundedRect = 'RoundedRect',\n}\n\ninterface HitArea {\n type: HIT_AREA_TYPE;\n style?: {\n x?: number;\n y?: number;\n radius?: number;\n width?: number;\n height?: number;\n paths?: number[];\n };\n}\n\nexport interface EventParams {\n hitArea: HitArea;\n}\n\ntype TouchEventName = 'touchstart' | 'touchmove' | 'touchend' | 'tap' | 'touchendoutside' | 'touchcancel';\ntype EventParam = {\n stopPropagation: () => void,\n data: {\n pointerId: number,\n position: {\n x: number,\n y: number,\n },\n /**\n * The position related to event target gameobject\n */\n localPosition: {\n x: number,\n y: number\n }\n },\n gameObject: GameObject,\n}\n\nexport default class Event extends Component<EventParams> {\n static componentName = 'Event';\n hitArea: HitArea = undefined;\n init(params?: EventParams) {\n params && Object.assign(this, params);\n }\n\n emit(eventName: TouchEventName, ...args: [EventParam]): boolean\n emit<T extends string>(eventName: Exclude<T, TouchEventName>, ...args: any[]): boolean\n emit(en: string, ...args: any[]) {\n return super.emit(en, ...args);\n }\n\n once(eventName: TouchEventName, fn: (arg: EventParam) => void, context?: any): this\n once<T extends string>(eventName: Exclude<T, TouchEventName>, fn: (...args: any[]) => void, context?: any): this\n once(en: string, fn: (...args: any[]) => void, context?: any) {\n return super.once(en, fn, context);\n }\n\n on(eventName: TouchEventName, fn: (arg: EventParam) => void, context?: any): this\n on<T extends string>(eventName: Exclude<T, TouchEventName>, fn: (...args: any[]) => void, context?: any): this\n on(en: string, fn: (...args: any[]) => void, context?: any) {\n return super.on(en, fn, context);\n }\n\n}\n"],"names":["Circle","Ellipse","Polygon","Rectangle","RoundedRectangle","Renderer","RendererSystem","OBSERVER_TYPE","__decorate","decorators","HIT_AREA_TYPE","Component"],"mappings":"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"}
1
+ {"version":3,"file":"plugin-renderer-event.cjs.js","sources":["../lib/system.ts","../lib/component.ts"],"sourcesContent":["import { Renderer, RendererSystem, RendererManager, ContainerManager } from '@combos-fun/plugin-renderer';\nimport { decorators, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { Circle, Ellipse, Polygon, RoundedRectangle, Rectangle } from 'pixi.js';\nimport type { Container as PixiContainer } from 'pixi.js';\nimport type { FederatedPointerEvent } from 'pixi.js';\nimport EventComponent from './component';\n\nfunction pointerEventData(e: FederatedPointerEvent, container: PixiContainer) {\n return {\n pointerId: e.pointerId,\n position: {\n x: e.global.x,\n y: e.global.y,\n },\n localPosition: e.getLocalPosition(container),\n };\n}\n\nconst hitAreaFunc = {\n Circle,\n Ellipse,\n Polygon,\n Rect: Rectangle,\n RoundedRect: RoundedRectangle,\n};\n\nconst propertyForHitArea = {\n Circle: ['x', 'y', 'radius'],\n Ellipse: ['x', 'y', 'width', 'height'],\n Rect: ['x', 'y', 'width', 'height'],\n RoundedRect: ['x', 'y', 'width', 'height', 'radius'],\n Polygon: ['paths'],\n};\n\nexport interface EventSystemParams {\n moveWhenInside?: boolean\n}\n\n@decorators.componentObserver({\n Event: [{ prop: ['hitArea'], deep: true }],\n})\nexport default class EventSystem extends Renderer<EventSystemParams> {\n static systemName = 'Event';\n name: string = 'Event';\n renderSystem: RendererSystem;\n rendererManager: RendererManager;\n containerManager: ContainerManager;\n init({ moveWhenInside = false }: EventSystemParams = {}) {\n this.renderSystem = this.game.getSystem(RendererSystem) as RendererSystem;\n this.renderSystem.rendererManager.register(this);\n const events = this.renderSystem.application?.renderer?.events;\n if (events) {\n events.features.globalMove = !moveWhenInside;\n }\n }\n componentChanged(changed: ComponentChanged) {\n switch (changed.type) {\n case OBSERVER_TYPE.ADD:\n this.add(changed);\n break;\n case OBSERVER_TYPE.REMOVE:\n this.remove(changed);\n break;\n case OBSERVER_TYPE.CHANGE:\n this.change(changed);\n break;\n }\n }\n add(changed: ComponentChanged) {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n container.interactive = true;\n container.interactiveChildren = true;\n const component = changed.component as EventComponent;\n\n if (component.hitArea) {\n this.addHitArea(changed, container, component.hitArea);\n }\n\n container.on('pointertap', (e: FederatedPointerEvent) => {\n component.emit('tap', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointerdown', (e: FederatedPointerEvent) => {\n component.emit('touchstart', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointermove', (e: FederatedPointerEvent) => {\n component.emit('touchmove', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointerup', (e: FederatedPointerEvent) => {\n component.emit('touchend', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointerupoutside', (e: FederatedPointerEvent) => {\n component.emit('touchendoutside', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointercancel', (e: FederatedPointerEvent) => {\n component.emit('touchcancel', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n }\n remove(changed: ComponentChanged) {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n container.interactive = false;\n container.off('pointertap');\n container.off('pointerdown');\n container.off('pointermove');\n container.off('pointerup');\n container.off('pointerupoutside');\n container.off('pointercancel');\n changed.component.removeAllListeners();\n }\n change(changed: ComponentChanged) {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n container.interactive = true;\n const component = changed.component as EventComponent;\n\n if (component.hitArea) {\n this.addHitArea(changed, container, component.hitArea);\n } else {\n component.hitArea = null;\n }\n }\n addHitArea(changed: ComponentChanged, container, hitArea) {\n const { type, style } = hitArea;\n if (!hitAreaFunc[type]) {\n console.error(`${changed.gameObject.name}'s hitArea type is not defined`);\n return;\n }\n const params = [];\n for (const key of propertyForHitArea[type]) {\n params.push(style[key]);\n }\n const hitAreaShape = new hitAreaFunc[type](...params);\n container.hitArea = hitAreaShape;\n }\n}\n","import { Component } from '@combos-fun/engine';\nimport type { GameObject } from \"@combos-fun/engine\";\n\nexport enum HIT_AREA_TYPE {\n Circle = 'Circle',\n Ellipse = 'Ellipse',\n Polygon = 'Polygon',\n Rect = 'Rect',\n RoundedRect = 'RoundedRect',\n}\n\ninterface HitArea {\n type: HIT_AREA_TYPE;\n style?: {\n x?: number;\n y?: number;\n radius?: number;\n width?: number;\n height?: number;\n paths?: number[];\n };\n}\n\nexport interface EventParams {\n hitArea: HitArea;\n}\n\ntype TouchEventName = 'touchstart' | 'touchmove' | 'touchend' | 'tap' | 'touchendoutside' | 'touchcancel';\ntype EventParam = {\n stopPropagation: () => void,\n data: {\n pointerId: number,\n position: {\n x: number,\n y: number,\n },\n /**\n * The position related to event target gameobject\n */\n localPosition: {\n x: number,\n y: number\n }\n },\n gameObject: GameObject,\n}\n\nexport default class Event extends Component<EventParams> {\n static componentName = 'Event';\n hitArea: HitArea = undefined;\n init(params?: EventParams) {\n params && Object.assign(this, params);\n }\n\n emit(eventName: TouchEventName, ...args: [EventParam]): boolean\n emit<T extends string>(eventName: Exclude<T, TouchEventName>, ...args: any[]): boolean\n emit(en: string, ...args: any[]) {\n return super.emit(en, ...args);\n }\n\n once(eventName: TouchEventName, fn: (arg: EventParam) => void, context?: any): this\n once<T extends string>(eventName: Exclude<T, TouchEventName>, fn: (...args: any[]) => void, context?: any): this\n once(en: string, fn: (...args: any[]) => void, context?: any) {\n return super.once(en, fn, context);\n }\n\n on(eventName: TouchEventName, fn: (arg: EventParam) => void, context?: any): this\n on<T extends string>(eventName: Exclude<T, TouchEventName>, fn: (...args: any[]) => void, context?: any): this\n on(en: string, fn: (...args: any[]) => void, context?: any) {\n return super.on(en, fn, context);\n }\n\n}\n"],"names":["Circle","Ellipse","Polygon","Rectangle","RoundedRectangle","Renderer","RendererSystem","OBSERVER_TYPE","__decorate","decorators","HIT_AREA_TYPE","Component"],"mappings":"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"}
@@ -1 +1 @@
1
- "use strict";var e=require("tslib"),t=require("@combos-fun/plugin-renderer"),o=require("@combos-fun/engine"),n=require("pixi.js");function i(e,t){return{pointerId:e.pointerId,position:{x:e.global.x,y:e.global.y},localPosition:e.getLocalPosition(t)}}const r={Circle:n.Circle,Ellipse:n.Ellipse,Polygon:n.Polygon,Rect:n.Rectangle,RoundedRect:n.RoundedRectangle},a={Circle:["x","y","radius"],Ellipse:["x","y","width","height"],Rect:["x","y","width","height"],RoundedRect:["x","y","width","height","radius"],Polygon:["paths"]};let s=class extends t.Renderer{constructor(){super(...arguments),this.name="Event"}static{this.systemName="Event"}init({moveWhenInside:e=!1}={}){this.renderSystem=this.game.getSystem(t.RendererSystem),this.renderSystem.rendererManager.register(this);const o=this.renderSystem.application?.renderer?.events;o&&(o.features.globalMove=!e)}componentChanged(e){switch(e.type){case o.OBSERVER_TYPE.ADD:this.add(e);break;case o.OBSERVER_TYPE.REMOVE:this.remove(e);break;case o.OBSERVER_TYPE.CHANGE:this.change(e)}}add(e){const t=this.containerManager.getContainer(e.gameObject.id);t.interactive=!0,t.interactiveChildren=!0;const o=e.component;o.hitArea&&this.addHitArea(e,t,o.hitArea),t.on("pointertap",e=>{o.emit("tap",{stopPropagation:()=>e.stopPropagation(),data:i(e,t),gameObject:o.gameObject})}),t.on("pointerdown",e=>{o.emit("touchstart",{stopPropagation:()=>e.stopPropagation(),data:i(e,t),gameObject:o.gameObject})}),t.on("pointermove",e=>{o.emit("touchmove",{stopPropagation:()=>e.stopPropagation(),data:i(e,t),gameObject:o.gameObject})}),t.on("pointerup",e=>{o.emit("touchend",{stopPropagation:()=>e.stopPropagation(),data:i(e,t),gameObject:o.gameObject})}),t.on("pointerupoutside",e=>{o.emit("touchendoutside",{stopPropagation:()=>e.stopPropagation(),data:i(e,t),gameObject:o.gameObject})}),t.on("pointercancel",e=>{o.emit("touchcancel",{stopPropagation:()=>e.stopPropagation(),data:i(e,t),gameObject:o.gameObject})})}remove(e){const t=this.containerManager.getContainer(e.gameObject.id);t.interactive=!1,t.off("tap"),t.off("pointerdown"),t.off("pointermove"),t.off("pointerup"),t.off("pointerupoutside"),t.off("pointercancel"),e.component.removeAllListeners()}change(e){const t=this.containerManager.getContainer(e.gameObject.id);t.interactive=!0;const o=e.component;o.hitArea?this.addHitArea(e,t,o.hitArea):o.hitArea=null}addHitArea(e,t,o){const{type:n,style:i}=o;if(!r[n])return void console.error(`${e.gameObject.name}'s hitArea type is not defined`);const s=[];for(const e of a[n])s.push(i[e]);const c=new r[n](...s);t.hitArea=c}};s=e.__decorate([o.decorators.componentObserver({Event:[{prop:["hitArea"],deep:!0}]})],s);var c,p=s;exports.HIT_AREA_TYPE=void 0,(c=exports.HIT_AREA_TYPE||(exports.HIT_AREA_TYPE={})).Circle="Circle",c.Ellipse="Ellipse",c.Polygon="Polygon",c.Rect="Rect",c.RoundedRect="RoundedRect";class d extends o.Component{constructor(){super(...arguments),this.hitArea=void 0}static{this.componentName="Event"}init(e){e&&Object.assign(this,e)}emit(e,...t){return super.emit(e,...t)}once(e,t,o){return super.once(e,t,o)}on(e,t,o){return super.on(e,t,o)}}exports.Event=d,exports.EventSystem=p;
1
+ "use strict";var e=require("tslib"),t=require("@combos-fun/plugin-renderer"),o=require("@combos-fun/engine"),n=require("pixi.js");function i(e,t){return{pointerId:e.pointerId,position:{x:e.global.x,y:e.global.y},localPosition:e.getLocalPosition(t)}}const r={Circle:n.Circle,Ellipse:n.Ellipse,Polygon:n.Polygon,Rect:n.Rectangle,RoundedRect:n.RoundedRectangle},a={Circle:["x","y","radius"],Ellipse:["x","y","width","height"],Rect:["x","y","width","height"],RoundedRect:["x","y","width","height","radius"],Polygon:["paths"]};let s=class extends t.Renderer{constructor(){super(...arguments),this.name="Event"}static{this.systemName="Event"}init({moveWhenInside:e=!1}={}){this.renderSystem=this.game.getSystem(t.RendererSystem),this.renderSystem.rendererManager.register(this);const o=this.renderSystem.application?.renderer?.events;o&&(o.features.globalMove=!e)}componentChanged(e){switch(e.type){case o.OBSERVER_TYPE.ADD:this.add(e);break;case o.OBSERVER_TYPE.REMOVE:this.remove(e);break;case o.OBSERVER_TYPE.CHANGE:this.change(e)}}add(e){const t=this.containerManager.getContainer(e.gameObject.id);t.interactive=!0,t.interactiveChildren=!0;const o=e.component;o.hitArea&&this.addHitArea(e,t,o.hitArea),t.on("pointertap",e=>{o.emit("tap",{stopPropagation:()=>e.stopPropagation(),data:i(e,t),gameObject:o.gameObject})}),t.on("pointerdown",e=>{o.emit("touchstart",{stopPropagation:()=>e.stopPropagation(),data:i(e,t),gameObject:o.gameObject})}),t.on("pointermove",e=>{o.emit("touchmove",{stopPropagation:()=>e.stopPropagation(),data:i(e,t),gameObject:o.gameObject})}),t.on("pointerup",e=>{o.emit("touchend",{stopPropagation:()=>e.stopPropagation(),data:i(e,t),gameObject:o.gameObject})}),t.on("pointerupoutside",e=>{o.emit("touchendoutside",{stopPropagation:()=>e.stopPropagation(),data:i(e,t),gameObject:o.gameObject})}),t.on("pointercancel",e=>{o.emit("touchcancel",{stopPropagation:()=>e.stopPropagation(),data:i(e,t),gameObject:o.gameObject})})}remove(e){const t=this.containerManager.getContainer(e.gameObject.id);t.interactive=!1,t.off("pointertap"),t.off("pointerdown"),t.off("pointermove"),t.off("pointerup"),t.off("pointerupoutside"),t.off("pointercancel"),e.component.removeAllListeners()}change(e){const t=this.containerManager.getContainer(e.gameObject.id);t.interactive=!0;const o=e.component;o.hitArea?this.addHitArea(e,t,o.hitArea):o.hitArea=null}addHitArea(e,t,o){const{type:n,style:i}=o;if(!r[n])return void console.error(`${e.gameObject.name}'s hitArea type is not defined`);const s=[];for(const e of a[n])s.push(i[e]);const c=new r[n](...s);t.hitArea=c}};s=e.__decorate([o.decorators.componentObserver({Event:[{prop:["hitArea"],deep:!0}]})],s);var c,p=s;exports.HIT_AREA_TYPE=void 0,(c=exports.HIT_AREA_TYPE||(exports.HIT_AREA_TYPE={})).Circle="Circle",c.Ellipse="Ellipse",c.Polygon="Polygon",c.Rect="Rect",c.RoundedRect="RoundedRect";class d extends o.Component{constructor(){super(...arguments),this.hitArea=void 0}static{this.componentName="Event"}init(e){e&&Object.assign(this,e)}emit(e,...t){return super.emit(e,...t)}once(e,t,o){return super.once(e,t,o)}on(e,t,o){return super.on(e,t,o)}}exports.Event=d,exports.EventSystem=p;
@@ -108,7 +108,7 @@ let EventSystem = class EventSystem extends Renderer {
108
108
  remove(changed) {
109
109
  const container = this.containerManager.getContainer(changed.gameObject.id);
110
110
  container.interactive = false;
111
- container.off('tap');
111
+ container.off('pointertap');
112
112
  container.off('pointerdown');
113
113
  container.off('pointermove');
114
114
  container.off('pointerup');
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-renderer-event.esm.js","sources":["../lib/system.ts","../lib/component.ts"],"sourcesContent":["import { Renderer, RendererSystem, RendererManager, ContainerManager } from '@combos-fun/plugin-renderer';\nimport { decorators, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { Circle, Ellipse, Polygon, RoundedRectangle, Rectangle } from 'pixi.js';\nimport type { Container as PixiContainer } from 'pixi.js';\nimport type { FederatedPointerEvent } from 'pixi.js';\nimport EventComponent from './component';\n\nfunction pointerEventData(e: FederatedPointerEvent, container: PixiContainer) {\n return {\n pointerId: e.pointerId,\n position: {\n x: e.global.x,\n y: e.global.y,\n },\n localPosition: e.getLocalPosition(container),\n };\n}\n\nconst hitAreaFunc = {\n Circle,\n Ellipse,\n Polygon,\n Rect: Rectangle,\n RoundedRect: RoundedRectangle,\n};\n\nconst propertyForHitArea = {\n Circle: ['x', 'y', 'radius'],\n Ellipse: ['x', 'y', 'width', 'height'],\n Rect: ['x', 'y', 'width', 'height'],\n RoundedRect: ['x', 'y', 'width', 'height', 'radius'],\n Polygon: ['paths'],\n};\n\nexport interface EventSystemParams {\n moveWhenInside?: boolean\n}\n\n@decorators.componentObserver({\n Event: [{ prop: ['hitArea'], deep: true }],\n})\nexport default class EventSystem extends Renderer<EventSystemParams> {\n static systemName = 'Event';\n name: string = 'Event';\n renderSystem: RendererSystem;\n rendererManager: RendererManager;\n containerManager: ContainerManager;\n init({ moveWhenInside = false }: EventSystemParams = {}) {\n this.renderSystem = this.game.getSystem(RendererSystem) as RendererSystem;\n this.renderSystem.rendererManager.register(this);\n const events = this.renderSystem.application?.renderer?.events;\n if (events) {\n events.features.globalMove = !moveWhenInside;\n }\n }\n componentChanged(changed: ComponentChanged) {\n switch (changed.type) {\n case OBSERVER_TYPE.ADD:\n this.add(changed);\n break;\n case OBSERVER_TYPE.REMOVE:\n this.remove(changed);\n break;\n case OBSERVER_TYPE.CHANGE:\n this.change(changed);\n break;\n }\n }\n add(changed: ComponentChanged) {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n container.interactive = true;\n container.interactiveChildren = true;\n const component = changed.component as EventComponent;\n\n if (component.hitArea) {\n this.addHitArea(changed, container, component.hitArea);\n }\n\n container.on('pointertap', (e: FederatedPointerEvent) => {\n component.emit('tap', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointerdown', (e: FederatedPointerEvent) => {\n component.emit('touchstart', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointermove', (e: FederatedPointerEvent) => {\n component.emit('touchmove', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointerup', (e: FederatedPointerEvent) => {\n component.emit('touchend', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointerupoutside', (e: FederatedPointerEvent) => {\n component.emit('touchendoutside', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointercancel', (e: FederatedPointerEvent) => {\n component.emit('touchcancel', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n }\n remove(changed: ComponentChanged) {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n container.interactive = false;\n container.off('tap');\n container.off('pointerdown');\n container.off('pointermove');\n container.off('pointerup');\n container.off('pointerupoutside');\n container.off('pointercancel');\n changed.component.removeAllListeners();\n }\n change(changed: ComponentChanged) {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n container.interactive = true;\n const component = changed.component as EventComponent;\n\n if (component.hitArea) {\n this.addHitArea(changed, container, component.hitArea);\n } else {\n component.hitArea = null;\n }\n }\n addHitArea(changed: ComponentChanged, container, hitArea) {\n const { type, style } = hitArea;\n if (!hitAreaFunc[type]) {\n console.error(`${changed.gameObject.name}'s hitArea type is not defined`);\n return;\n }\n const params = [];\n for (const key of propertyForHitArea[type]) {\n params.push(style[key]);\n }\n const hitAreaShape = new hitAreaFunc[type](...params);\n container.hitArea = hitAreaShape;\n }\n}\n","import { Component } from '@combos-fun/engine';\nimport type { GameObject } from \"@combos-fun/engine\";\n\nexport enum HIT_AREA_TYPE {\n Circle = 'Circle',\n Ellipse = 'Ellipse',\n Polygon = 'Polygon',\n Rect = 'Rect',\n RoundedRect = 'RoundedRect',\n}\n\ninterface HitArea {\n type: HIT_AREA_TYPE;\n style?: {\n x?: number;\n y?: number;\n radius?: number;\n width?: number;\n height?: number;\n paths?: number[];\n };\n}\n\nexport interface EventParams {\n hitArea: HitArea;\n}\n\ntype TouchEventName = 'touchstart' | 'touchmove' | 'touchend' | 'tap' | 'touchendoutside' | 'touchcancel';\ntype EventParam = {\n stopPropagation: () => void,\n data: {\n pointerId: number,\n position: {\n x: number,\n y: number,\n },\n /**\n * The position related to event target gameobject\n */\n localPosition: {\n x: number,\n y: number\n }\n },\n gameObject: GameObject,\n}\n\nexport default class Event extends Component<EventParams> {\n static componentName = 'Event';\n hitArea: HitArea = undefined;\n init(params?: EventParams) {\n params && Object.assign(this, params);\n }\n\n emit(eventName: TouchEventName, ...args: [EventParam]): boolean\n emit<T extends string>(eventName: Exclude<T, TouchEventName>, ...args: any[]): boolean\n emit(en: string, ...args: any[]) {\n return super.emit(en, ...args);\n }\n\n once(eventName: TouchEventName, fn: (arg: EventParam) => void, context?: any): this\n once<T extends string>(eventName: Exclude<T, TouchEventName>, fn: (...args: any[]) => void, context?: any): this\n once(en: string, fn: (...args: any[]) => void, context?: any) {\n return super.once(en, fn, context);\n }\n\n on(eventName: TouchEventName, fn: (arg: EventParam) => void, context?: any): this\n on<T extends string>(eventName: Exclude<T, TouchEventName>, fn: (...args: any[]) => void, context?: any): this\n on(en: string, fn: (...args: any[]) => void, context?: any) {\n return super.on(en, fn, context);\n }\n\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-renderer-event.esm.js","sources":["../lib/system.ts","../lib/component.ts"],"sourcesContent":["import { Renderer, RendererSystem, RendererManager, ContainerManager } from '@combos-fun/plugin-renderer';\nimport { decorators, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { Circle, Ellipse, Polygon, RoundedRectangle, Rectangle } from 'pixi.js';\nimport type { Container as PixiContainer } from 'pixi.js';\nimport type { FederatedPointerEvent } from 'pixi.js';\nimport EventComponent from './component';\n\nfunction pointerEventData(e: FederatedPointerEvent, container: PixiContainer) {\n return {\n pointerId: e.pointerId,\n position: {\n x: e.global.x,\n y: e.global.y,\n },\n localPosition: e.getLocalPosition(container),\n };\n}\n\nconst hitAreaFunc = {\n Circle,\n Ellipse,\n Polygon,\n Rect: Rectangle,\n RoundedRect: RoundedRectangle,\n};\n\nconst propertyForHitArea = {\n Circle: ['x', 'y', 'radius'],\n Ellipse: ['x', 'y', 'width', 'height'],\n Rect: ['x', 'y', 'width', 'height'],\n RoundedRect: ['x', 'y', 'width', 'height', 'radius'],\n Polygon: ['paths'],\n};\n\nexport interface EventSystemParams {\n moveWhenInside?: boolean\n}\n\n@decorators.componentObserver({\n Event: [{ prop: ['hitArea'], deep: true }],\n})\nexport default class EventSystem extends Renderer<EventSystemParams> {\n static systemName = 'Event';\n name: string = 'Event';\n renderSystem: RendererSystem;\n rendererManager: RendererManager;\n containerManager: ContainerManager;\n init({ moveWhenInside = false }: EventSystemParams = {}) {\n this.renderSystem = this.game.getSystem(RendererSystem) as RendererSystem;\n this.renderSystem.rendererManager.register(this);\n const events = this.renderSystem.application?.renderer?.events;\n if (events) {\n events.features.globalMove = !moveWhenInside;\n }\n }\n componentChanged(changed: ComponentChanged) {\n switch (changed.type) {\n case OBSERVER_TYPE.ADD:\n this.add(changed);\n break;\n case OBSERVER_TYPE.REMOVE:\n this.remove(changed);\n break;\n case OBSERVER_TYPE.CHANGE:\n this.change(changed);\n break;\n }\n }\n add(changed: ComponentChanged) {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n container.interactive = true;\n container.interactiveChildren = true;\n const component = changed.component as EventComponent;\n\n if (component.hitArea) {\n this.addHitArea(changed, container, component.hitArea);\n }\n\n container.on('pointertap', (e: FederatedPointerEvent) => {\n component.emit('tap', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointerdown', (e: FederatedPointerEvent) => {\n component.emit('touchstart', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointermove', (e: FederatedPointerEvent) => {\n component.emit('touchmove', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointerup', (e: FederatedPointerEvent) => {\n component.emit('touchend', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointerupoutside', (e: FederatedPointerEvent) => {\n component.emit('touchendoutside', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n container.on('pointercancel', (e: FederatedPointerEvent) => {\n component.emit('touchcancel', {\n stopPropagation: () => e.stopPropagation(),\n data: pointerEventData(e, container),\n gameObject: component.gameObject,\n });\n });\n }\n remove(changed: ComponentChanged) {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n container.interactive = false;\n container.off('pointertap');\n container.off('pointerdown');\n container.off('pointermove');\n container.off('pointerup');\n container.off('pointerupoutside');\n container.off('pointercancel');\n changed.component.removeAllListeners();\n }\n change(changed: ComponentChanged) {\n const container = this.containerManager.getContainer(changed.gameObject.id);\n container.interactive = true;\n const component = changed.component as EventComponent;\n\n if (component.hitArea) {\n this.addHitArea(changed, container, component.hitArea);\n } else {\n component.hitArea = null;\n }\n }\n addHitArea(changed: ComponentChanged, container, hitArea) {\n const { type, style } = hitArea;\n if (!hitAreaFunc[type]) {\n console.error(`${changed.gameObject.name}'s hitArea type is not defined`);\n return;\n }\n const params = [];\n for (const key of propertyForHitArea[type]) {\n params.push(style[key]);\n }\n const hitAreaShape = new hitAreaFunc[type](...params);\n container.hitArea = hitAreaShape;\n }\n}\n","import { Component } from '@combos-fun/engine';\nimport type { GameObject } from \"@combos-fun/engine\";\n\nexport enum HIT_AREA_TYPE {\n Circle = 'Circle',\n Ellipse = 'Ellipse',\n Polygon = 'Polygon',\n Rect = 'Rect',\n RoundedRect = 'RoundedRect',\n}\n\ninterface HitArea {\n type: HIT_AREA_TYPE;\n style?: {\n x?: number;\n y?: number;\n radius?: number;\n width?: number;\n height?: number;\n paths?: number[];\n };\n}\n\nexport interface EventParams {\n hitArea: HitArea;\n}\n\ntype TouchEventName = 'touchstart' | 'touchmove' | 'touchend' | 'tap' | 'touchendoutside' | 'touchcancel';\ntype EventParam = {\n stopPropagation: () => void,\n data: {\n pointerId: number,\n position: {\n x: number,\n y: number,\n },\n /**\n * The position related to event target gameobject\n */\n localPosition: {\n x: number,\n y: number\n }\n },\n gameObject: GameObject,\n}\n\nexport default class Event extends Component<EventParams> {\n static componentName = 'Event';\n hitArea: HitArea = undefined;\n init(params?: EventParams) {\n params && Object.assign(this, params);\n }\n\n emit(eventName: TouchEventName, ...args: [EventParam]): boolean\n emit<T extends string>(eventName: Exclude<T, TouchEventName>, ...args: any[]): boolean\n emit(en: string, ...args: any[]) {\n return super.emit(en, ...args);\n }\n\n once(eventName: TouchEventName, fn: (arg: EventParam) => void, context?: any): this\n once<T extends string>(eventName: Exclude<T, TouchEventName>, fn: (...args: any[]) => void, context?: any): this\n once(en: string, fn: (...args: any[]) => void, context?: any) {\n return super.once(en, fn, context);\n }\n\n on(eventName: TouchEventName, fn: (arg: EventParam) => void, context?: any): this\n on<T extends string>(eventName: Exclude<T, TouchEventName>, fn: (...args: any[]) => void, context?: any): this\n on(en: string, fn: (...args: any[]) => void, context?: any) {\n return super.on(en, fn, context);\n }\n\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@combos-fun/plugin-renderer-event",
3
- "version": "0.0.10",
3
+ "version": "0.0.12",
4
4
  "description": "Pointer / touch event input via Pixi v8 interaction",
5
5
  "main": "index.js",
6
6
  "module": "dist/plugin-renderer-event.esm.js",
@@ -37,8 +37,8 @@
37
37
  "author": "sun668 <q947692259@gmail.com>",
38
38
  "dependencies": {
39
39
  "pixi.js": "^8.18.1",
40
- "@combos-fun/plugin-renderer": "0.0.10",
41
- "@combos-fun/engine": "0.0.10"
40
+ "@combos-fun/engine": "0.0.12",
41
+ "@combos-fun/plugin-renderer": "0.0.12"
42
42
  },
43
43
  "scripts": {
44
44
  "build": "node ../../scripts/build-package.mjs"