Scene3D.java
package com.gwief.jTrace;
/*
Scene3D By Damian Newport
Stores Everything needed to draw the model
*/
import java.util.ArrayList;
/**
*
* @author Damian Newport
* @version
*/
public class Scene3D {
public ArrayList shapes;
public ArrayList lights;
public CSGnode CSGstart;
public Camera camera;
public Color3D Ia;
public Color3D background;
/** Creates new Scene3D */
public Scene3D() {
shapes = new ArrayList();
lights = new ArrayList();
Ia = new Color3D(0.2,0.2,0.2); // default brightness;
background = new Color3D(); // default = black
}
public final void setCSGstart(CSGnode startnode){ CSGstart = startnode; }
public final void setcamera(Camera cam){camera = cam; }
public final void setIa(Color3D ia){Ia = ia; }
public final void setIa(double r, double g, double b){Ia = new Color3D(r,g,b); }
public final void setbackground(Color3D bg){background = bg; }
public final void setbackground(double r, double g, double b){ background = new Color3D(r,g,b); }
public final void addshape(Shape3D shape){ shapes.add(shape); }
public final void addlight(Light light){ lights.add(light); }
public final boolean delshape(Shape3D shape){ return shapes.remove(shape); }
public final Shape3D delshape(int index){ return (Shape3D)shapes.remove(index); }
public final boolean dellight(Light light){ return lights.remove(light); }
public final Light dellight(int index){ return (Light)lights.remove(index); }
public final int getNumShapes(){ return shapes.size(); }
public final int getNumLights(){ return lights.size(); }
public final Camera getcamera(){return camera; }
public final CSGnode getCSGstart(){return CSGstart; }
public final Shape3D getshape(int index){
return (Shape3D)shapes.get(index);
}
public final Light getlight(int index){
return (Light)lights.get(index);
}
public final void build(){
CSGstart.build(new Transform3D());
}
public final Intersection[] trace(Ray ray){
return CSGstart.getBranch(ray);
}
}