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