diff --git a/src/main/java/xyz/valnet/engine/scenegraph/GameObject.java b/src/main/java/xyz/valnet/engine/scenegraph/GameObject.java index d324939..465fdcd 100644 --- a/src/main/java/xyz/valnet/engine/scenegraph/GameObject.java +++ b/src/main/java/xyz/valnet/engine/scenegraph/GameObject.java @@ -1,5 +1,7 @@ package xyz.valnet.engine.scenegraph; +import java.util.List; + import xyz.valnet.hadean.scenes.GameScene; public class GameObject implements IRenderable, ITickable { @@ -13,6 +15,10 @@ public class GameObject implements IRenderable, ITickable { return this.scene.get(clazz); } + protected List getAll(Class clazz) { + return this.scene.getAll(clazz); + } + protected final void add(GameObject obj) { scene.add(obj); } diff --git a/src/main/java/xyz/valnet/hadean/scenes/GameScene.java b/src/main/java/xyz/valnet/hadean/scenes/GameScene.java index f271908..75c0e68 100644 --- a/src/main/java/xyz/valnet/hadean/scenes/GameScene.java +++ b/src/main/java/xyz/valnet/hadean/scenes/GameScene.java @@ -7,6 +7,8 @@ import xyz.valnet.engine.scenegraph.GameObject; import xyz.valnet.engine.scenegraph.IScene; import xyz.valnet.hadean.gameobjects.Camera; import xyz.valnet.hadean.gameobjects.Pawn; +import xyz.valnet.hadean.gameobjects.Selection; +import xyz.valnet.hadean.gameobjects.SelectionUI; import xyz.valnet.hadean.gameobjects.Terrain; public class GameScene implements IScene { @@ -27,6 +29,16 @@ public class GameScene implements IScene { return null; } + public List getAll(Class clazz) { + List stuff = new ArrayList(); + for(GameObject obj : objects) { + if(clazz.isInstance(obj)) { + stuff.add(clazz.cast(obj)); + } + } + return stuff; + } + @Override public void render() { for(GameObject obj : objects) {