package automenta.spacenet.run.old;
import automenta.spacenet.plugin.comm.BlankEdge;
import automenta.spacenet.space.Repeat;
import automenta.spacenet.space.control.Touchable;
import automenta.spacenet.space.control.Zoomable;
import automenta.spacenet.space.geom.Box;
import automenta.spacenet.space.geom.Line3D;
import automenta.spacenet.space.geom.Rect;
import automenta.spacenet.space.geom.Rect.RectShape;
import com.ardor3d.intersection.PickData;
import com.ardor3d.scenegraph.Spatial;
public class DefaultEdgeLine extends Line3D implements Touchable, /*Pressable,*/ Zoomable {
protected boolean showingLabel = false;
//private final Text3D label;
private Rect rect;
double sc = 8.0;
private double updatePeriod = 0.02;
double relativeScaleToEndBoxes = 0.1;
private DefaultObjectBox box;
private final Object obj;
public DefaultEdgeLine(Object obj, final Box pa, final Box pb) {
super(pa.getPosition(), pb.getPosition(), 3, 0.02);
this.obj = obj;
if (!(obj instanceof BlankEdge)) {
rect = add(new Rect(RectShape.Rect));
rect.scale(0.5);
rect.color(DefaultObjectBox.getColor(obj));
add(new Repeat(updatePeriod) {
@Override protected void update(double t, double dt, Spatial s) {
//double r = getRadius().d();
//double sizeThresh = 0.1;
// if ((pa.getSize().getMaxComponent() < sizeThresh) || (pb.getSize().getMaxComponent() < sizeThresh)) {
// visible(false);
// }
// else {
// visible(true);
// }
double r = 0.5 * Math.min(pa.getSize().getMaxComponent(), pb.getSize().getMaxComponent()) * relativeScaleToEndBoxes;
rect.scale(r * sc, r * sc);
if (box != null) {
box.scale(r * sc, r * sc, r * sc);
}
getRadius().set(r / 10.0);
}
});
}
showLabel(true);
// label = new Text3D(DefaultObjectBox.font3d, obj.toString());
// label.scale(0.5);
// label.moveDZ(0.05);
// label.color(Color.White);
}
// @Override
// public void onPressStart(PickData pick) {
// toggleLabel();
// }
//
// @Override
// public void onPressStop(PickData pick) {
// }
@Override
public boolean isTangible() {
return true;
}
@Override
public void onZoomStart() {
}
@Override
public void onZoomStop() {
}
@Override
public boolean isZoomable() {
return true;
}
protected synchronized void showLabel(boolean b) {
if (rect == null) {
return;
}
if (!b) {
if (box != null) {
remove(box);
}
} else {
if (box == null) {
box = new DefaultObjectBox(obj);
box.scale(0.75);
box.moveDZ(0.1);
add(box);
}
}
}
@Override
public void onTouchStart(PickData pick) {
}
@Override
public void onTouching(PickData pick) {
}
@Override
public void onTouchStop() {
}
}