All Downloads are FREE. Search and download functionalities are using the official Maven repository.

main.io.github.seba244c.icespire.ecs.Entity Maven / Gradle / Ivy

package io.github.seba244c.icespire.ecs;
import java.util.ArrayList;
import java.util.List;

/**
 * An object wich exists in a game world
 * @author Sebsa
 * @since 1.0.1
 */
public class Entity {
    private List components;
    private Transform transform;
    private String name;
    
    public Entity() {
        components = new ArrayList();
        this.transform = new Transform();
    }
    
    public Entity(String name) {      
        components = new ArrayList();
        this.transform = new Transform();
        this.name = name;
    }
    
    public  T getComponent(Class componentClass) {
        for (Component c : components) {
            if (componentClass.isAssignableFrom(c.getClass())) {
                try {
                    return componentClass.cast(c);
                } catch (ClassCastException e) {
                    e.printStackTrace();
                }
            }
        }

        return null;
    }

    public  void removeComponent(Class componentClass) {
        for (Component c : components) {
            if (componentClass.isAssignableFrom(c.getClass())) {
                components.remove(c);
                return;
            }
        }
    }

    public List getAllComponents() {
        return this.components;
    }

    public void addComponent(Component c) {
        components.add(c);
        c.entity = this;
    }
    
    public void update() {
    	for(Component component : components) {
    		component.update();
    	}
    }

	public Transform getTransform() {
		return transform;
	}

	public String getName() {
		if(name==null)
			return getClass().getSimpleName() + '@' + Integer.toHexString(hashCode());
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy