protected override void unwarpColliders(Transform primaryHoverPoint, ISpaceComponent warpedSpaceElement) { // Extension method calculates "unwarped" pose in world space. /*Vector3 unwarpedPosition; * Quaternion unwarpedRotation; * warpedSpaceElement.anchor.transformer.WorldSpaceUnwarp(primaryHoverPoint.position, * primaryHoverPoint.rotation, * out unwarpedPosition, * out unwarpedRotation);*/ // no colliders to operate on so we won't do anything here. }
/// <summary> /// Usually this is the identity, but when dealing with a curved space, you want to /// apply this pose offset to any hover points or primary hover points. /// </summary> //private Pose _unwarpingLocalPose = Pose.identity; protected override void unwarpColliders(Transform primaryHoverPoint, ISpaceComponent warpedSpaceElement) { // TODO: support warped spaces with the interaction test controller //Vector3 unwarpedPos; //Quaternion unwarpedRot; //warpedSpaceElement.anchor.transformer.WorldSpaceUnwarp(primaryHoverPoint.position, // primaryHoverPoint.rotation, // out unwarpedPos, // out unwarpedRot); //_unwarpingLocalPose = this.transform.ToPose().inverse * new Pose(unwarpedPos, // unwarpedRot); }
protected override void unwarpColliders(Transform primaryHoverPoint, ISpaceComponent warpedSpaceElement) { // Extension method calculates "unwarped" pose in world space. Vector3 unwarpedPosition; Quaternion unwarpedRotation; warpedSpaceElement.anchor.transformer.WorldSpaceUnwarp(primaryHoverPoint.position, primaryHoverPoint.rotation, out unwarpedPosition, out unwarpedRotation); // Shift the controller to have its origin on the primary hover point so that // rotations applied to the hand cause it to pivot around that point, then apply // the position and rotation transformation. _pivotingPositionOffset = -primaryHoverPoint.position; _unwarpingPositionOffset = unwarpedPosition; _unwarpingRotationOffset = unwarpedRotation * Quaternion.Inverse(primaryHoverPoint.rotation); refreshContactBoneTargets(useUnwarpingData: true); }
protected override void unwarpColliders(Transform primaryHoverPoint, ISpaceComponent warpedSpaceElement) { // Extension method calculates "unwarped" pose in world space. Vector3 unwarpedPosition; Quaternion unwarpedRotation; warpedSpaceElement.anchor.transformer.WorldSpaceUnwarp(primaryHoverPoint.position, primaryHoverPoint.rotation, out unwarpedPosition, out unwarpedRotation); // First shift the hand to be centered on the fingertip position so that rotations // applied to the hand will pivot around the fingertip, then apply the rest of the // transformation. _unwarpedHandData.Transform(-primaryHoverPoint.position, Quaternion.identity); _unwarpedHandData.Transform(unwarpedPosition, unwarpedRotation * Quaternion.Inverse(primaryHoverPoint.rotation)); // Hand data was modified, so refresh point data. refreshPointDataFromHand(); }