get All of a type from scene

pull/1/head
Valerie 2022-05-20 21:57:23 -04:00
parent ae4c5bc8d2
commit bcf1a6c265
2 changed files with 18 additions and 0 deletions

View File

@ -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 <T> List<T> getAll(Class<T> clazz) {
return this.scene.getAll(clazz);
}
protected final void add(GameObject obj) {
scene.add(obj);
}

View File

@ -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 <T> List<T> getAll(Class<T> clazz) {
List<T> stuff = new ArrayList<T>();
for(GameObject obj : objects) {
if(clazz.isInstance(obj)) {
stuff.add(clazz.cast(obj));
}
}
return stuff;
}
@Override
public void render() {
for(GameObject obj : objects) {