UNPKG

@rpgjs/physic

Version:

A deterministic 2D top-down physics library for RPG, sandbox and MMO games

146 lines (145 loc) 3.65 kB
class EventSystem { constructor() { this.collisionEnterHandlers = /* @__PURE__ */ new Set(); this.collisionExitHandlers = /* @__PURE__ */ new Set(); this.entityAddedHandlers = /* @__PURE__ */ new Set(); this.entityRemovedHandlers = /* @__PURE__ */ new Set(); this.entitySleepHandlers = /* @__PURE__ */ new Set(); this.entityWakeHandlers = /* @__PURE__ */ new Set(); } /** * Registers a collision enter handler * * @param handler - Handler function * @returns Unsubscribe function */ onCollisionEnter(handler) { this.collisionEnterHandlers.add(handler); return () => this.collisionEnterHandlers.delete(handler); } /** * Registers a collision exit handler * * @param handler - Handler function * @returns Unsubscribe function */ onCollisionExit(handler) { this.collisionExitHandlers.add(handler); return () => this.collisionExitHandlers.delete(handler); } /** * Registers an entity added handler * * @param handler - Handler function * @returns Unsubscribe function */ onEntityAdded(handler) { this.entityAddedHandlers.add(handler); return () => this.entityAddedHandlers.delete(handler); } /** * Registers an entity removed handler * * @param handler - Handler function * @returns Unsubscribe function */ onEntityRemoved(handler) { this.entityRemovedHandlers.add(handler); return () => this.entityRemovedHandlers.delete(handler); } /** * Registers an entity sleep handler * * @param handler - Handler function * @returns Unsubscribe function */ onEntitySleep(handler) { this.entitySleepHandlers.add(handler); return () => this.entitySleepHandlers.delete(handler); } /** * Registers an entity wake handler * * @param handler - Handler function * @returns Unsubscribe function */ onEntityWake(handler) { this.entityWakeHandlers.add(handler); return () => this.entityWakeHandlers.delete(handler); } /** * Emits a collision enter event * * @param collision - Collision information */ emitCollisionEnter(collision) { for (const handler of this.collisionEnterHandlers) { handler(collision); } } /** * Emits a collision exit event * * @param collision - Collision information */ emitCollisionExit(collision) { for (const handler of this.collisionExitHandlers) { handler(collision); } } /** * Emits an entity added event * * @param entity - Entity that was added */ emitEntityAdded(entity) { for (const handler of this.entityAddedHandlers) { handler(entity); } } /** * Emits an entity removed event * * @param entity - Entity that was removed */ emitEntityRemoved(entity) { for (const handler of this.entityRemovedHandlers) { handler(entity); } } /** * Emits an entity sleep event * * @param entity - Entity that went to sleep */ emitEntitySleep(entity) { for (const handler of this.entitySleepHandlers) { handler(entity); } } /** * Emits an entity wake event * * @param entity - Entity that woke up */ emitEntityWake(entity) { for (const handler of this.entityWakeHandlers) { handler(entity); } } /** * Clears all event handlers */ clear() { this.collisionEnterHandlers.clear(); this.collisionExitHandlers.clear(); this.entityAddedHandlers.clear(); this.entityRemovedHandlers.clear(); this.entitySleepHandlers.clear(); this.entityWakeHandlers.clear(); } } export { EventSystem }; //# sourceMappingURL=index24.js.map