package com.javamarcher.systems;
import java.util.HashMap;
import java.util.Map;
import at.fhooe.mtd.ecs.EngineSystem;
public class CameraSystem extends EngineSystem {
private final Map<String, Camera> cameras = new HashMap<>();
public CameraSystem() {
}
public CameraSystem(boolean addDefaultCamera) {
if(addDefaultCamera) {
getDefaultCamera();
}
}
@Override
public void update(double dt) {
for(Camera c : cameras.values()) {
c.update(dt);
}
}
public Camera createCamera(String cameraName) {
final Camera c = new Camera();
cameras.put(cameraName, c);
return c;
}
public Camera getOrCreateCamera(String cameraName) {
Camera c = cameras.get(cameraName);
if(c == null) {
c = createCamera(cameraName);
}
return c;
}
/**
* Returns the default camera with the {@link CameraType} main camera.
* If the camera is not found, it will be created.
*/
public Camera getDefaultCamera() {
return getOrCreateCamera(CameraType.MAIN_CAMERA.toString());
}
public Camera getCamera(String cameraName) {
if(hasCamera(cameraName)) {
return cameras.get(cameraName);
}
return null;
}
public boolean hasCamera(String cameraName) {
final Camera c = cameras.get(cameraName);
if(c == null) {
return false;
}
return true;
}
public void removeCamera(String cameraName) {
cameras.remove(cameraName);
}
public void removeAll() {
cameras.clear();
}
}