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;
}
}