perf: object

This commit is contained in:
cha0s 2024-12-01 21:00:53 -06:00
parent 8d23144206
commit 1abbf9db3f

View File

@ -1,29 +1,29 @@
class Entity {
$$Components = new Map();
$$Components = {};
constructor(id) {
this.id = id;
}
addComponent(Component, values = {}) {
this.$$Components.set(Component.constructor.componentName, Component);
this.$$Components[Component.constructor.componentName] = Component;
this[Component.constructor.componentName] = Component.create(this.id, values);
}
destroy() {
for (const [, Component] of this.$$Components) {
this.removeComponent(Component);
for (const componentName in this.$$Components) {
this.removeComponent(this.$$Components[componentName]);
}
}
has(componentName) {
return this.$$Components.has(componentName);
return componentName in this.$$Components;
}
removeComponent(Component) {
this.$$Components.delete(Component.constructor.componentName);
delete this.$$Components[Component.constructor.componentName];
this[Component.constructor.componentName] = null;
Component.destroy(this.id);
}
toJSON() {
const json = {};
for (const [componentName, Component] of this.$$Components) {
json[componentName] = Component.get(this.id).toJSON();
for (const componentName in this.$$Components) {
json[componentName] = this.$$Components[componentName].get(this.id).toJSON();
}
return json;
}