![JAR search and dependency download from the Maven repository](/logo.png)
com.harium.etyl.core.context.Scene Maven / Gradle / Ivy
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