Ejemplo n.º 1
0
 /// <summary>
 /// Called every frame if the script is enabled.
 /// </summary>
 private void Update()
 {
     if (Input.GetKeyDown(ToggleKey))
     {
         //Plugin.log.Debug("F detected.");
         if (!keyHeld)
         {
             var flyingController = GetFlyingController();
             if (flyingController != null)
             {
                 if (flyingController.enabled)
                 {
                     flyingController.enabled = false;
                     //Plugin.log.Debug("Flying controller disabled.");
                     if (VRCenter != null)
                     {
                         //Logger.log.Info($"Current Position:\n{TransformValuesString(VRCenter.gameObject.transform.position, VRCenter.gameObject.transform.rotation.eulerAngles)}");
                         VRCenter.ResetRoom();
                         if (RoomCenter != null && RoomRotation != null)
                         {
                             RoomCenter.value   = LastPos;
                             RoomRotation.value = LastRot.y;
                             //Logger.log.Info($"Setting RoomCenter to LastPos:\n{TransformValuesString(LastPos, LastRot)}");
                         }
                         //Logger.log.Info($"Switch back to old pos:\n{TransformValuesString(VRCenter.gameObject.transform.position, VRCenter.gameObject.transform.rotation.eulerAngles)}");
                     }
                 }
                 else
                 {
                     if (VRCenter != null)
                     {
                         LastPos = VRCenter.gameObject.transform.position;
                         LastRot = VRCenter.gameObject.transform.rotation.eulerAngles;
                         //Logger.log.Info($"Saving position:\n{TransformValuesString(LastPos, LastRot)}");
                     }
                     flyingController.enabled = true;
                     //Plugin.log.Debug("Flying controller enabled.");
                 }
             }
             else
             {
                 Plugin.log.Debug("FirstPersonFlyingController not found.");
             }
             keyHeld = true;
         }
     }
     else
     {
         keyHeld = false;
     }
 }
Ejemplo n.º 2
0
    // Update is called once per frame
    void LateUpdate()
    {
        if (VRCenter.VRPresent)
        {
            Quaternion quatRot = VRCenter.rotation;
            Vector3    vecPos  = VRCenter.position;

            Vector3 currHeadRot = headTransform.localRotation.eulerAngles;

            // output to listener

            //float scale = 0.1f;
            Vector3 optionalRigPosOffset = new Vector3(0, 0, 1);
            Vector3 optionalRigRotation  = new Vector3(0, 180, 0);
            Vector3 recRigPosOffset      = new Vector3(0, 0.055f, 0.1f);

            rotationNeeded = quatRot.eulerAngles;
            positionNeeded = vecPos;


            //camFindTransform.localPosition = -positionNeeded + (recRigPosOffset)/scale;


            //spineTransform.localRotation = Quaternion.Euler(Mathf.Atan(positionNeeded.z / distSpineToHead) / Mathf.PI * 180.0f, spineTransform.localRotation.eulerAngles.y, Mathf.Atan(positionNeeded.x / distSpineToHead) / Mathf.PI * 180.0f);

            riftZ = positionNeeded.z;
            riftY = positionNeeded.y + distHipsToHead;

            h = Mathf.Abs(distHipsToNeck - riftY);
            k = riftY - h - distHipsToSpine;


            p = Mathf.Sqrt(Mathf.Abs(Mathf.Pow(distSpineToNeck, 2) - Mathf.Pow(k, 2)));
            q = riftZ - p;

            //UnityEngine.Debug.Log("h: " + h + ", k: " + k + ", p: " + p + ", q: " + q );
            //UnityEngine.Debug.Log("vecposz: " + vecPos.z);

            rotSpine = Mathf.Acos(k / distSpineToNeck) * Mathf.Rad2Deg;
            rotNeck  = Mathf.Atan2(q, h) * Mathf.Rad2Deg;

            //UnityEngine.Debug.Log("spine: " + rotSpine);
            //UnityEngine.Debug.Log("neck: " + rotNeck);

            //spineTransform.localRotation = Quaternion.Euler(new Vector3(/*spineTransform.localRotation.eulerAngles.x*/0, spineTransform.localRotation.eulerAngles.y, rotSpine/* - 90*/));
            //neckTransform.localRotation = Quaternion.Euler(new Vector3(rotNeck + 90, neckTransform.localRotation.eulerAngles.y, neckTransform.localRotation.eulerAngles.z));

            // Possibly subtract/add sum of above rotations to headTransform


            cameraRigTransform.localRotation = Quaternion.Euler(-rotationNeeded /*+ optionalRigRotation*/);
            rotationNeeded.Set(rotationNeeded.x, rotationNeeded.y /*- rotNeck - rotSpine*/, rotationNeeded.z);
            headTransform.localRotation = Quaternion.Euler(/*initHeadRot +*/ currHeadRot + rotationNeeded);
            //cameraRigTransform.localPosition = -positionNeeded /*+ optionalRigPosOffset*/ + recRigPosOffset;

            //cameraRigTransform.localPosition = rigPos;
            //UnityEngine.Debug.Log(distSpineToHead);
            //UnityEngine.Debug.Log("HeadPos: " + vecPos);

            if (logging)
            {
                listener.WriteLine("HeadRotQuat: " + quatRot + ", HeadRotAngles: " + quatRot.eulerAngles);
                listener.WriteLine("HeadPos: " + vecPos);
                listener.WriteLine("CamRotQuat: " + cameraTransform.localRotation + ", CamRotAngles: " + cameraTransform.localRotation.eulerAngles);
                listener.WriteLine("CamPos: " + cameraTransform.localPosition);
                listener.WriteLine("spineRotQuat: " + spineTransform.localRotation + ", spineRotAngles: " + spineTransform.localRotation.eulerAngles + ", distSpineToNeck: " + distSpineToNeck);
            }

            /*if (Input.GetButtonDown("LeftShoulder"))
             * {
             *  listener.WriteLine("----Looking Directly Left---");
             * }*/

            if (Input.GetButtonDown("LeftShoulder") && logging)
            {
                listener.WriteLine("----Leaning forward---");
            }


            if (Input.GetButtonDown("LeftShoulder"))
            {
                VRCenter.Recenter();
                listener.WriteLine("---Recentering InputTracking---");
            }
        }
    }