Example #1
0
        private IEnumerator Rotation()
        {
            while (true)
            {
                Quaternion rotation = VRPN.vrpnTrackerQuat(trackerAddress, channel);

                if (convertToLeft)
                {
                    rotation.x  = Interlocked.Exchange(ref rotation.z, rotation.x);
                    rotation.y *= -1;

                    transform.localRotation = rotation * Quaternion.Euler(trackerRotationOffset);
                }
                else if (viveTracker)
                {
                    Quaternion viveQuat;
                    viveQuat.x = rotation.z;
                    viveQuat.y = rotation.x;
                    viveQuat.z = rotation.y;
                    viveQuat.w = rotation.w;
                    transform.localRotation = viveQuat * Quaternion.Euler(trackerRotationOffset);
                }
                else
                {
                    transform.localRotation = rotation * Quaternion.Euler(trackerRotationOffset);
                }

                yield return(null);
            }
        }