@rpgjs/physic
Version:
A deterministic 2D top-down physics library for RPG, sandbox and MMO games
146 lines (145 loc) • 3.65 kB
JavaScript
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