コード例 #1
0
        void all_UpdateReferenceFrame(string zone, string referenceFrame, string targetWidth, string targetDist)
        {
            Zone           = (DistanceZones)System.Enum.Parse(typeof(DistanceZones), zone);
            RefFrame       = (ReferenceFrame)System.Enum.Parse(typeof(ReferenceFrame), referenceFrame);
            TargetWidth    = (TargetWidths)System.Enum.Parse(typeof(TargetWidths), targetWidth);
            TargetDistance = (TargetDistances)System.Enum.Parse(typeof(TargetDistances), targetDist);

            if (TargetSet == null)
            {
                return;
            }

            Vector2 tParams = GetTargetParams();

            targetWidthValue    = tParams.x;
            targetDistanceValue = tParams.y;

            UpdateLayout(targetWidthValue, targetDistanceValue);

            GameObject zoneGO = GetInteractionZoneGO();

            TargetSet.transform.SetParent(zoneGO.transform, true);
            TargetSet.transform.localPosition = Vector3.zero;

            //Raise target frame if body/world since they are initially set to be low.
            if (RefFrame != ReferenceFrame.View)
            {
                TargetSet.transform.Translate(new Vector3(0, .35f, 0), Space.Self);
            }
            TargetSet.transform.localScale = Vector3.one;
            TargetSet.transform.LookAt(Participant.transform.position);

            MessageBroker.BroadcastAll("OnReferenceFrameUpdated", RefFrame);
        }
コード例 #2
0
        void CheckSelections(MoverioTouchpadEventArgs mieArgs)
        {
            Collider[] targets = GetAffectedTargets();

            SelectionControllerEventArgs args = new SelectionControllerEventArgs(mieArgs);

            args.Device      = ControllerType.HandGesture;
            args.IsConflict  = targets.Length > 1;
            args.PointerPx   = RightCamera.WorldToScreenPoint(gameObject.transform.position);
            args.PointerPos  = gameObject.transform.position;
            args.PointerQuat = gameObject.transform.rotation;

            foreach (Collider target in targets)
            {
                target.SendMessage("Selected", args, SendMessageOptions.DontRequireReceiver);
            }

            if (targets.Length == 0 || args.IsConflict)
            {
                SelectionEventArgs seArgs = new SelectionEventArgs(args);
                seArgs.Type = SelectionEventArgs.SelectionEventType.Selected;

                MessageBroker.BroadcastAll("OnSelected", seArgs);
            }
        }
コード例 #3
0
        void mipTap(Vector2 position)
        {
            if ((System.DateTime.Now - timeLastReset).TotalMilliseconds < FingerUpTimeOut)
            {
                return;
            }

            MoverioTouchpadEventArgs args = new MoverioTouchpadEventArgs(MoverioTouchpadEventType.Tap);

            args.Position = position;
            args.Origin   = position;
            args.Last     = position;
            MessageBroker.BroadcastAll("OnTap", args);

            System.DateTime tapTime = System.DateTime.Now;
            if ((tapTime - lastTapTime).TotalMilliseconds < TapTimeOut)
            {
                args          = new MoverioTouchpadEventArgs(MoverioTouchpadEventType.DoubleTap);
                args.Position = position;
                args.Origin   = position;
                args.Last     = position;
                MessageBroker.BroadcastAll("OnDoubleTap", args);
            }
            lastTapTime = tapTime;
        }
コード例 #4
0
        private void StartServer()
        {
            Network.InitializeServer(2, 8080, true);
            isConnected = true;

            //calls the WindowsViconConnector.OnNetworkStarted method
            MessageBroker.BroadcastAll("OnNetworkStarted", true);
        }
コード例 #5
0
        private void StartClient()
        {
            Network.Connect(IPofDesktopServer, 8080);
            isConnected = true;

            //calls the WindowsViconConnector.OnNetworkStarted method
            MessageBroker.BroadcastAll("OnNetworkStarted", false);
        }
コード例 #6
0
        void mipTouchMoved(Vector2 position, Vector2 origin, Vector2 last)
        {
            MoverioTouchpadEventArgs args = new MoverioTouchpadEventArgs(MoverioTouchpadEventType.TouchMoved);

            args.Position = position;
            args.Origin   = origin;
            args.Last     = last;

            MessageBroker.BroadcastAll("OnTouchMoved", args);
        }
コード例 #7
0
        public void SetBaselineRotation()
        {
            baselineRotation    = GetFilteredRotation(Quaternion.identity);
            invBaselineRotation = Quaternion.Inverse(baselineRotation);
            actualRotation      = invBaselineRotation * baselineRotation;

            headBaselineRotation    = GetFilteredHeadRotation(Quaternion.identity);
            headInvBaselineRotation = Quaternion.Inverse(headBaselineRotation);
            headActualRotation      = headInvBaselineRotation * headBaselineRotation;

            MessageBroker.BroadcastAll("OnRotationBaselineSet");
        }
コード例 #8
0
        void mipTouchStarted(Vector2 position)
        {
            if (!touchStarted)
            {
                touchStarted = true;
                if ((System.DateTime.Now - timeLastReset).TotalMilliseconds < FingerUpTimeOut)
                {
                    return;
                }

                MoverioTouchpadEventArgs args = new MoverioTouchpadEventArgs(MoverioTouchpadEventType.TouchStarted);
                args.Position = position;
                args.Origin   = position;
                args.Last     = position;

                MessageBroker.BroadcastAll("OnTouchStarted", args);
            }
        }
コード例 #9
0
        private void ProcessRotationalTriggers()
        {
            Quaternion historicRot = GetHistoricValue(TwistThresholdMillis);
            Quaternion diff        = Quaternion.Inverse(historicRot) * Rotation;
            Vector3    diffNegPos  = RotationProvider.RotAsPosNeg(diff);

            //Checks for twist trigger to the right
            if (diffNegPos.z > TwistTriggerThreshold[2])
            {
                MessageBroker.BroadcastAll("OnTwist", new TwistEvent()
                {
                    Type = TwistTriggerTypes.ScrewRight, initialRot = historicRot, Milliseconds = TwistThresholdMillis
                });
            }
            else if (diffNegPos.z < -TwistTriggerThreshold[2])
            {
                MessageBroker.BroadcastAll("OnTwist", new TwistEvent()
                {
                    Type = TwistTriggerTypes.ScrewLeft, initialRot = historicRot, Milliseconds = TwistThresholdMillis
                });
            }

            if (diffNegPos.x < -TwistTriggerThreshold[0])
            {
                MessageBroker.BroadcastAll("OnTwist", new TwistEvent()
                {
                    Type = TwistTriggerTypes.Up, initialRot = historicRot, Milliseconds = TwistThresholdMillis
                });
            }
            else if (diffNegPos.x > TwistTriggerThreshold[0])
            {
                MessageBroker.BroadcastAll("OnTwist", new TwistEvent()
                {
                    Type = TwistTriggerTypes.Down, initialRot = historicRot, Milliseconds = TwistThresholdMillis
                });
            }

            // ----- IMPORTANT -------------
            //Remove the next elements in the Queue otherwise it will continue triggering the same event
        }
コード例 #10
0
        void mipTouchEnded(Vector2 position, Vector2 origin, System.TimeSpan lenght)
        {
            if (touchStarted)
            {
                touchStarted = false;
                if ((System.DateTime.Now - timeLastReset).TotalMilliseconds < FingerUpTimeOut)
                {
                    return;
                }

                MoverioTouchpadEventArgs args = new MoverioTouchpadEventArgs(MoverioTouchpadEventType.TouchEnded);
                args.Position = position;
                args.Origin   = origin;
                args.Duration = lenght;

                MessageBroker.BroadcastAll("OnTouchEnded", args);

                if (isAndroid && resetMousePointerOnTouchEnded)
                {
                    if (!isJNIInitialized)
                    {
                        CommToAndroid.CallAndroidMethod("setDisplaySize", Screen.width, Screen.height);
                        CommToAndroid.CallAndroidMethod("openMouseCursor", "UnityMoverioBT200");

                        isJNIInitialized = true;
                    }
                    else
                    {
                        CommToAndroid.CallAndroidMethod("mouseMove", -1, -1);
                        CommToAndroid.CallAndroidMethod("mouseMove", 180, 100);
                    }

                    touchOrigin       = Input.mousePosition;
                    touchLastPosition = Input.mousePosition;
                    timeLastReset     = System.DateTime.Now;
                }
            }
        }
コード例 #11
0
        void CheckSelections(MoverioTouchpadEventArgs mieArgs)
        {
            Collider target = GetFirstAffectedTarget();

            SelectionControllerEventArgs args = new SelectionControllerEventArgs(mieArgs);

            args.Device      = ControllerType.GyroMouse;
            args.IsConflict  = false;
            args.PointerPx   = GetScreenPoint();
            args.PointerPos  = EPSONcamera.transform.position;
            args.PointerQuat = EPSONcamera.transform.rotation;

            if (target != null)
            {
                target.SendMessage("Selected", args, SendMessageOptions.DontRequireReceiver);
            }
            else
            {
                SelectionEventArgs seArgs = new SelectionEventArgs(args);
                seArgs.Type = SelectionEventArgs.SelectionEventType.Selected;

                MessageBroker.BroadcastAll("OnSelected", seArgs);
            }
        }