ecs/Entity.js

export default class Entity {
    constructor() {
        this.components = new Map();
    }

    /**
     * 
     * @param {Component} component 
     */
    addComponent(component) {
        if (!component.name) throw new Error("Cannot add component with empty name '" + component.name + "'");
        if (this.components.has(component.name)) throw new Error("Entity already has component '" + component.name + "'");

        this.components.set(component.name, component);

        if (this.ecs) {
            this.ecs.addedComponentToEntity(this, component);
        }
    }

    hasComponent(component_name) {
        return this.components.has(component_name);
    }

    getComponent(component_name) {
        return this.components.get(component_name);
    }

    removeComponent(component_name) {
        return this.components.get(component_name);
    }
}