package com.akjava.gwt.threejsexamples.client;
import com.akjava.gwt.three.client.gwt.materials.MeshLambertMaterialParameter;
import com.akjava.gwt.three.client.java.ui.example.AbstractExample;
import com.akjava.gwt.three.client.js.THREE;
import com.akjava.gwt.three.client.js.cameras.Camera;
import com.akjava.gwt.three.client.js.lights.Light;
import com.akjava.gwt.three.client.js.objects.Mesh;
import com.akjava.gwt.three.client.js.renderers.WebGLRenderer;
import com.akjava.gwt.three.client.js.scenes.Scene;
import com.google.gwt.user.client.ui.FocusPanel;
/**
* simple three.js test
* @author aki
*
*/
public class CubeExample extends AbstractExample {
private WebGLRenderer renderer;
private Scene scene;
private Camera camera;
@Override
public String getName() {
return "CubeDemo";
}
@Override
public void animate(double timestamp) {
renderer.render(scene, camera);
}
@Override
public void init() {
//setup panels
//need focusPanel to get events
FocusPanel focusPanel = new FocusPanel();
getParent().add(focusPanel);
/*
* no need make dummy html panel?
HTMLPanel div=new HTMLPanel("");
div.getElement().appendChild(renderer.getDomElement());
focusPanel.add(div);
*/
int width=getParent().getOffsetWidth();
int height=getParent().getOffsetHeight();
//setup renderer
renderer = THREE.WebGLRenderer();
focusPanel.getElement().appendChild(renderer.getDomElement());
renderer.setSize(width, height);
renderer.setClearColor(0xffffff, 1);
scene = THREE.Scene();
camera = THREE.PerspectiveCamera(35,(double)width/height,.1,10000);
scene.add(camera);
camera.getPosition().setZ(20);
final Mesh mesh=THREE.Mesh(THREE.BoxGeometry(5, 5, 5),
THREE.MeshLambertMaterial(MeshLambertMaterialParameter.create().color(0xff0000)));
scene.add(mesh);
final Light light=THREE.PointLight(0xffffff);
light.setPosition(10, 0, 10);
scene.add(light);
}
@Override
public void onWindowResize() {
// TODO Auto-generated method stub
}
@Override
public String getTokenKey() {
return "cube";
}
}