/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package automenta.spacenet.run.control;
import automenta.spacenet.run.ArdorSpacetime;
import automenta.spacenet.space.control.Touchable;
import automenta.spacenet.space.control.Pressable;
import automenta.spacenet.space.geom.Box;
import automenta.spacenet.space.geom.Rect;
import automenta.spacenet.space.surface.ColorSurface;
import automenta.spacenet.space.geom.ProcessBox;
import com.ardor3d.intersection.PickData;
import com.ardor3d.math.Vector3;
public class DemoTouchClick extends ProcessBox {
public class PickableRect extends Rect implements Touchable {
private final ColorSurface cs;
public PickableRect() {
super(RectShape.Rect);
cs = add(new ColorSurface());
}
@Override
public void onTouchStart(PickData pick) {
}
@Override
public void onTouching(PickData pick) {
int numInt = pick.getIntersectionRecord().getNumberOfIntersections();
if (numInt != 1) {
System.out.println("odd, # of intersections = " + numInt);
return;
}
Vector3 p = pick.getIntersectionRecord().getIntersectionPoint(0);
cs.color(Math.cos(p.getX()), Math.sin(p.getY()), Math.cos(p.getZ()));
}
@Override
public void onTouchStop() {
}
@Override public boolean isTangible() { return true; }
}
public class PickableBox extends Box implements Touchable {
private final ColorSurface color;
public PickableBox() {
super(BoxShape.Cubic);
color = add(new ColorSurface(1,1,1));
onTouchStop();
}
@Override
public void onTouchStart(PickData pick) {
color.color(1, 0, 0);
}
@Override
public void onTouchStop() {
color.color(0, 0, 1);
}
@Override
public void onTouching(PickData pick) {
}
@Override public boolean isTangible() { return true; }
}
public class PressableBox extends Box implements Pressable {
private final ColorSurface color;
public PressableBox() {
super(BoxShape.Cubic);
color = add(new ColorSurface(1,1,1));
onPressStop(null);
}
@Override public boolean isTangible() { return true; }
@Override
public void onPressStart(PickData pick) {
color.color(0,1,0);
}
@Override
public void onPressStop(PickData pick) {
color.color(0,0,1);
}
}
@Override
protected void start() {
add(new PickableBox().move(-1, 1, 0));
add(new PickableRect().move(1, 1, 0));
add(new PressableBox().move(-1, -1, 0));
}
public static void main(String[] args) {
ArdorSpacetime.newWindow(new DemoTouchClick());
}
}