package automenta.spacenet.space.widget.window; import automenta.spacenet.space.control.Draggable; import automenta.spacenet.space.geom.Rect; import automenta.spacenet.space.surface.ColorSurface; import com.ardor3d.math.Plane; import com.ardor3d.math.Ray3; import com.ardor3d.math.Vector3; @Deprecated class WindowRect extends Rect implements Draggable { private final ColorSurface cs; Vector3 a = new Vector3(); Vector3 b = new Vector3(); Vector3 c = new Vector3(); Plane p = new Plane(); Vector3 i = new Vector3(); Vector3 d = new Vector3(); public WindowRect() { super(RectShape.Rect); cs = add(new ColorSurface()); } @Override public boolean isTangible() { return true; } @Override public void onDragStart(Ray3 rayDrag) { updateIntersect(rayDrag); d.set(i); i.subtractLocal(getWorldTranslation()); System.out.println("drag start d=" + d); cs.color(0, 1, 0); } protected void updateIntersect(Ray3 r) { double x = getWorldTranslation().getX(); double y = getWorldTranslation().getY(); double z = getWorldTranslation().getZ(); a.set(x, y, z); b.set(x + 1, y, z); c.set(x, y + 1, z); p.setPlanePoints(a, b, c); r.intersects(p, i); } @Override public void onDragging(final Ray3 rayDrag) { cs.color(0, 1, 0); updateIntersect(rayDrag); //TODO use World -> Local //Vector3 o = getWorldTransform().applyInverseVector(i); getPosition().set(i); } @Override public void onDragStop(Ray3 rayDragStop) { cs.color(0.5, 0.5, 0.5); } }