Esempio n. 1
0
        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);
        }
Esempio n. 4
0
        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();
        }