Exemple #1
0
    public override void Launch(bool checkOthers)
    {
        //
        XDevicePlugin.Init();
        XDevicePlugin.SetInt(-1, XDevicePlugin.kField_CtxDeviceVersion, 0x3000);
        //
        base.Launch(checkOthers);
        // Create control points in runtime.
        Transform trackingSpace = VRContext.GetAnchor(VRNode.TrackingSpace);

        for (int i = 0; i < 3; ++i)
        {
            if (docks[i] != null)
            {
                GameObject go   = Instantiate(docks[i]);
                Transform  t    = docks[i].transform;
                Transform  newT = go.transform;
                //
                go.name = docks[i].name;

                newT.SetParent(trackingSpace);
                newT.localPosition = t.localPosition;
                newT.localRotation = t.localRotation;
                newT.localScale    = t.localScale;
                //
                docks[i] = go;
            }
        }
        // Initialize play area.
        m_PlayAreaRenderer = docks[2].GetComponentInChildren <PlayAreaRenderer>();
        if (m_PlayAreaRenderer != null)
        {
            m_PlayArea    = m_PlayAreaRenderer.transform;
            m_BoundaryPtr = NativeMethods.Boundary_Alloc(-1, 4, -2.0f, 2.0f);
            for (int i = 0, imax = m_PlayAreaRenderer.corners.Length; i < imax; ++i)
            {
                NativeMethods.Boundary_SetCorner(m_BoundaryPtr, i,
                                                 m_PlayAreaRenderer.corners[i].x, -m_PlayAreaRenderer.corners[i].z
                                                 );
            }
        }
        //
        Transform head = VRContext.GetAnchor(VRNode.Head);

        if (head != null)
        {
            TrackedHead trackedHead = head.GetComponent <TrackedHead>();
            if (trackedHead != null)
            {
                trackedHead.markTransform.localPosition =
                    head.InverseTransformPoint(anchor.position);
            }
        }
    }
Exemple #2
0
 protected virtual void DrawPlayAreaFeature()
 {
     EditorGUILayout.LabelField("Play Area", m_HeaderStyle);
     EditorGUI.BeginChangeCheck();
     if (DrawToggle("Enabled", "PlayArea.enabled", true))
     {
         //
         BeginGroup();
         PlayAreaRenderer prefab = null;
         GameObject       go     = PlayerPrefsEx.GetObject("PlayAreaRenderer") as GameObject;
         if (go == null)
         {
             go = EditorGUILayout.ObjectField("Prefab", null, typeof(GameObject), true) as GameObject;
             if (go == null)
             {
                 EndGroup();
                 return;
             }
             else
             {
                 PlayerPrefsEx.SetObject("PlayAreaRenderer", go);
             }
         }
         if (go != null)
         {
             prefab = go.GetComponent <PlayAreaRenderer>();
         }
         if (prefab == null)
         {
             EndGroup();
             return;
         }
         //
         DrawToggle("Show Camera Model", "PlayArea.showCameraModel", true);
         //EditorGUILayout.HelpBox("",MessageType.Info);
         DrawSlider("Warning Distance", "PlayArea.warningDistance", 0.5f, 0.01f, 1.0f);
         if (DrawToggle("Draw Ground", "PlayArea.drawGround", true))
         {
             if (EditorGUI.EndChangeCheck())
             {
                 EditorUtility.SetDirty(m_PlayerPrefsEx);
             }
             BeginGroup();
             EditorGUI.BeginChangeCheck();
             prefab.groundColor     = EditorGUILayout.ColorField("Color", prefab.groundColor);
             prefab.borderThickness = EditorGUILayout.Slider("Thickness", prefab.borderThickness, 0.01f, 1.0f);
             if (EditorGUI.EndChangeCheck())
             {
                 EditorUtility.SetDirty(prefab);
             }
             EndGroup();
         }
         else
         {
             if (EditorGUI.EndChangeCheck())
             {
                 EditorUtility.SetDirty(m_PlayerPrefsEx);
             }
         }
         EditorGUI.BeginChangeCheck();
         if (DrawToggle("Draw Wall", "PlayArea.drawWall", true))
         {
             if (EditorGUI.EndChangeCheck())
             {
                 EditorUtility.SetDirty(m_PlayerPrefsEx);
             }
             BeginGroup();
             EditorGUI.BeginChangeCheck();
             prefab.wallColor = EditorGUILayout.ColorField("Color", prefab.wallColor);
             prefab.thickness = EditorGUILayout.Slider("Thickness", prefab.thickness, 0.001f, 1.0f);
             prefab.cellSize  = EditorGUILayout.Slider("Cell Size", prefab.cellSize, 0.01f, 1.0f);
             prefab.emptySize = EditorGUILayout.Slider("Empty Size", prefab.emptySize, 0.01f, 1.0f);
             prefab.height    = EditorGUILayout.Slider("Height", prefab.height, 1.0f, 3.0f);
             if (EditorGUI.EndChangeCheck())
             {
                 EditorUtility.SetDirty(prefab);
             }
             EndGroup();
         }
         EditorGUI.BeginChangeCheck();
         if (DrawToggle("Draw Plane", "PlayArea.drawPlane", true))
         {
             if (EditorGUI.EndChangeCheck())
             {
                 EditorUtility.SetDirty(m_PlayerPrefsEx);
             }
             BeginGroup();
             EditorGUI.BeginChangeCheck();
             prefab.planeColor = EditorGUILayout.ColorField("Color", prefab.planeColor);
             if (EditorGUI.EndChangeCheck())
             {
                 EditorUtility.SetDirty(prefab);
             }
             EndGroup();
         }
         EndGroup();
     }
 }
Exemple #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();
    }
Exemple #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();
    }