private void LeftGrab(Selector.ButtonType button, bool grabState) { if (button != Selector.ButtonType.Grip) { return; } initialDistance = Vector3.Distance(selectorLeft.transform.localPosition, selectorRight.transform.localPosition); leftGrabbing = grabState; if (leftGrabbing || rightGrabbing) { if (!rightGrabbing) { worldSrt.Clear(); } Srt cameraRig = new Srt(transform); SetLocalCursor(); childSrt = cameraRig.Inverse() * worldSrt; childSrt = cursorSrt.Inverse() * childSrt; } }
void GrabLeft() { leftGrabbing = true; world_GrabLoc_left = controller_left.transform.position; if (rightGrabbing) { controller.Set((world_GrabLoc_left + world_GrabLoc_right) * 0.5f, Quaternion.identity, Vector3.one); world_grab_vec = world_GrabLoc_left - world_GrabLoc_right; if (dolly_mode) { world_grab_vec.y = 0f; } world_grab_vec_len = world_grab_vec.magnitude; } else { controller.Set(world_GrabLoc_left, controller_left.transform.rotation, Vector3.one); if (dolly_mode) { controller.localRotation = Quaternion.FromToRotation(controller.localRotation * Vector3.up, Vector3.up) * controller.localRotation; } } // Set world origin as child of controller child.Clear(); TransformXtra.SiblingToChild(child, controller); }