Exemplo n.º 1
0
        protected virtual void OnGUI()
        {
            var resourcePath = GetResourcePath();

#if !(UNITY_5_0)
            var logo = AssetDatabase.LoadAssetAtPath <Texture2D>(resourcePath + "GameAssets/Textures/ui_xim_logo_01.png");
#else
            var logo = Resources.LoadAssetAtPath <Texture2D>(resourcePath + "GameAssets/Textures/ui_xim_logo_01.png");
#endif
            EditorGUILayout.Space();
            var rect = GUILayoutUtility.GetRect(position.width, 40, GUI.skin.box);
            if (logo)
            {
                GUI.DrawTexture(rect, logo, ScaleMode.ScaleToFit);
            }
            EditorGUILayout.Space();
            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("User Manual"))
            {
                Application.OpenURL("https://github.com/Ximmerse/SDK");
            }
            if (GUILayout.Button("API Reference"))
            {
                Application.OpenURL("https://github.com/Ximmerse/SDK/tree/master/Unity");
            }
            if (GUILayout.Button("FAQ"))
            {
                Application.OpenURL("https://github.com/Ximmerse/SDK/blob/master/Document/DK04/FAQ_EN.md");
            }
            //if(GUILayout.Button("Get Help")) {
            //}
            //if(GUILayout.Button("Check for Updates")) {
            //}
            EditorGUILayout.EndHorizontal();
            //
            if (m_PlayerPrefsEx == null)
            {
                m_PlayerPrefsEx = Resources.Load <PlayerPrefsEx>("PlayerPrefsEx-Default");
                PlayerPrefsEx.Load(m_PlayerPrefsEx);
            }
            if (m_PlayerPrefsEx == null)
            {
                return;
            }
            //
            m_ScrollPosition = EditorGUILayout.BeginScrollView(m_ScrollPosition);
            //
            DrawSeparator();
            EditorGUI.BeginChangeCheck();
            EditorGUILayout.LabelField("Devices", m_HeaderStyle);
            BeginGroup();
            EditorGUILayout.BeginHorizontal();
            string vrFamily = "Unknown";
            //
            if (s_VRDeviceTypeNames == null)
            {
                BuildVRDeviceTypes();
            }
            if (s_VRDeviceTypeNames.Length > 1)
            {
                int vrOldId = GetVRDeviceTypeIndex();
                int vrNewId = EditorGUILayout.Popup("VR Device", vrOldId, s_VRDeviceTypeNames);
                vrFamily = s_VRDeviceTypeNames[vrNewId];
                if (vrOldId != vrNewId)
                {
                    SetVRDeviceTypeIndex(vrNewId);
                }
                //
                if (GUILayout.Button("Select", GUILayout.Width(56f)))
                {
                    if (s_VRDeviceTypeSources[vrNewId] != null)
                    {
                        Selection.objects = new Object[1] {
                            s_VRDeviceTypeSources[vrNewId].gameObject
                        };
                    }
                }
                if (GUILayout.Button("Refresh", GUILayout.Width(56f)))
                {
                    BuildVRDeviceTypes();
                }
            }
            else
            {
                EditorGUILayout.LabelField("VR Device", GUILayout.Width(146f));
                if (GUILayout.Button("Refresh"))
                {
                    BuildVRDeviceTypes();
                }
            }
            EditorGUILayout.EndHorizontal();
            if (vrFamily != "Unknown")
            {
                BeginGroup();
                if (DrawToggle("Use Fade", "VRDevice.useFade", true))
                {
                    DrawColorField("Fade Color", "VRDevice.fadeColor", Color.black);
                    DrawSlider("Fade Time", "VRDevice.fadeTime", 2.0f, 0f, 5f);
                }
                if (DrawToggle("Use Reticle", "VRDevice.useReticle", true))
                {
                    DrawObjectField <Object>("Reticle Object", "VRDevice.reticleObject", null);
                }
                if (DrawToggle("Fade On Bad Tracking", "VRDevice.forceFadeOnBadTracking", false))
                {
                    BeginGroup();
                    DrawColorField("Fade Color", "VRDevice.badFadeColor", new Color(.305882365f, .352941185f, .392156899f, 1.0f));
                    DrawSlider("Fade Time", "VRDevice.badFadeTime", 0.5f, 0f, 5f);
                    EndGroup();
                }
                EndGroup();
            }
            switch (DrawIntPopup("Ximmerse Device", "XimmerseDevice.type", 0x4000, s_XimmerseDeviceTypeNames, s_XimmerseDeviceTypeValues))
            {
            case 0x1010:
                EndGroup();
                DrawSeparator();
                EditorGUILayout.LabelField("Arm Model", m_HeaderStyle);
                BeginGroup();
                DrawVector3Field("Shoulder Position", "ArmModel.shoulderPosition", new Vector3(0.19f, -0.19f, -0.03f));
                DrawVector3Field("Elbow Position", "ArmModel.elbowPosition", new Vector3(0.195f, -0.5f, -0.075f));
                DrawVector3Field("Wrist Position", "ArmModel.wristPosition", new Vector3(0.0f, 0.0f, 0.25f));
                DrawVector3Field("Pointer Position", "ArmModel.pointerPosition", new Vector3(0.0f, -0.009f, 0.099f));
                EndGroup();
                break;

            case 0x3200:
                BeginGroup();
                DrawToggle("Fix Shake(Experimental)", "XimmerseTracker[Inside-out].fixShake", false);
                DrawSlider("M2P Latency", "XimmerseTracker[Inside-out].m2pLatency", 0.0f, 0.0f, 1.0f);
                EndGroup();
                EndGroup();
                break;

            case 0x4000:
                BeginGroup();
                DrawVector3Field("Position", "XimmerseTracker[Outside-in].position", new Vector3(0, 1.675f, 1.5f));
                DrawVector3Field("Rotation", "XimmerseTracker[Outside-in].rotation", new Vector3(15f, 0, 0));
                EndGroup();
                EndGroup();
                break;

            default:
                EndGroup();
                break;
            }
            if (EditorGUI.EndChangeCheck())
            {
                EditorUtility.SetDirty(m_PlayerPrefsEx);
            }
            //
            if (hasPlayAreaFeature)
            {
                DrawSeparator();
                DrawPlayAreaFeature();
            }
            //
            DrawSeparator();
            EditorGUI.BeginChangeCheck();
            EditorGUILayout.LabelField("Debug*", m_HeaderStyle);
            BeginGroup();
            DrawEnumPopup <InputSystem.LOGLevel>("Log Level", "xdevice.logLevel", (int)InputSystem.LOGLevel.LOG_DEBUG);
            bool oldValue = PlayerPrefsEx.GetBool("xdevice.noServicesInAndroid", false);
            bool newValue = DrawToggle("No Services In Android", "xdevice.noServicesInAndroid", false);
            if (!oldValue && newValue)
            {
                //
                Debug.Log("Please edit \"Assets\\Plugins\\Android\\AndroidManifest.xml\" manually.");
            }
            EndGroup();
            if (EditorGUI.EndChangeCheck())
            {
                EditorUtility.SetDirty(m_PlayerPrefsEx);
            }
            //
            EditorGUILayout.EndScrollView();
        }
Exemplo n.º 2
0
        protected virtual void OnGUI()
        {
            var resourcePath = GetResourcePath();

#if !(UNITY_5_0)
            var logo = AssetDatabase.LoadAssetAtPath <Texture2D>(resourcePath + "GameAssets/Textures/ui_xim_logo_01.png");
#else
            var logo = Resources.LoadAssetAtPath <Texture2D>(resourcePath + "GameAssets/Textures/ui_xim_logo_01.png");
#endif
            EditorGUILayout.Space();
            var rect = GUILayoutUtility.GetRect(position.width, 40, GUI.skin.box);
            if (logo)
            {
                GUI.DrawTexture(rect, logo, ScaleMode.ScaleToFit);
            }
            EditorGUILayout.Space();
            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("User Manual"))
            {
                Application.OpenURL("https://ximmerse.github.io/SDK_Doc/hardwareguide/");
            }
            if (GUILayout.Button("API Reference"))
            {
                Application.OpenURL("https://ximmerse.github.io/SDK_Doc/unityapidoc/");
            }
            if (GUILayout.Button("FAQ"))
            {
                Application.OpenURL("https://ximmerse.github.io/SDK_Doc/faq/");
            }
            //if(GUILayout.Button("Get Help")) {
            //}
            //if(GUILayout.Button("Check for Updates")) {
            //}
            EditorGUILayout.EndHorizontal();
            //
            if (m_PlayerPrefsEx == null)
            {
                m_PlayerPrefsEx = Resources.Load <PlayerPrefsEx>("PlayerPrefsEx-Default");
                PlayerPrefsEx.Load(m_PlayerPrefsEx);
            }
            if (m_PlayerPrefsEx == null)
            {
                return;
            }
            //
            m_ScrollPosition = EditorGUILayout.BeginScrollView(m_ScrollPosition);
            //
            DrawSeparator();
            EditorGUI.BeginChangeCheck();
            EditorGUILayout.LabelField("Devices", m_HeaderStyle);
            BeginGroup();
            EditorGUILayout.BeginHorizontal();
            string vrFamily = "Unknown";
            //
            if (s_VRDeviceTypeNames == null)
            {
                BuildVRDeviceTypes();
            }
            if (s_VRDeviceTypeNames.Length > 1)
            {
                int vrOldId = GetVRDeviceTypeIndex();
                int vrNewId = EditorGUILayout.Popup("VR Device", vrOldId, s_VRDeviceTypeNames);
                vrFamily = s_VRDeviceTypeNames[vrNewId];
                if (vrOldId != vrNewId)
                {
                    SetVRDeviceTypeIndex(vrNewId);
                }
                //
                if (GUILayout.Button("Select", GUILayout.Width(56f)))
                {
                    if (s_VRDeviceTypeSources[vrNewId] != null)
                    {
                        Selection.objects = new Object[1] {
                            s_VRDeviceTypeSources[vrNewId].gameObject
                        };
                    }
                }
                if (GUILayout.Button("Refresh", GUILayout.Width(56f)))
                {
                    BuildVRDeviceTypes();
                }
            }
            else
            {
                EditorGUILayout.LabelField("VR Device", GUILayout.Width(146f));
                if (GUILayout.Button("Refresh"))
                {
                    BuildVRDeviceTypes();
                }
            }
            EditorGUILayout.EndHorizontal();
            if (vrFamily != "Unknown")
            {
                BeginGroup();
                if (DrawToggle("Use Fade", "VRDevice.useFade", true))
                {
                    DrawColorField("Fade Color", "VRDevice.fadeColor", Color.black);
                    DrawSlider("Fade Time", "VRDevice.fadeTime", 2.0f, 0f, 5f);
                }
                if (DrawToggle("Use Reticle", "VRDevice.useReticle", true))
                {
                    DrawObjectField <Object>("Reticle Object", "VRDevice.reticleObject", null);
                }
                if (DrawToggle("Fade On Bad Tracking", "VRDevice.forceFadeOnBadTracking", false))
                {
                    BeginGroup();
                    DrawColorField("Fade Color", "VRDevice.badFadeColor", new Color(.305882365f, .352941185f, .392156899f, 1.0f));
                    DrawSlider("Fade Time", "VRDevice.badFadeTime", 0.5f, 0f, 5f);
                    EndGroup();
                }
                EndGroup();
            }
            switch (DrawIntPopup("Ximmerse Device", "XimmerseDevice.type", 0x4000, s_XimmerseDeviceTypeNames, s_XimmerseDeviceTypeValues))
            {
            case 0x1010:
                EndGroup();
                DrawSeparator();
                EditorGUILayout.LabelField("Daydream Controller", m_HeaderStyle);
                BeginGroup();
                EditorGUILayout.LabelField("Left Hand");
                BeginGroup();
                DrawVector3Field("Position", "Daydream.leftHand.position", new Vector3(-0.2f, -0.5f, 0.0f));
                DrawSlider("Length", "Daydream.leftHand.length", 0.0f, 0.0f, 1.0f);
                EndGroup();
                EditorGUILayout.LabelField("Right Hand");
                BeginGroup();
                DrawVector3Field("Position", "Daydream.rightHand.position", new Vector3(0.2f, -0.5f, 0.0f));
                DrawSlider("Length", "Daydream.rightHand.length", 0.0f, 0.0f, 1.0f);
                EndGroup();
                EndGroup();
                break;

            case 0x3000:
            case 0x3100:
            case 0x3200:
                BeginGroup();
                DrawToggle("Fix Shake(Experimental)", "XimmerseTracker[Inside-out].fixShake", false);
                DrawSlider("M2P Latency", "XimmerseTracker[Inside-out].m2pLatency", 0.0f, 0.0f, 1.0f);
                EndGroup();
                EndGroup();
                break;

            case 0x4000:
                BeginGroup();
                DrawVector3Field("Position", "XimmerseTracker[Outside-in].position", new Vector3(0, 1.675f, 1.5f));
                DrawVector3Field("Rotation", "XimmerseTracker[Outside-in].rotation", new Vector3(15f, 0, 0));
                EndGroup();
                EndGroup();
                break;

            default:
                EndGroup();
                break;
            }
            if (EditorGUI.EndChangeCheck())
            {
                EditorUtility.SetDirty(m_PlayerPrefsEx);
            }
            //
            if (hasPlayAreaFeature)
            {
                DrawSeparator();
                DrawPlayAreaFeature();
            }
            //
            DrawSeparator();
            EditorGUI.BeginChangeCheck();
            EditorGUILayout.LabelField("Misc", m_HeaderStyle);
            BeginGroup();
            DrawToggle("Show [Device Stats]", "UINotification-DeviceDashboard.enabled", true);
            if (DrawToggle("Show [Out Of Range]", "UINotification-OutOfRange.enabled", true))
            {
                BeginGroup();
                DrawObjectField <GameObject>("Hmd", "UINotification-OutOfRange-Hmd", null);
                DrawObjectField <GameObject>("LeftController", "UINotification-OutOfRange-LeftController", null);
                DrawObjectField <GameObject>("RightController", "UINotification-OutOfRange-RightController", null);
                EndGroup();
            }
            EndGroup();
            if (EditorGUI.EndChangeCheck())
            {
                EditorUtility.SetDirty(m_PlayerPrefsEx);
            }
            //
            EditorGUILayout.EndScrollView();
        }