package framework.model3D;
import javax.media.j3d.Appearance;
import javax.media.j3d.Background;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.ImageComponent2D;
import javax.media.j3d.QuadArray;
import javax.media.j3d.Shape3D;
import javax.media.j3d.Texture;
import javax.vecmath.Point3d;
import javax.vecmath.TexCoord2f;
public class BackgroundBox extends Background {
Texture northTex;
Texture westTex;
Texture southTex;
Texture eastTex;
Texture topTex;
Texture bottomTex;
public BackgroundBox(Texture northTex, Texture westTex, Texture southTex, Texture eastTex, Texture topTex, Texture bottomTex) {
this.northTex = northTex;
this.westTex = westTex;
this.southTex = southTex;
this.eastTex = eastTex;
this.topTex = topTex;
this.bottomTex = bottomTex;
Point3d p0 = new Point3d(-1.0,-1.0,-1.0);
Point3d p1 = new Point3d(-1.0,-1.0, 1.0);
Point3d p2 = new Point3d(-1.0, 1.0,-1.0);
Point3d p3 = new Point3d(-1.0, 1.0, 1.0);
Point3d p4 = new Point3d( 1.0, 1.0,-1.0);
Point3d p5 = new Point3d( 1.0, 1.0, 1.0);
Point3d p6 = new Point3d( 1.0,-1.0,-1.0);
Point3d p7 = new Point3d( 1.0,-1.0, 1.0);
QuadArray top = new QuadArray(4, QuadArray.COORDINATES | QuadArray.TEXTURE_COORDINATE_2);
top.setCoordinate(0, p4);
top.setCoordinate(1, p5);
top.setCoordinate(2, p3);
top.setCoordinate(3, p2);
top.setTextureCoordinate(0, 0, new TexCoord2f(1.0f, 0.0f));
top.setTextureCoordinate(0, 1, new TexCoord2f(1.0f, 1.0f));
top.setTextureCoordinate(0, 2, new TexCoord2f(0.0f, 1.0f));
top.setTextureCoordinate(0, 3, new TexCoord2f(0.0f, 0.0f));
QuadArray bottom = new QuadArray(4, QuadArray.COORDINATES | QuadArray.TEXTURE_COORDINATE_2);
bottom.setCoordinate(0, p7);
bottom.setCoordinate(1, p6);
bottom.setCoordinate(2, p0);
bottom.setCoordinate(3, p1);
bottom.setTextureCoordinate(0, 0, new TexCoord2f(1.0f, 0.0f));
bottom.setTextureCoordinate(0, 1, new TexCoord2f(1.0f, 1.0f));
bottom.setTextureCoordinate(0, 2, new TexCoord2f(0.0f, 1.0f));
bottom.setTextureCoordinate(0, 3, new TexCoord2f(0.0f, 0.0f));
QuadArray north = new QuadArray(4, QuadArray.COORDINATES | QuadArray.TEXTURE_COORDINATE_2);
north.setCoordinate(0, p4);
north.setCoordinate(1, p6);
north.setCoordinate(2, p7);
north.setCoordinate(3, p5);
north.setTextureCoordinate(0, 0, new TexCoord2f(1.0f, 0.0f));
north.setTextureCoordinate(0, 1, new TexCoord2f(1.0f, 1.0f));
north.setTextureCoordinate(0, 2, new TexCoord2f(0.0f, 1.0f));
north.setTextureCoordinate(0, 3, new TexCoord2f(0.0f, 0.0f));
QuadArray south = new QuadArray(4, QuadArray.COORDINATES | QuadArray.TEXTURE_COORDINATE_2);
south.setCoordinate(0, p3);
south.setCoordinate(1, p1);
south.setCoordinate(2, p0);
south.setCoordinate(3, p2);
south.setTextureCoordinate(0, 0, new TexCoord2f(1.0f, 0.0f));
south.setTextureCoordinate(0, 1, new TexCoord2f(1.0f, 1.0f));
south.setTextureCoordinate(0, 2, new TexCoord2f(0.0f, 1.0f));
south.setTextureCoordinate(0, 3, new TexCoord2f(0.0f, 0.0f));
QuadArray east = new QuadArray(4, QuadArray.COORDINATES | QuadArray.TEXTURE_COORDINATE_2);
east.setCoordinate(0, p2);
east.setCoordinate(1, p0);
east.setCoordinate(2, p6);
east.setCoordinate(3, p4);
east.setTextureCoordinate(0, 0, new TexCoord2f(1.0f, 0.0f));
east.setTextureCoordinate(0, 1, new TexCoord2f(1.0f, 1.0f));
east.setTextureCoordinate(0, 2, new TexCoord2f(0.0f, 1.0f));
east.setTextureCoordinate(0, 3, new TexCoord2f(0.0f, 0.0f));
QuadArray west = new QuadArray(4, QuadArray.COORDINATES | QuadArray.TEXTURE_COORDINATE_2);
west.setCoordinate(0, p5);
west.setCoordinate(1, p7);
west.setCoordinate(2, p1);
west.setCoordinate(3, p3);
west.setTextureCoordinate(0, 0, new TexCoord2f(1.0f, 0.0f));
west.setTextureCoordinate(0, 1, new TexCoord2f(1.0f, 1.0f));
west.setTextureCoordinate(0, 2, new TexCoord2f(0.0f, 1.0f));
west.setTextureCoordinate(0, 3, new TexCoord2f(0.0f, 0.0f));
Appearance apTop = new Appearance();
apTop.setTexture(topTex);
Shape3D shapeTop = new Shape3D(top, apTop);
Appearance apBottom = new Appearance();
apBottom.setTexture(bottomTex);
Shape3D shapeBottom = new Shape3D(bottom, apBottom);
Appearance apNorth = new Appearance();
apNorth.setTexture(northTex);
Shape3D shapeNorth = new Shape3D(north, apNorth);
Appearance apSouth = new Appearance();
apSouth.setTexture(southTex);
Shape3D shapeSouth = new Shape3D(south, apSouth);
Appearance apWest = new Appearance();
apWest.setTexture(westTex);
Shape3D shapeWest = new Shape3D(west, apWest);
Appearance apEast = new Appearance();
apEast.setTexture(eastTex);
Shape3D shapeEast = new Shape3D(east, apEast);
BranchGroup bg = new BranchGroup();
bg.addChild(shapeTop);
bg.addChild(shapeBottom);
bg.addChild(shapeNorth);
bg.addChild(shapeSouth);
bg.addChild(shapeWest);
bg.addChild(shapeEast);
setGeometry(bg);
}
public ImageComponent2D getNorthImage() {
return (ImageComponent2D)northTex.getImage(0);
}
public ImageComponent2D getSouthImage() {
return (ImageComponent2D)southTex.getImage(0);
}
public ImageComponent2D getEastImage() {
return (ImageComponent2D)eastTex.getImage(0);
}
public ImageComponent2D getWestImage() {
return (ImageComponent2D)westTex.getImage(0);
}
public ImageComponent2D getTopImage() {
return (ImageComponent2D)topTex.getImage(0);
}
public ImageComponent2D getBottomImage() {
return (ImageComponent2D)bottomTex.getImage(0);
}
}