123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- using System;
- using UnityEngine;
- using UnityEngine.VR;
- public static class OVRExtensions
- {
- public static OVRPose ToTrackingSpacePose(this Transform transform)
- {
- OVRPose lhs;
- lhs.position = InputTracking.GetLocalPosition(VRNode.Head);
- lhs.orientation = InputTracking.GetLocalRotation(VRNode.Head);
- return lhs * transform.ToHeadSpacePose();
- }
- public static OVRPose ToHeadSpacePose(this Transform transform)
- {
- return Camera.current.transform.ToOVRPose(false).Inverse() * transform.ToOVRPose(false);
- }
- internal static OVRPose ToOVRPose(this Transform t, bool isLocal = false)
- {
- OVRPose result;
- result.orientation = ((!isLocal) ? t.rotation : t.localRotation);
- result.position = ((!isLocal) ? t.position : t.localPosition);
- return result;
- }
- internal static void FromOVRPose(this Transform t, OVRPose pose, bool isLocal = false)
- {
- if (isLocal)
- {
- t.localRotation = pose.orientation;
- t.localPosition = pose.position;
- }
- else
- {
- t.rotation = pose.orientation;
- t.position = pose.position;
- }
- }
- internal static OVRPose ToOVRPose(this OVRPlugin.Posef p)
- {
- return new OVRPose
- {
- position = new Vector3(p.Position.x, p.Position.y, -p.Position.z),
- orientation = new Quaternion(-p.Orientation.x, -p.Orientation.y, p.Orientation.z, p.Orientation.w)
- };
- }
- internal static OVRTracker.Frustum ToFrustum(this OVRPlugin.Frustumf f)
- {
- return new OVRTracker.Frustum
- {
- nearZ = f.zNear,
- farZ = f.zFar,
- fov = new Vector2
- {
- x = 57.29578f * f.fovX,
- y = 57.29578f * f.fovY
- }
- };
- }
- internal static Color FromColorf(this OVRPlugin.Colorf c)
- {
- return new Color
- {
- r = c.r,
- g = c.g,
- b = c.b,
- a = c.a
- };
- }
- internal static OVRPlugin.Colorf ToColorf(this Color c)
- {
- return new OVRPlugin.Colorf
- {
- r = c.r,
- g = c.g,
- b = c.b,
- a = c.a
- };
- }
- internal static Vector3 FromVector3f(this OVRPlugin.Vector3f v)
- {
- return new Vector3
- {
- x = v.x,
- y = v.y,
- z = v.z
- };
- }
- internal static Vector3 FromFlippedZVector3f(this OVRPlugin.Vector3f v)
- {
- return new Vector3
- {
- x = v.x,
- y = v.y,
- z = -v.z
- };
- }
- internal static OVRPlugin.Vector3f ToVector3f(this Vector3 v)
- {
- return new OVRPlugin.Vector3f
- {
- x = v.x,
- y = v.y,
- z = v.z
- };
- }
- internal static OVRPlugin.Vector3f ToFlippedZVector3f(this Vector3 v)
- {
- return new OVRPlugin.Vector3f
- {
- x = v.x,
- y = v.y,
- z = -v.z
- };
- }
- internal static Quaternion FromQuatf(this OVRPlugin.Quatf q)
- {
- return new Quaternion
- {
- x = q.x,
- y = q.y,
- z = q.z,
- w = q.w
- };
- }
- internal static OVRPlugin.Quatf ToQuatf(this Quaternion q)
- {
- return new OVRPlugin.Quatf
- {
- x = q.x,
- y = q.y,
- z = q.z,
- w = q.w
- };
- }
- }
|