package com.akjava.gwt.three.client.java;
import com.akjava.gwt.lib.client.CanvasUtils;
import com.akjava.gwt.three.client.js.textures.CubeTexture;
import com.google.gwt.canvas.client.Canvas;
import com.google.gwt.dom.client.ImageElement;
public class Skybox {
private ImageElement imageElement;
public Skybox(ImageElement imageElement) {
super();
this.imageElement = imageElement;
cubicSize=imageElement.getWidth()/4;
}
public Canvas getUp(){
return getAt(1,0);
}
public Canvas getDown(){
return getAt(1,2);
}
public Canvas getLeft(){
return getAt(0,1);
}
public Canvas getRight(){
return getAt(2,1);
}
public Canvas getFront(){
return getAt(1,1);
}
public Canvas getBack(){
return getAt(3,1);
}
public void setToCubeTexture(CubeTexture texture){
texture.getImages().set(0, (ImageElement)getRight().getCanvasElement().cast());
texture.getImages().set(1, (ImageElement)getLeft().getCanvasElement().cast());
texture.getImages().set(2, (ImageElement)getUp().getCanvasElement().cast());
texture.getImages().set(3, (ImageElement)getDown().getCanvasElement().cast());
texture.getImages().set(4, (ImageElement)getFront().getCanvasElement().cast());
texture.getImages().set(5, (ImageElement)getBack().getCanvasElement().cast());
texture.setNeedsUpdate(true);
}
private Canvas getAt(int x,int y){
Canvas canvas=CanvasUtils.createCanvas(cubicSize, cubicSize);
canvas.getContext2d().drawImage(imageElement, -cubicSize*x, -cubicSize*y);
return canvas;
}
private int cubicSize;
public static boolean isValidImage(ImageElement element){
if(element.getWidth()==0 || element.getHeight()==0){
return false;
}
return element.getWidth()/4*3==element.getHeight();
}
}