Пример #1
0
        protected static float DrawSlider(string label, string key, float value, float min, float max)
        {
            value = PlayerPrefsEx.GetFloat(key, value);
            float newValue = EditorGUILayout.Slider(label, value, min, max);

            if (newValue != value)
            {
                PlayerPrefsEx.SetFloat(key, newValue);
            }
            return(newValue);
        }
Пример #2
0
        public virtual void LoadHandConfigs()
        {
            int i = 0;

            //
            m_HandPosition[i] = PlayerPrefsEx.GetVector3("Daydream.leftHand.position", new Vector3(-0.2f, -0.5f, 0.0f));
            m_HandLength[i]   = PlayerPrefsEx.GetFloat("Daydream.leftHand.length", 0.0f);
            ++i;
            m_HandPosition[i] = PlayerPrefsEx.GetVector3("Daydream.rightHand.position", new Vector3(0.2f, -0.5f, 0.0f));
            m_HandLength[i]   = PlayerPrefsEx.GetFloat("Daydream.rightHand.length", 0.0f);
            ++i;
        }
Пример #3
0
    protected virtual void Start()
    {
        m_Transform = transform;
        //
        m_TrackerHandle = -1;
        if (showOnTrackingLost)
        {
            XDevicePlugin.Init();
            m_TrackerHandle = XDevicePlugin.GetInputDeviceHandle(trackerName);
            if (m_TrackerHandle < 0)
            {
                showOnTrackingLost = false;
            }
        }
        //
        m_ReadyForModel = (controlPoints.Length == 8);
        // Cache values.
        m_CosFovX  = Mathf.Cos(Mathf.Deg2Rad * fovX * .5f);
        m_CosFovY  = Mathf.Cos(Mathf.Deg2Rad * fovY * .5f);
        m_SqrNearZ = nearZ * nearZ;
        m_SqrFarZ  = farZ * farZ;

        m_SqrOrthographicSize = orthographicSize * .5f;
        m_SqrOrthographicSize = Vector2.Scale(m_SqrOrthographicSize, m_SqrOrthographicSize);
        //
        if (m_Corners != null && m_Corners.Length != 0)
        {
            m_CachedCorners = m_Corners;
        }
        m_Corners = null;
        //
        m_GroundAlpha      = PlayerPrefsEx.GetInt("PlayArea.drawGround", 1);
        m_WallAlpha        = PlayerPrefsEx.GetInt("PlayArea.drawWall", 1);
        autoCreatePlayArea = PlayerPrefsEx.GetBool("PlayArea.enabled", autoCreatePlayArea);
        showCameraModel    = PlayerPrefsEx.GetBool("PlayArea.showCameraModel", showCameraModel);
        if (m_cameraModel != null)
        {
            m_cameraModel.SetActive(showCameraModel);
        }

        warningDistance = PlayerPrefsEx.GetFloat("PlayArea.warningDistance", 0.5f);
        //
        if (autoCreatePlayArea)
        {
            Transform t = null;
            if (m_PlayArea == null)
            {
                //
                m_PlayArea            = new GameObject("_PlayArea", typeof(PlayAreaRenderer)).GetComponent <PlayAreaRenderer>();
                m_PlayArea.handedness = -1;

                m_PlayArea.groundColor     = PlayerPrefsEx.GetColor("PlayArea.groundColor", Color.cyan);
                m_PlayArea.groundMaterial  = new Material(Shader.Find("Sprites/Default"));
                m_PlayArea.borderThickness = PlayerPrefsEx.GetFloat("PlayArea.borderThickness", .15f);

                m_PlayArea.wallColor    = PlayerPrefsEx.GetColor("PlayArea.wallColor", Color.cyan);
                m_PlayArea.wallMaterial = new Material(Shader.Find("Sprites/Default"));
                m_PlayArea.thickness    = PlayerPrefsEx.GetFloat("PlayArea.thickness", 0.0075f);
                m_PlayArea.height       = PlayerPrefsEx.GetFloat("PlayArea.height", 2.5f);
                m_PlayArea.cellSize     = PlayerPrefsEx.GetFloat("PlayArea.cellSize", 0.25f);
                m_PlayArea.emptySize    = PlayerPrefsEx.GetFloat("PlayArea.emptySize", 0.05f);
            }
            t = m_PlayArea.transform;
            t.SetParent(VRContext.GetAnchor(VRNode.TrackingSpace));
            t.localPosition = (VRContext.trackingOrigin == TrackingOrigin.FloorLevel) ? Vector3.zero :
                              new Vector3(0f, -XDevicePlugin.GetFloat(m_TrackerHandle, XDevicePlugin.kField_TrackerHeight, 0f), 0f);
            t.localRotation = Quaternion.identity;
            t.localScale    = Vector3.one;
        }
        //
        UpdateModel();
    }
Пример #4
0
    protected virtual void Start()
    {
        m_Transform = transform;
        //
        m_TrackerHandle = -1;
        if (showOnTrackingLost)
        {
            XDevicePlugin.Init();
            m_TrackerHandle = XDevicePlugin.GetInputDeviceHandle(trackerName);
            if (m_TrackerHandle < 0)
            {
                showOnTrackingLost = false;
            }
        }
        //
        m_ReadyForModel = (controlPoints.Length == 8);
        // Cache values.

        /*
         * m_CosFovX=Mathf.Cos(Mathf.Deg2Rad*fovX*.5f);
         * m_CosFovY=Mathf.Cos(Mathf.Deg2Rad*fovY*.5f);
         * m_SqrNearZ=nearZ*nearZ;
         * m_SqrFarZ=farZ*farZ;
         *
         * m_SqrOrthographicSize=orthographicSize*.5f;
         * m_SqrOrthographicSize=Vector2.Scale(m_SqrOrthographicSize,m_SqrOrthographicSize);
         */
        //
        if (m_Corners != null && m_Corners.Length != 0)
        {
            m_CachedCorners = m_Corners;
        }
        m_Corners = null;
        //
        m_GroundAlpha      = PlayerPrefsEx.GetInt("PlayArea.drawGround", 1);
        m_WallAlpha        = PlayerPrefsEx.GetInt("PlayArea.drawWall", 1);
        m_PlaneAlpha       = PlayerPrefsEx.GetInt("PlayArea.drawPlane", 1);
        autoCreatePlayArea = PlayerPrefsEx.GetBool("PlayArea.enabled", autoCreatePlayArea);
        showCameraModel    = PlayerPrefsEx.GetBool("PlayArea.showCameraModel", showCameraModel);
        if (m_cameraModel != null)
        {
            m_cameraModel.SetActive(showCameraModel);
        }
        warningDistance = PlayerPrefsEx.GetFloat("PlayArea.warningDistance", 0.5f);
        //
        if (autoCreatePlayArea)
        {
            Transform t = null;
            Transform trackingSpaceAnchor = VRContext.GetAnchor(VRNode.TrackingSpace);

            if (m_PlayArea == null)
            {
                if (trackingSpaceAnchor != null)
                {
                    m_PlayArea = trackingSpaceAnchor.GetComponentInChildren <PlayAreaRenderer>();
                }
                if (m_PlayArea == null)
                {
                    GameObject go = PlayerPrefsEx.GetObject("PlayAreaRenderer") as GameObject;
                    m_PlayArea      = Instantiate(go).GetComponent <PlayAreaRenderer>();
                    m_PlayArea.name = go.name;
                }
            }
            m_PlayArea.handedness = -1;
            //
            t = m_PlayArea.transform;
            t.SetParent(trackingSpaceAnchor);
            t.localPosition = (VRContext.trackingOrigin == TrackingOrigin.FloorLevel) ? Vector3.zero :
                              new Vector3(0f, -XDevicePlugin.GetFloat(m_TrackerHandle, XDevicePlugin.kField_TrackerHeightFloat, 0f), 0f);
            t.localRotation = Quaternion.identity;
            t.localScale    = Vector3.one;
        }
        //
        UpdateModel();
    }
Пример #5
0
        /// <summary>
        /// We will lose the VR context,when reloading level.
        /// Calling this function per frame can ensure that the anchor is alive.
        /// </summary>
        public virtual bool EnsureAnchor()
        {
            // <!-- TODO: VR Legacy Mode. -->
            // If the X-Hawk isn't connected,the game will run as legacy VR mode(Gets input events with GearVR touchpad).
            if (XDevicePlugin.GetInt(m_Handle, XDevicePlugin.kField_ConnectionState, 0) != (int)DeviceConnectionState.Connected)
            {
                XDevicePlugin.SetInt(m_HmdHandle, XDevicePlugin.kField_ConnectionState, (int)DeviceConnectionState.Disconnected);
                return(false);
            }
            //
            if (trackingSpace == null)
            {
                trackingSpace = VRContext.GetAnchor(VRNode.TrackingSpace);
            }
            //
            if (anchor == null)
            {
                Transform centerEyeAnchor = VRContext.GetAnchor(VRNode.CenterEye);
                if (m_IsRequestVR && centerEyeAnchor == null)
                {
                    return(false);
                }
                else
                {
                    //
                    switch ((XDevicePlugin.GetInt(-1, XDevicePlugin.kField_CtxDeviceVersion, 0x4000) & 0xF000))
                    {
                    case 0x3000:
                        anchor = new GameObject("XHawkAnchor").transform;
                        anchor.SetParent(centerEyeAnchor);
                        anchor.localPosition = anchorPosition;
                        anchor.localRotation = Quaternion.Euler(anchorRotation);
                        //
                        m_UseAnchorProjection = !PlayerPrefsEx.GetBool("XimmerseTracker[Inside-out].fixShake", false);                             //!modifyHierarchy;
                        VRContext.SetAnchor(VRNode.TrackerDefault, anchor);
                        // TODO :

                        /*if(modifyHierarchy) {
                         *      for(int i=0;i<2;++i) {
                         *              Transform hand=VRContext.GetAnchor(VRNode.LeftHand+i);
                         *              if(hand!=null) {
                         *                      hand.SetParent(anchor,true);
                         *              }
                         *      }
                         * }*/
                        if (PlayerPrefsEx.GetBool("XimmerseTracker[Inside-out].fixShake", false))
                        {
                            m_AnchorMatrixQueue = new List <Matrix4x4>(8);
                            m_M2pFrameIndex     = Mathf.CeilToInt(PlayerPrefsEx.GetFloat("XimmerseTracker[Inside-out].m2pLatency", 0.0f) * VRContext.refreshRate);
                            Log.i("XHawkInput", "m_M2pFrameIndex=" + m_M2pFrameIndex);
                        }
                        else
                        {
                            m_AnchorMatrixQueue = null;
                        }
                        break;

                    case 0x4000:
                        //
                        float trackerHeight, trackerDepth, trackerPitch;
                        XDevicePlugin.GetTrackerPose(m_Handle, out trackerHeight, out trackerDepth, out trackerPitch);
                        //
                        anchor = (anchorPrefab == null || !m_IsRequestVR?                          // in 2D mode.
                                  new GameObject():
                                  Object.Instantiate(anchorPrefab)
                                  ).transform;
                        anchor.name = "TrackerAnchor(X-Hawk DK4)";
                        anchor.SetParent(trackingSpace);
                        //
#if XDEVICE_RELEASE
                        if (true)
                        {
                            UpdateAnchorFromPlugin();
                        }
                        else
#endif
                        {
                            anchor.localPosition = new Vector3(0f, VRContext.trackingOrigin == TrackingOrigin.FloorLevel?trackerHeight:0.0f, trackerDepth);
                            anchor.localRotation = Quaternion.Euler(-trackerPitch, 180f, 0f);
                        }
                        //
                        m_TrackerFrustum = anchor.GetComponentInChildren <TrackerFrustum>();
                        //
//#if XDEVICE_RELEASE
//							m_UseAnchorProjection=false;
//#else
                        m_UseAnchorProjection = true;
//#endif
                        VRContext.SetAnchor(VRNode.TrackerDefault, anchor);
                        m_AnchorMatrixQueue = null;
                        break;

                    default:
                        anchor = new GameObject("Dummy Anchor").transform;
                        anchor.SetParent(trackingSpace, false);
                        break;
                    }
                    // Override anchor info.
                    if (m_AnchorInfoCached)
                    {
                        anchor.localPosition = m_AnchorPosition;
                        anchor.localRotation = m_AnchorRotation;
                    }
                    //
                    if (m_IsRequestVR)
                    {
                        VRContext.main.onRecenter -= RecenterOnVRContextRecenter;
                        VRContext.main.onRecenter += RecenterOnVRContextRecenter;
                    }
                }
            }
            return(true);
        }