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

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

package io.github.seba244c.icespire.ecs;

import io.github.seba244c.icespire.graphics.lighting.DirectionalLight;
import io.github.seba244c.icespire.graphics.lighting.PointLight;
import io.github.seba244c.icespire.graphics.lighting.SpotLight;

/**
 * A scene is a container for lists of things like lights and Entities, and is used to render
 * @author Sebsa
 * @since 1.0.1
 */
public class Scene {
	private Entity[] entities;
	private DirectionalLight directionalLight;
	private SpotLight[] spotLights;
	private PointLight[] pointLights;
	
	public Scene() {
	}
	
	public Scene(Entity[] e) {
		entities = e;
	}
	
	public Scene(Entity[] e, DirectionalLight dLight, SpotLight[] sLights, PointLight[] pLights) {
		entities = e;
		directionalLight = dLight;
		spotLights = sLights;
		pointLights = pLights;
	}

	public Entity[] getEntities() {
		return entities;
	}

	public DirectionalLight getDirectionalLight() {
		return directionalLight;
	}

	public SpotLight[] getSpotLights() {
		return spotLights;
	}

	public PointLight[] getPointLights() {
		return pointLights;
	}

	public void setDirectionalLight(DirectionalLight directionalLight) {
		this.directionalLight = directionalLight;
	}
	
	public void clearEntities() {
		entities = null;
	}
	
	public void destroy() {
		for (Entity entity : entities) {
			for(Component component : entity.getAllComponents()) {
				component.cleanup();
			}
		}
		entities = null;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy