package min3d.objectPrimitives;
import android.graphics.Bitmap;
import min3d.Shared;
import min3d.Utils;
import min3d.core.Object3dContainer;
import min3d.vos.Color4;
public class SkyBox extends Object3dContainer {
private float size;
private float halfSize;
private int quality;
private Color4 color;
private Rectangle[] faces;
public enum Face {
North,
East,
South,
West,
Up,
Down,
All
}
public SkyBox(float size, int quality) {
super(0, 0);
this.size = size;
this.halfSize = size *.5f;
this.quality = quality;
build();
}
private void build() {
color = new Color4();
faces = new Rectangle[6];
Rectangle north = new Rectangle(size, size, quality, quality, color);
Rectangle east = new Rectangle(size, size, quality, quality, color);
Rectangle south = new Rectangle(size, size, quality, quality, color);
Rectangle west = new Rectangle(size, size, quality, quality, color);
Rectangle up = new Rectangle(size, size, quality, quality, color);
Rectangle down = new Rectangle(size, size, quality, quality, color);
north.position().z = halfSize;
north.lightingEnabled(false);
east.rotation().y = -90;
east.position().x = -halfSize;
east.lightingEnabled(false);
south.rotation().y = 180;
south.position().z = -halfSize;
south.lightingEnabled(false);
west.rotation().y = 90;
west.position().x = halfSize;
west.lightingEnabled(false);
up.rotation().x = -90;
up.position().y = halfSize;
up.lightingEnabled(false);
down.rotation().x = 90;
down.position().y = -halfSize;
down.lightingEnabled(false);
faces[Face.North.ordinal()] = north;
faces[Face.East.ordinal()] = east;
faces[Face.South.ordinal()] = south;
faces[Face.West.ordinal()] = west;
faces[Face.Up.ordinal()] = up;
faces[Face.Down.ordinal()] = down;
addChild(north);
addChild(east);
addChild(south);
addChild(west);
addChild(up);
addChild(down);
}
public void addTexture(Face face, int resourceId, String id) {
Bitmap bitmap = Utils.makeBitmapFromResourceId(resourceId);
Shared.textureManager().addTextureId(bitmap, id, false);
bitmap.recycle();
addTexture(face, bitmap, id);
}
public void addTexture(Face face, Bitmap bitmap, String id) {
if(face == Face.All)
{
for(int i=0; i<6; i++)
{
faces[i].textures().addById(id);
}
}
else
{
faces[face.ordinal()].textures().addById(id);
}
}
}