import { Plugins, Scene, Events } from "phaser"; import { CollidingObject as CO } from "./valid-collision-object"; import { CollideABConfig as ABConfig, Unsubscribe, CollideAConfig as AConfig, RemoveCollideConfigA as RemoveAConfig, RemoveCollideConfigAB as RemoveABConfig } from "./collision-types"; /** * @export */ export default class MatterCollisionPlugin extends Plugins.ScenePlugin { protected scene: Scene; protected pluginManager: Plugins.PluginManager; events: Events.EventEmitter; private collisionStartListeners; private collisionEndListeners; private collisionActiveListeners; constructor(scene: Scene, pluginManager: Plugins.PluginManager, pluginKey: string); /** * Add a listener for collidestart events between objectA and objectB. The collidestart event is * fired by Matter when two bodies start colliding within a tick of the engine. If objectB is * omitted, any collisions with objectA will be passed along to the listener. See * {@link paircollisionstart} for information on callback parameters. */ addOnCollideStart(config: ABConfig): Unsubscribe; addOnCollideStart(config: AConfig): Unsubscribe; /** This method mirrors {@link MatterCollisionPlugin#addOnCollideStart} */ addOnCollideEnd(config: ABConfig): Unsubscribe; addOnCollideEnd(config: AConfig): Unsubscribe; /** This method mirrors {@link MatterCollisionPlugin#addOnCollideStart} */ addOnCollideActive(config: ABConfig): Unsubscribe; addOnCollideActive(config: AConfig): Unsubscribe; /** * Remove any listeners that were added with addOnCollideStart. If objectB, callback or context * parameters are omitted, any listener matching the remaining parameters will be removed. E.g. if * you only specify objectA and objectB, all listeners with objectA & objectB will be removed * regardless of the callback or context. */ removeOnCollideStart(config: RemoveABConfig): void; removeOnCollideStart(config: RemoveAConfig): void; /** This method mirrors {@link MatterCollisionPlugin#removeOnCollideStart} */ removeOnCollideEnd(config: RemoveABConfig): void; removeOnCollideEnd(config: RemoveAConfig): void; /** This method mirrors {@link MatterCollisionPlugin#removeOnCollideStart} */ removeOnCollideActive(config: RemoveABConfig): void; removeOnCollideActive(config: RemoveAConfig): void; /** Remove any listeners that were added with addOnCollideStart. */ removeAllCollideStartListeners(): void; /** Remove any listeners that were added with addOnCollideActive. */ removeAllCollideActiveListeners(): void; /** Remove any listeners that were added with addOnCollideEnd. */ removeAllCollideEndListeners(): void; /** * Remove any listeners that were added with addOnCollideStart, addOnCollideActive or * addOnCollideEnd. */ removeAllCollideListeners(): void; private addOnCollide; private removeOnCollide; private addOnCollideObjectVsObject; private onCollisionStart; private onCollisionEnd; private onCollisionActive; /** * Reusable handler for collisionstart, collisionend, collisionactive. * */ private onCollisionEvent; private checkPairAndEmit; subscribeMatterEvents(): void; unsubscribeMatterEvents(): void; start(): void; shutdown(): void; destroy(): void; }