the-world-engine
Version:
three.js based, unity like game engine for browser
53 lines (51 loc) • 1.34 kB
JavaScript
import { MutIteratableCollection } from "./collection/MutIteratableCollection";
import { ComponentEvent } from "./hierarchy_object/ComponentEvent";
export class SceneProcessor {
H;
J;
U;
V;
X;
constructor() {
this.H = new MutIteratableCollection(ComponentEvent.comparator);
this.J = new MutIteratableCollection(ComponentEvent.comparator);
this.U = false;
this.V = [];
this.X = [];
}
addEventToNonSyncedCollection(e) {
this.H.insert(e);
}
removeEventFromNonSyncedCollection(e) {
this.H.delete(e);
}
addEventToSyncedCollection(e) {
this.J.insert(e);
}
startProcessNonSyncedEvent() {
this.H.forEach((e => e.invoke()));
}
tryStartProcessSyncedEvent() {
if (this.U) return;
this.U = true;
this.J.forEach((e => e.invoke()));
this.J.clear();
this.U = false;
}
addRemoveGameObject(e) {
this.V.push(e);
}
addRemoveComponent(e) {
this.X.push(e);
}
processRemoveObject() {
const e = this.X;
for (let t = 0; t < e.length; ++t) {
e[t].gameObject.removeComponent(e[t]);
}
const t = this.V;
for (let e = 0; e < t.length; ++e) {
t[e].removeFromParent();
}
}
}