package framework.model3D; import java.util.ArrayList; import framework.gameMain.Actor; import framework.gameMain.Movable; import framework.physics.Ground; import java3d.BranchGroup; import java3d.Group; import java3d.Leaf; import java3d.Light; import java3d.Node; import java3d.Primitive; import java3d.Shape3D; import java3d.Transform3D; import java3d.TransformGroup; public class Universe { private BranchGroup root = null; private ArrayList<Light> lights = new ArrayList<Light>(); private BackgroundBox skyBox = null; private Ground ground = null; private ArrayList<Movable> movableList = new ArrayList<Movable>(); public Universe() { root = new BranchGroup(); } public void update(long interval){ for(int i = 0; i < movableList.size(); i++){ Movable movable = movableList.get(i); movable.motion(interval,ground); } } /** * オブジェクトを配置する * * @param obj * 配置するオブジェクト */ public void place(Placeable obj) { if(obj instanceof Ground){ ground = (Ground)obj; } if(obj instanceof Movable){ movableList.add((Movable)obj); } place(obj.getTransformGroupToPlace()); } private void place(Node node) { root.addChild(node); } /** * 後で取り除けるようにオブジェクトを配置する * * @param obj * 配置するオブジェクト */ public void placeDisplacable(Placeable obj) { placeDisplacable(obj.getTransformGroupToPlace()); } private void placeDisplacable(Node node) { root.addChild(node); } /** * 光源の追加 * * @param light * 追加する光源 */ public void placeLight(Light light) { getLights().add(light); } /** * スカイボックスの追加 * @param skyBox 追加するスカイボックス */ public void placeSkyBox(BackgroundBox skyBox) { root.addChild(skyBox); this.skyBox = skyBox; } /** * オブジェクトを可能ならば取り除く * * @param obj * 取り除くオブジェクト */ public void displace(Placeable obj) { displace(obj.getTransformGroupToPlace()); } private void displace(Node node) { root.removeChild(node); } public ArrayList<Light> getLights() { return lights; } }