anim.addChild(arrow);
anim.addChild(outline);
String label = null;
TransformGroup tg = new TransformGroup();
tg.addChild(anim);
Transform3D trans = new Transform3D();
double centerOffset = 0.0;
switch (step.getType()) {
case MovePath.STEP_CLIMB_MODE_OFF:
if (step.getParent().getEntity().getMovementMode() == IEntityMovementMode.WIGE) {
label = Messages.getString("BoardView1.WIGEClimbOff"); //$NON-NLS-1$
} else {
label = Messages.getString("BoardView1.ClimbOff"); //$NON-NLS-1$
}
if (step.isPastDanger()) {
label = "(" + label + ")"; //$NON-NLS-1$ //$NON-NLS-2$
}
anim.removeChild(arrow);
case MovePath.STEP_GO_PRONE:
case MovePath.STEP_HULL_DOWN:
case MovePath.STEP_DOWN:
case MovePath.STEP_DIG_IN:
case MovePath.STEP_FORTIFY:
trans.rotX(-Math.PI/2);
break;
case MovePath.STEP_CLIMB_MODE_ON:
if (step.getParent().getEntity().getMovementMode() == IEntityMovementMode.WIGE) {
label = Messages.getString("BoardView1.WIGEClimb"); //$NON-NLS-1$
} else {
label = Messages.getString("BoardView1.Climb"); //$NON-NLS-1$
}
if (step.isPastDanger()) {
label = "(" + label + ")"; //$NON-NLS-1$ //$NON-NLS-2$
}
anim.removeChild(arrow);
case MovePath.STEP_GET_UP:
case MovePath.STEP_UP:
trans.rotX(Math.PI/2);
break;
case MovePath.STEP_LOAD:
tg.removeChild(anim);
label = Messages.getString("BoardView1.Load"); //$NON-NLS-1$
if (step.isPastDanger()) {
label = "(" + label + ")"; //$NON-NLS-1$ //$NON-NLS-2$
}
break;
case MovePath.STEP_UNLOAD:
tg.removeChild(anim);
label = Messages.getString("BoardView1.Unload"); //$NON-NLS-1$
if (step.isPastDanger()) {
label = "(" + label + ")"; //$NON-NLS-1$ //$NON-NLS-2$
}
break;
case MovePath.STEP_TURN_LEFT:
case MovePath.STEP_TURN_RIGHT:
anim.removeChild(arrow);
centerOffset = BoardModel.HEX_DIAMETER/6;
trans.rotZ(-Math.PI/3*step.getFacing());
break;
default:
centerOffset = -BoardModel.HEX_DIAMETER/3;
trans.rotZ(-Math.PI/3*step.getFacing());
}
Vector3d translate = new Vector3d(0.0, centerOffset, -BoardModel.HEX_HEIGHT-count*.1);
trans.transform(translate);
trans.setTranslation(translate);
if (label == null) {
StringBuffer costStringBuf = new StringBuffer();
costStringBuf.append(step.getMpUsed());
if (step.isOnlyPavement() && step.getParent().getEntity() instanceof Tank) costStringBuf.append("+"); //$NON-NLS-1$
if (step.isDanger()) costStringBuf.append("*"); //$NON-NLS-1$
if (step.isPastDanger()) {
costStringBuf.insert(0, "("); //$NON-NLS-1$
costStringBuf.append(")"); //$NON-NLS-1$
}
if (step.isUsingMASC()) {
costStringBuf.append("["); //$NON-NLS-1$
costStringBuf.append(step.getTargetNumberMASC());
costStringBuf.append("+]"); //$NON-NLS-1$
}
if (step.getMovementType() == IEntityMovementType.MOVE_VTOL_WALK
|| step.getMovementType() == IEntityMovementType.MOVE_VTOL_RUN
|| step.getMovementType() == IEntityMovementType.MOVE_SUBMARINE_WALK
|| step.getMovementType() == IEntityMovementType.MOVE_SUBMARINE_RUN
|| step.getElevation() != 0) {
costStringBuf.append("{").append(step.getElevation()).append("}");
}
label = costStringBuf.toString();
}
tg.setTransform(trans);
Vector3d loc = new Vector3d(BoardModel.getHexLocation(step.getPosition(), step.getElevation()+hex.getElevation()+1));
loc.z += BoardModel.HEX_HEIGHT + count*.1;
TransformGroup l = new TransformGroup(new Transform3D(C.nullRot, loc, 1.0));
l.addChild(currentView.makeViewRelative(new LabelModel(label, C.black, color, LabelModel.BIGBOLD), count*.1));
l.addChild(tg);
addChild(l);
}