/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { OpenvrWrapper temp = null; if (!DA.GetData("Vive", ref temp)) { return; } var list = temp.TrackedDevices.IndexesByClasses["HMD"]; if (list.Count == 0) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "No HMD deteceted"); return; } int index = temp.TrackedDevices.IndexesByClasses["HMD"][0]; CurrenTrackedDevice = temp.TrackedDevices.AllDevices[index]; this.Message = "HMD"; CurrenTrackedDevice.ConvertPose(); XyPlane = Plane.WorldXY; XyPlane.Transform(CurrenTrackedDevice.CorrectedMatrix4X4); if (!Paused) { OldPlane = XyPlane; OldTransform = CurrenTrackedDevice.CorrectedMatrix4X4; } var newHMD = HMD.Duplicate(); newHMD.Transform(OldTransform); DA.SetData("HMD", newHMD); DA.SetData("Plane", OldPlane); DA.SetData("Matrix", OldTransform); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { OpenvrWrapper temp = null; int index = 0; if (!DA.GetData("Vive", ref temp)) { return; } DA.GetData("Index", ref index); var list = temp.TrackedDevices.IndexesByClasses["Tracker"]; if (list.Count == 0) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "No Tracker deteceted"); this.Message = ""; return; } if (index > list.Count - 1) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Index exceeds the trackers detected"); this.Message = ""; return; } int globaleindex = temp.TrackedDevices.IndexesByClasses["Tracker"][index]; CurrenTrackedDevice = temp.TrackedDevices.AllDevices[globaleindex]; this.Message = "Tracker" + index; CurrenTrackedDevice.ConvertPose(); CurrenTrackedDevice.GetTrackerCorrectedMatrix4X4(); XyPlane = Plane.WorldXY; XyPlane.Transform(CurrenTrackedDevice.CorrectedMatrix4X4); if (!Paused) { OldPlane = XyPlane; OldTransform = CurrenTrackedDevice.CorrectedMatrix4X4; } var newtracker = tracker.Duplicate(); newtracker.Transform(OldTransform); DA.SetData("Tracker", newtracker); DA.SetData("Plane", OldPlane); DA.SetData("Matrix", OldTransform); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { OpenvrWrapper temp = null; if (!DA.GetData("Vive", ref temp)) { return; } var list = temp.TrackedDevices.IndexesByClasses["Controller"]; if (list.Count == 0) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "No Controller deteceted"); return; } if (list.Count == 1) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "There's only one Controller, please use Controller1"); return; } int index = temp.TrackedDevices.IndexesByClasses["Controller"][1]; CurrenTrackedDevice = temp.TrackedDevices.AllDevices[index]; this.Message = "Controller2"; CurrenTrackedDevice.ConvertPose(); XyPlane = Plane.WorldXY; XyPlane.Transform(CurrenTrackedDevice.CorrectedMatrix4X4); if (!Paused) { OldPlane = XyPlane; OldTransform = CurrenTrackedDevice.CorrectedMatrix4X4; } var newcontroller = controller.Duplicate(); newcontroller.Transform(OldTransform); DA.SetData("Controller", newcontroller); DA.SetData("Plane", OldPlane); DA.SetData("Matrix", OldTransform); CurrenTrackedDevice.GetControllerTriggerState(); DA.SetDataList("TriggerState", CurrenTrackedDevice.TriggerStates); DA.SetDataList("TouchPadState", CurrenTrackedDevice.TouchPadStates); }