@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
90 lines (89 loc) • 2.91 kB
JavaScript
;
export class AudioPlayerCallbacksManagerClass {
constructor() {
this._callbacksByPlayer = /* @__PURE__ */ new Map();
}
static instance() {
return this._instance = this._instance || new AudioPlayerCallbacksManagerClass();
}
registerPlayer(player) {
if (this._callbacksByPlayer.get(player)) {
return;
}
this._callbacksByPlayer.set(player, {});
}
deregisterPlayer(player) {
this._callbacksByPlayer.delete(player);
}
// onBeforePlay
onBeforePlay(player, callback) {
this._on(player, "onBeforePlay", callback);
}
removeOnBeforePlay(player, callback) {
this._removeCallback(player, "onBeforePlay", callback);
}
runOnBeforePlayCallbacks(player, offset) {
var _a, _b;
(_b = (_a = this._callbacksByPlayer.get(player)) == null ? void 0 : _a.onBeforePlay) == null ? void 0 : _b.forEach((callback) => callback(offset));
}
// onPlaySuccess
onPlaySuccess(player, callback) {
this._on(player, "onPlaySuccess", callback);
}
removeOnPlaySuccess(player, callback) {
this._removeCallback(player, "onPlaySuccess", callback);
}
runOnPlaySuccessCallbacks(player) {
var _a, _b;
(_b = (_a = this._callbacksByPlayer.get(player)) == null ? void 0 : _a.onPlaySuccess) == null ? void 0 : _b.forEach((callback) => callback());
}
// onPlayError
onPlayError(player, callback) {
this._on(player, "onPlayError", callback);
}
removeOnPlayError(player, callback) {
this._removeCallback(player, "onPlayError", callback);
}
runOnPlayErrorCallbacks(player, err) {
var _a, _b;
(_b = (_a = this._callbacksByPlayer.get(player)) == null ? void 0 : _a.onPlayError) == null ? void 0 : _b.forEach((callback) => callback(err));
}
// onStop
onStop(player, callback) {
this._on(player, "onStop", callback);
}
removeOnStop(player, callback) {
this._removeCallback(player, "onStop", callback);
}
runOnStopCallbacks(player) {
var _a, _b;
(_b = (_a = this._callbacksByPlayer.get(player)) == null ? void 0 : _a.onStop) == null ? void 0 : _b.forEach((callback) => callback());
}
// generic
_on(player, eventName, callback) {
var _a;
let map = this._callbacksByPlayer.get(player);
if (!map) {
this.registerPlayer(player);
map = this._callbacksByPlayer.get(player);
}
if (!map) {
return;
}
map[eventName] = map[eventName] || /* @__PURE__ */ new Set();
(_a = map[eventName]) == null ? void 0 : _a.add(callback);
}
_removeCallback(player, eventName, callback) {
var _a;
let map = this._callbacksByPlayer.get(player);
if (!map) {
this.registerPlayer(player);
map = this._callbacksByPlayer.get(player);
}
if (!map) {
return;
}
(_a = map[eventName]) == null ? void 0 : _a.delete(callback);
}
}
export const AudioPlayerCallbacksManager = AudioPlayerCallbacksManagerClass.instance();