Exemple #1
0
        private static bool CanMove(VRTK_BodyPhysics givenBodyPhysics, Vector3 currentPosition, Vector3 proposedPosition)
        {
            if (givenBodyPhysics == null)
            {
                return(true);
            }

            var proposedDirection = (proposedPosition - currentPosition).normalized;
            var distance          = Vector3.Distance(currentPosition, proposedPosition);

            return(!givenBodyPhysics.SweepCollision(currentPosition, proposedDirection, distance));
        }
Exemple #2
0
        private void Enable()
        {
            trackedObjects.Clear();
            movementList.Clear();
            previousYPositions.Clear();
            initialGaze       = Vector3.zero;
            currentDirection  = Vector3.zero;
            previousDirection = Vector3.zero;
            averagePeriod     = 60;
            currentSpeed      = 0f;
            movementEngaged   = false;

            if (storyService.RootLayoutInstance.AllowsFreeCamera)
            {
                var collisionMesh = storyService.RootLayoutInstance.GetCollisionMesh();
                bodyPhysics = new VRTK_BodyPhysics(collisionMesh, 0.5f);
            }
            else
            {
                bodyPhysics = null;
            }

            controllerLeftHand  = globalObjectService.VrLeftHand;
            controllerRightHand = globalObjectService.VrRightHand;

            SetControllerListeners(controllerLeftHand, leftController, ref leftSubscribed);
            SetControllerListeners(controllerRightHand, rightController, ref rightSubscribed);

            headset = globalObjectService.MainCamera.transform;;

            SetControlOptions(controlOptions);

            playArea = globalObjectService.VrPlayerCarrier.transform;

            // Initialize the lists.
            foreach (var trackedObj in trackedObjects)
            {
                VRTK_SharedMethods.AddDictionaryValue(movementList, trackedObj, new List <float>(), true);
                VRTK_SharedMethods.AddDictionaryValue(previousYPositions, trackedObj, trackedObj.transform.localPosition.y, true);
            }

            IsEnabled = true;
        }