2using System.Collections;
3using System.Collections.Generic;
30 private readonly Queue<Quaternion> rotList =
new Queue<Quaternion>();
31 private readonly Queue<Vector3> posList =
new Queue<Vector3>();
32 private bool setupOk =
false;
33 private bool isCosmos =
false;
40 if (SteamVR.initializedState == SteamVR.InitializedStates.InitializeSuccess)
41 return Valve.VR.SteamVR.instance.hmd_ModelNumber;
58 yield
return new WaitForSeconds(0.1f);
61 yield
return new WaitForSeconds(0.1f);
66 iris.transform.localPosition =
new Vector3(-1.715f, 1.557f, -0.611f);
67 iris.transform.localEulerAngles =
new Vector3(-0.241f, 89.41f, 180f);
79 iris.transform.localPosition =
new Vector3(-0.1248557f, -0.182729f, -0.6226097f);
80 iris.transform.localEulerAngles =
new Vector3(-77.204f, -11.844f, 210.55f);
88 yield
return new WaitForSeconds(0.1f);
91 yield
return new WaitForSeconds(0.1f);
95 iris.transform.localPosition =
new Vector3(-1.720f, 1.557f, -0.615f);
96 iris.transform.localEulerAngles =
new Vector3(-0.241f, 89.41f, 180f);
106 var sb =
new StringBuilder(128);
107 ETrackedPropertyError error = ETrackedPropertyError.TrackedProp_Success;
108 for (uint i = 0; i < 12; i++)
111 OpenVR.System.GetStringTrackedDeviceProperty(i, ETrackedDeviceProperty.Prop_RenderModelName_String, sb,
114 var deviceclass = OpenVR.System.GetTrackedDeviceClass(i);
115 if (error == ETrackedPropertyError.TrackedProp_Success)
117 if (sb.ToString().Contains(
"cosmos"))
126 iris.transform.localPosition =
new Vector3(-0.1248557f, -0.182729f, -0.6226097f);
127 iris.transform.localEulerAngles =
new Vector3(-77.204f, -11.844f, 210.55f);
131 iris.transform.localPosition =
new Vector3(-1.715f, 1.557f, -0.611f);
132 iris.transform.localEulerAngles =
new Vector3(-0.241f, 89.41f, 180f);
143 if (deviceclass == ETrackedDeviceClass.GenericTracker)
145 Debug.Log(sb.ToString());
146 GameObject.Find(
"SteamVR_Tracker").GetComponent<SteamVR_TrackedObject>().index =
147 (SteamVR_TrackedObject.EIndex) i;
155 yield
return new WaitForEndOfFrame();
169 if (!isCosmos && !setupOk)
171 var sb =
new StringBuilder();
172 ETrackedPropertyError error = ETrackedPropertyError.TrackedProp_Success;
173 for (uint i = 0; i < 12; i++)
177 var deviceclass = OpenVR.System.GetTrackedDeviceClass(i);
178 if (error == ETrackedPropertyError.TrackedProp_Success)
180 if (sb.ToString().Contains(
"cosmos"))
186 if (deviceclass == ETrackedDeviceClass.GenericTracker)
188 Debug.Log(sb.ToString());
189 GameObject.Find(
"SteamVR_Tracker").GetComponent<SteamVR_TrackedObject>().index =
190 (SteamVR_TrackedObject.EIndex) i;
200 if (!IsZero(tracker.transform.localPosition))
202 var transformRotation = tracker.transform.rotation;
203 transformRotation.eulerAngles =
new Vector3(tracker.transform.rotation.eulerAngles.x, tracker.transform.rotation.eulerAngles.y, 180);
204 rotList.Enqueue(transformRotation);
209 posList.Enqueue(tracker.transform.position);
214 iris.transform.position = Average(posList.ToArray()) ;
220 iris.transform.rotation = Average(rotList.ToArray());
232 foreach (var q
in quats)
250 var mag = Mathf.Sqrt(avg.x* avg.x + avg.y* avg.y + avg.z * avg.z + avg.w * avg.w);
265 private Vector3 Average(Vector3[] positions)
267 if (positions.Length == 0)
272 foreach (Vector3 pos
in positions)
278 return new Vector3(x / positions.Length, y / positions.Length, z / positions.Length);
281 float ClampAngle(
float angle)
283 while (angle > 180.0f)
285 while (angle < -180.0f)
291 bool IsZero(Vector3 value)
294 if (value.y == 0.0f || value.y == 1.0f)
295 if (value.x == 0.0f || value.x == 0.25f || value.x == -0.25f)
GameObject cosmosController
static string GetHmdTypeSteamVRToString()
bool developerLateReposition
bool forceTrackerPositionOnFound
Vector3 lateRepositionOffset
List< GameObject > controllersTrackers