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

com.harium.etyl.core.context.Scene Maven / Gradle / Ivy

There is a newer version: 1.0.18
Show newest version
package com.harium.etyl.core.context;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.harium.etyl.commons.Drawable;
import com.harium.etyl.commons.Updatable;
import com.harium.etyl.core.animation.Animation;
import com.harium.etyl.core.animation.script.AnimationScript;
import com.harium.etyl.commons.particle.Emitter;
import com.harium.etyl.commons.event.KeyEvent;
import com.harium.etyl.commons.event.PointerEvent;
import com.harium.etyl.core.graphics.Graphics;
import com.harium.etyl.commons.ui.UIComponent;
import com.harium.etyl.commons.layer.Layer;

public class Scene implements UIComponent {
	
	protected List updatables = new ArrayList();
	protected List drawables = new ArrayList();
	
	protected Map> graph = new LinkedHashMap>();
	
	public Scene() {
		super();
	}
	
	public void addAnimation(AnimationScript animation) {
		Animation.getInstance().add(animation);
	}
	
	public void addEmitter(Emitter emitter) {
		updatables.add(emitter);
		drawables.add(emitter);
	}
	
	public void add(Layer layer) {
		graph.put(layer, new ArrayList());
	}
	
	public void addChild(Layer layer, Layer child) {
				
		if(!graph.containsKey(layer)) {
			add(layer);
		}
		
		List children = graph.get(layer);
		children.add(child);
	}
	
	public Map> getGraph() {
		return graph;
	}

	@Override
	public void update(long now) {
		for(Updatable updatable: updatables) {
			updatable.update(now);
		}
	}
	
	/**
	 * Draw Scene method with recurrency
	 */
	public void draw(Graphics g) {
		
		for(Layer layer: graph.keySet()) {
			drawLayer(g, layer);
		}

		for(Drawable drawable: drawables) {
			drawable.draw(g);
		}
	}

	private void drawLayer(Graphics g, Layer layer) {
		
		layer.draw(g);
		
		List children = graph.get(layer);
		
		for(Layer child: children) {
			drawLayer(g, child);
		}
	}

	@Override
	public void updateMouse(PointerEvent event) {
		// TODO Auto-generated method stub

	}

	@Override
	public void updateKeyboard(KeyEvent event) {
		// TODO Auto-generated method stub

	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy