IEnumerator InitializeLocation()
        {
            Input.location.Start(500, 500);

            int maxWait = 20;

            while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
            {
                yield return(new WaitForSeconds(0.5f));

                maxWait--;
            }
            if (Input.location.status == LocationServiceStatus.Initializing)
            {
                yield break;
            }
            else if (Input.location.status == LocationServiceStatus.Failed)
            {
                yield break;
            }

            // Access granted and location value could be retrieved
            Util.logDebug("MobileLocation::InitializeLocation\nLocation: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude);

            CognitiveVR_Manager.UpdateSessionState("c3d.geo.latitude", Input.location.lastData.latitude);
            CognitiveVR_Manager.UpdateSessionState("c3d.geo.longitude", Input.location.lastData.longitude);
            CognitiveVR_Manager.UpdateSessionState("c3d.geo.altitude", Input.location.lastData.altitude);

            if (!CognitiveVR_Preferences.Instance.TrackGPSLocation)
            {
                Input.location.Stop();
            }
        }
        void OnDestroy()
        {
            if (!Application.isPlaying)
            {
                return;
            }
            if (!Core.Initialized)
            {
                return;
            }
#if CVR_STEAMVR
            SteamVR_TrackedController controller;
            for (int i = 0; i < 2; i++)
            {
                bool right = i == 0 ? true : false;
                if (CognitiveVR_Manager.GetController(right) == null)
                {
                    continue;
                }
                controller = CognitiveVR_Manager.GetController(right).GetComponent <SteamVR_TrackedController>();

                if (controller == null)
                {
                    continue;
                }

                controller.TriggerClicked   -= new ClickedEventHandler(OnTriggerClicked);
                controller.TriggerUnclicked -= new ClickedEventHandler(OnTriggerUnclicked);
                controller.Gripped          -= new ClickedEventHandler(OnGripped);
                controller.Ungripped        -= new ClickedEventHandler(OnUngripped);
                controller.PadClicked       -= new ClickedEventHandler(OnPadClicked);
            }
#endif
        }
        public override void CognitiveVR_Init(Error initError)
        {
            base.CognitiveVR_Init(initError);

            SteamVR_TrackedController controller;

            for (int i = 0; i < 2; i++)
            {
                bool right = i == 0 ? true : false;
                if (CognitiveVR_Manager.GetController(right) == null)
                {
                    continue;
                }
                controller = CognitiveVR_Manager.GetController(right).GetComponent <SteamVR_TrackedController>();

                if (controller == null)
                {
                    controller = CognitiveVR_Manager.GetController(right).gameObject.AddComponent <SteamVR_TrackedController>();
                }

                controller.TriggerClicked   += new ClickedEventHandler(OnTriggerClicked);
                controller.TriggerUnclicked += new ClickedEventHandler(OnTriggerUnclicked);
                controller.Gripped          += new ClickedEventHandler(OnGripped);
                controller.Ungripped        += new ClickedEventHandler(OnUngripped);
                controller.PadClicked       += new ClickedEventHandler(OnPadClicked);
            }
        }
        void EndTransaction(string transactionKey, string type, bool rightController)
        {
            string transactionID;

            if (pendingTransactions.TryGetValue(transactionKey, out transactionID))
            {
                Vector3 pos = CognitiveVR_Manager.GetControllerPosition(rightController);
                new CustomEvent("cvr.input").SetProperty("type", type).SetProperty("device", rightController ? "right controller" : "left controller").SetProperty("state", "end").Send(pos);
                pendingTransactions.Remove(transactionID);
            }
        }
        public override void CognitiveVR_Init(Error initError)
        {
            if (initError != Error.Success)
            {
                return;
            }
            base.CognitiveVR_Init(initError);

            CognitiveVR_Manager.UpdateSessionState(new Dictionary <string, object>()
            {
                { "cvr.vr.screenresolution", Screen.height + " x " + Screen.width }
            });
            //CognitiveVR.Instrumentation.updateDeviceState(new Dictionary<string, object>() { { "cvr.vr.screenresolution", Screen.height + " x " + Screen.width } });
        }
        string GetViveDeviceName(int deviceID)
        {
            if (deviceID == 0)
            {
                return("hmd");
            }
            CognitiveVR_Manager.ControllerInfo cont = CognitiveVR_Manager.GetControllerInfo(deviceID);

            if (cont != null)
            {
                return(cont.isRight ? "right controller" : "left controller");
            }

            return("unknown id " + deviceID);
        }
        void BeginTransaction(string transactionKey, string type, bool rightController)
        {
            Vector3 pos = CognitiveVR_Manager.GetControllerPosition(rightController);

            string transactionID = Util.GetUniqueId();
            var    inTransaction = new CustomEvent("cvr.input");

            inTransaction.SetProperty("type", type).SetProperty("device", rightController?"right controller": "left controller").SetProperty("state", "begin");
            inTransaction.Send(pos);

            if (!pendingTransactions.ContainsKey(transactionKey))
            {
                pendingTransactions.Add(transactionKey, transactionID);
            }
        }
Exemple #8
0
        private void CognitiveVR_Manager_OnTick()
        {
            bool hit;

#if CVR_STEAMVR
            if (CognitiveVR_Manager.GetController(false) != null)
#endif
            {
                Vector3 pos = CognitiveVR_Manager.GetControllerPosition(false);

                hit = Physics.CheckSphere(pos, 0.1f, CollisionLayerMask);
                if (hit && string.IsNullOrEmpty(controller0GUID))
                {
                    Util.logDebug("controller collision");
                    controller0GUID = Util.GetUniqueId();
                    new CustomEvent("cvr.collision").SetProperty("device", "left controller").SetProperty("state", "begin").Send();
                }
                else if (!hit && !string.IsNullOrEmpty(controller0GUID))
                {
                    new CustomEvent("cvr.collision").SetProperty("device", "left controller").SetProperty("state", "end").Send();
                    controller0GUID = string.Empty;
                }
            }


#if CVR_STEAMVR
            if (CognitiveVR_Manager.GetController(true) != null)
#endif
            {
                Vector3 pos = CognitiveVR_Manager.GetControllerPosition(true);

                hit = Physics.CheckSphere(pos, 0.1f, CollisionLayerMask);
                if (hit && string.IsNullOrEmpty(controller1GUID))
                {
                    Util.logDebug("controller collision");
                    controller1GUID = Util.GetUniqueId();
                    new CustomEvent("cvr.collision").SetProperty("device", "right controller").SetProperty("state", "begin").Send();
                }
                else if (!hit && !string.IsNullOrEmpty(controller1GUID))
                {
                    new CustomEvent("cvr.collision").SetProperty("device", "right controller").SetProperty("state", "end").Send();
                    controller1GUID = string.Empty;
                }
            }
        }
        public override void CognitiveVR_Init(Error initError)
        {
            if (initError != Error.Success)
            {
                return;
            }
            base.CognitiveVR_Init(initError);

#if CVR_OCULUS
            //TODO add oculus audio changed events
            CognitiveVR_Manager.UpdateSessionState(new Dictionary <string, object>()
            {
                { "cvr.vr.headphonespresent", OVRPlugin.headphonesPresent }
            });
#elif CVR_STEAMVR
            //TODO could check SteamVR_Ears if using speaker?
#endif
        }
Exemple #10
0
        private void CognitiveVR_Manager_OnTick()
        {
            if (samples < SampleCount)
            {
                maxSqrDistance = Mathf.Max(maxSqrDistance, OVRInput.GetLocalControllerPosition(OVRInput.Controller.RTouch).sqrMagnitude, OVRInput.GetLocalControllerPosition(OVRInput.Controller.LTouch).sqrMagnitude);
                //maxSqrDistance = Mathf.Max(Vector3.SqrMagnitude(CognitiveVR_Manager.GetController(0).position - CognitiveVR_Manager.HMD.position));

                samples++;
                if (samples >= SampleCount)
                {
                    Util.logDebug("arm length " + maxSqrDistance);
                    CognitiveVR_Manager.UpdateSessionState(new Dictionary <string, object> {
                        { "cvr.armlength", Mathf.Sqrt(maxSqrDistance) }
                    });
                    //Instrumentation.updateUserState(new Dictionary<string, object> { { "armlength", Mathf.Sqrt(maxSqrDistance) } });
                    CognitiveVR_Manager.TickEvent -= CognitiveVR_Manager_OnTick;
                }
            }
        }
        private void OnPadClicked(object sender, ClickedEventArgs e)
        {
            var padTransaction = new CustomEvent("cvr.input");

            CognitiveVR_Manager.ControllerInfo cont = CognitiveVR_Manager.GetControllerInfo((int)e.controllerIndex);
            if (cont == null)
            {
                return;
            }

            Vector3 pos = CognitiveVR_Manager.GetControllerPosition(cont.isRight);

            padTransaction.SetProperties(new Dictionary <string, object>
            {
                { "type", "pad" },
                { "device", cont.isRight?"right controller":"left controller" },
                { "x", e.padX },
                { "y", e.padY }
            });
            padTransaction.Send(pos);
        }
Exemple #12
0
 private void CognitiveVR_Manager_OnTick()
 {
     if (CognitiveVR_Manager.HMD == null)
     {
         return;
     }
     if (samples < SampleCount)
     {
         hmdAccumHeight += CognitiveVR_Manager.HMD.position.y;
         samples++;
         if (samples >= SampleCount)
         {
             float averageHeight = hmdAccumHeight / samples;
             Util.logDebug("head height " + averageHeight);
             CognitiveVR_Manager.UpdateSessionState(new Dictionary <string, object> {
                 { "cvr.height", averageHeight }
             });
             CognitiveVR_Manager.TickEvent -= CognitiveVR_Manager_OnTick;
         }
     }
 }
Exemple #13
0
        public override void CognitiveVR_Init(Error initError)
        {
            if (initError != Error.Success)
            {
                return;
            }
            base.CognitiveVR_Init(initError);

#if CVR_STEAMVR
            float roomX = 0;
            float roomY = 0;
            if (Valve.VR.OpenVR.Chaperone == null || !Valve.VR.OpenVR.Chaperone.GetPlayAreaSize(ref roomX, ref roomY))
            {
                CognitiveVR_Manager.UpdateSessionState(new Dictionary <string, object>()
                {
                    { "cvr.vr.roomsize", "0 x 0" }, { "cvr.vr.roomscale", false }
                });
                //Instrumentation.updateDeviceState(new Dictionary<string, object>() { { "cvr.vr.roomsize", "0 x 0" }, { "cvr.vr.roomscale", false } });
            }
            else
            {
                bool seated = Mathf.Approximately(roomX, 1f) && roomX == roomY;
                CognitiveVR_Manager.UpdateSessionState(new Dictionary <string, object>()
                {
                    { "cvr.vr.roomsize", string.Format("{0:0.0} x {1:0.0}", roomX, roomY) },
                    { "cvr.vr.roomscale", !seated }
                });
                //Instrumentation.updateDeviceState(new Dictionary<string, object>(){{ "cvr.vr.roomsize", string.Format("{0:0.0} x {1:0.0}", roomX, roomY) },{ "cvr.vr.roomscale", !seated }});
            }
#elif CVR_OCULUS
            //(x = width, y = height, z = depth)
            Vector3 dimensions = OVRManager.boundary.GetDimensions(OVRBoundary.BoundaryType.PlayArea);

            CognitiveVR_Manager.UpdateSessionState(new Dictionary <string, object>()
            {
                { "cvr.vr.roomsize", string.Format("{0:0.0} x {1:0.0}", dimensions.x, dimensions.z) }
            });
            //Instrumentation.updateDeviceState(new Dictionary<string, object>(){{ "cvr.vr.roomsize", string.Format("{0:0.0} x {1:0.0}", dimensions.x, dimensions.z) }});
#endif
        }
        void OnTriggerUnclicked(object sender, ClickedEventArgs e)
        {
            CognitiveVR_Manager.ControllerInfo cont = CognitiveVR_Manager.GetControllerInfo((int)e.controllerIndex);

            EndTransaction("trigger" + e.controllerIndex, "trigger", cont.isRight);
        }
        private void OnUngripped(object sender, ClickedEventArgs e)
        {
            CognitiveVR_Manager.ControllerInfo cont = CognitiveVR_Manager.GetControllerInfo((int)e.controllerIndex);

            EndTransaction("grip" + e.controllerIndex, "grip", cont.isRight);
        }