Ejemplo n.º 1
0
        /*/ <!-- TODO : Fix Inside-out Shake.
         * [System.NonSerialized]protected bool m_FixInsideOutShake;
         * [System.NonSerialized]protected int m_FixedFrameCount;
         *
         * [System.NonSerialized]protected float m_HmdSleepVelocity=0.0010f;
         * [System.NonSerialized]protected float m_ControllerSleepVelocity=0.1f;
         * [System.NonSerialized]protected float m_LerpFactor=0.25f;
         *
         * [System.NonSerialized]protected float m_FadeMaxTime=0.125f;
         * [System.NonSerialized]protected float m_FadeTime=0.0f;
         *
         * [System.NonSerialized]protected TrackingResult m_PrevTrackingResult;
         * [System.NonSerialized]protected Vector3 m_PrevPosition;
         */// TODO : Fix Inside-out Shake. -->

        public XCobraInput(TrackerInput trackingInput, string name, int defaultNode) : base(name)
        {
            this.trackerInput = trackingInput;
            this.node         = defaultNode;
            if (this.trackerInput is XHawkInput)
            {
                xHawkInput = this.trackerInput as XHawkInput;

                /*/ <!-- TODO : Fix Inside-out Shake.
                 * m_FixInsideOutShake=(XDevicePlugin.GetInt(-1,XDevicePlugin.kField_CtxDeviceVersion,0)&0xF000)==0x3000&&
                 *      PlayerPrefsEx.GetBool("XimmerseTracker[Inside-out].fixShake",false);
                 */// TODO : Fix Inside-out Shake. -->
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// This function will be called by ControllerInputManager or Start().
        /// XCobra controller's position will be overwritten by this class.
        /// </summary>
        public virtual void Launch(bool checkOthers)
        {
            if (m_IsLaunched)
            {
                return;
            }
            m_IsLaunched = true;
            //
            deviceName = "XHawk-0";
            if (checkOthers)
            {
                XHawkInput other = FindAll(deviceName).Find((x) => (x != this)) as XHawkInput;
                if (other != null)
                {
                    // This will be not found by TrackingInput.Find(string).
                    gameObject.SetActive(false);
                    other.Launch(false);
                    //Log.i("XHawkInput","Use the default TrackingInput in scene.");
                    return;
                }
            }
            //
            XDevicePlugin.Init();
            if (m_Handle == -1)
            {
                m_Handle = XDevicePlugin.GetInputDeviceHandle(deviceName);
            }
            m_HmdHandle = XDevicePlugin.GetInputDeviceHandle("VRDevice");
            XDevicePlugin.SetInt(m_Handle, XDevicePlugin.kField_TrackingOrigin, (int)VRContext.trackingOrigin);
            // Set values to the plugin
            if (overridePlugin)             //&&m_Handle>0) {
            {
                if ((XDevicePlugin.GetInt(-1, XDevicePlugin.kField_CtxDeviceVersion, 0x4000) & 0xF000) == 0x4000)
                {
                    Vector3 trackerPos = PlayerPrefsEx.GetVector3("XimmerseTracker[Outside-in].position", new Vector3(0.0f, 1.675f, 1.5f));
                    Vector3 trackerRot = PlayerPrefsEx.GetVector3("XimmerseTracker[Outside-in].rotation", new Vector3(15.0f, 180.0f, 0.0f));
                    XDevicePlugin.SetTrackerPose(m_Handle, trackerPos.y, trackerPos.z, -trackerRot.x);
                }
            }
            // TODO :
            XDevicePlugin.SendMessage(m_Handle, XDevicePlugin.kMessage_RecenterSensor, 0, 0);
            //
#if XDEVICE_RELEASE
            //if((XDevicePlugin.GetInt(-1,XDevicePlugin.kField_CtxDeviceVersion,0x4000)&0xF000)!=0x4000)
#endif
            {
                int i = 0, imax = controllers.Length;
                inputs = new XCobraInput[imax];
                //
                ControllerInputManager mgr = ControllerInputManager.instance;
                ControllerInput        ci;
                if (mgr != null)
                {
                    for (; i < imax; ++i)
                    {
                        ci = mgr.GetControllerInput(controllers[i].key);
                        if (ci is XCobraInput)
                        {
                            inputs[i] = ci as XCobraInput;
                        }
                        else
                        {
                            inputs[i] = new XCobraInput(this, controllers[i].key, controllers[i].value);
                            mgr.AddControllerInput(inputs[i].name, inputs[i]);
                        }
                        //
                    }
                }
            }
            m_HmdInput = ControllerInputManager.GetInput(ControllerType.Hmd);
            // VRContext must have a CenterEyeAnchor at least.
            m_IsRequestVR = (VRContext.GetAnchor(VRNode.CenterEye) != null);
            EnsureAnchor();
            //
            if (XDevicePlugin.GetInt(-1, XDevicePlugin.kField_CtxDeviceVersion, 0) == 0x1010)
            {
                XDevicePlugin.SetInt(m_Handle, XDevicePlugin.kField_ConnectionState, (int)DeviceConnectionState.Connected);
                m_AsDaydreamEmulator = true;
                LoadHandConfigs();
            }
            //
            Log.i("XHawkInput", "Initialize successfully.");
        }