arrow == _yArrow ? Vector3.UNIT_Y : //
Vector3.UNIT_Z);
// rotate to arrow plane
_handle.getRotation().applyPost(_calcVec3C, _calcVec3C);
final Line3 arrowLine = new Line3(_calcVec3A, _calcVec3C.normalize(_calcVec3D));
// make plane object
final Plane pickPlane = new Plane().setPlanePoints(_calcVec3A, _calcVec3B, _calcVec3C.addLocal(_calcVec3A));
// find out where we were hitting the plane before
getPickRay(oldMouse, camera);
if (!_calcRay.intersectsPlane(pickPlane, _calcVec3A)) {
return _calcVec3A.zero();
}
// find out where we are hitting the plane now
getPickRay(new Vector2(current.getX(), current.getY()), camera);
if (!_calcRay.intersectsPlane(pickPlane, _calcVec3B)) {
return _calcVec3A.zero();
}
// Cast us to the line along our arrow
arrowLine.distanceSquared(_calcVec3A, _calcVec3C);
arrowLine.distanceSquared(_calcVec3B, _calcVec3D);
// convert to target coord space
final Node parent = manager.getSpatialTarget().getParent();
if (parent != null) {
parent.getWorldTransform().applyInverse(_calcVec3C);