예제 #1
0
        /// <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);
        }