コード例 #1
0
ファイル: DemoController.cs プロジェクト: ilully0802/HXVR
    void Start()
    {
        msg = GameObject.Find("MassageInfo");
        InitDelegate();
        callback = new Callback();

        picoVrManager = GameObject.Find("Pvr_UnitySDK").GetComponent <Pvr_UnitySDKManager>();
        InputPanel.SetActive(false);
    }
コード例 #2
0
 void OnDestroy()
 {
     if (sdk == this)
     {
         sdk = null;
     }
     RenderTexture.active = null;
     Resources.UnloadUnusedAssets();
     System.GC.Collect();
 }
コード例 #3
0
 void OnDestroy()
 {
     if (sdk == this)
     {
         sdk = null;
     }
     RenderTexture.active = null;
     Resources.UnloadUnusedAssets();
     System.GC.Collect();
     Pvr_ControllerManager.ControllerStatusChangeEvent -= CheckControllerStateForG2;
 }
コード例 #4
0
 private void OnEnable()
 {
     if (sdk == null)
     {
         sdk = this;
     }
     else
     {
         if (sdk != this)
         {
             sdk = this;
         }
     }
 }
コード例 #5
0
    /*************************************  Unity API ****************************************/
    #region Unity API

    void Awake()
    {
        Application.targetFrameRate = 60;
        if (sdk == null)
        {
            sdk = this;
        }
        if (sdk != this)
        {
            Debug.LogError("SDK object should be a singleton.");
            enabled = false;
            return;
        }
        if (SDKManagerInit())
        {
            Debug.Log("SDK Init success.");
        }
        else
        {
            Debug.LogError("SDK Init Failed.");
            Application.Quit();
        }
    }
コード例 #6
0
    public override void OnInspectorGUI()
    {
        GUI.changed = false;

        GUIStyle firstLevelStyle = new GUIStyle(GUI.skin.label);

        firstLevelStyle.alignment = TextAnchor.UpperLeft;
        firstLevelStyle.fontStyle = FontStyle.Bold;
        firstLevelStyle.fontSize  = 12;
        firstLevelStyle.wordWrap  = true;

        Pvr_UnitySDKManager manager = (Pvr_UnitySDKManager)target;

        GUILayout.Space(10);
        EditorGUILayout.LabelField("Current Build Platform", firstLevelStyle);
        EditorGUILayout.LabelField(EditorUserBuildSettings.activeBuildTarget.ToString());
        GUILayout.Space(10);

        EditorGUILayout.LabelField("RenderTexture Setting", firstLevelStyle);
        manager.RtAntiAlising = (RenderTextureAntiAliasing)EditorGUILayout.EnumPopup("RenderTexture Anti-Aliasing", manager.RtAntiAlising);
#if UNITY_2018_3_OR_NEWER
        GUI.enabled = false;
#endif
        manager.RtBitDepth = (RenderTextureDepth)EditorGUILayout.EnumPopup("RenderTexture Bit Depth", manager.RtBitDepth);
        manager.RtFormat   = (RenderTextureFormat)EditorGUILayout.EnumPopup("RenderTexture Format", manager.RtFormat);
#if UNITY_2018_3_OR_NEWER
        GUI.enabled = true;
#endif
        manager.DefaultRenderTexture = EditorGUILayout.Toggle("Use Default RenderTexture", manager.DefaultRenderTexture);
        if (!manager.DefaultRenderTexture)
        {
            manager.RtSize = EditorGUILayout.Vector2Field("    RT Size", manager.RtSize);
            EditorGUILayout.BeginVertical("box");
            EditorGUILayout.LabelField("Note:", firstLevelStyle);
            EditorGUILayout.LabelField("1.width & height must be larger than 0;");
            EditorGUILayout.LabelField("2.the size of RT has a great influence on performance;");
            EditorGUILayout.EndVertical();
        }

        GUILayout.Space(10);
        EditorGUILayout.LabelField("Pose Settings", firstLevelStyle);
        manager.TrackingOrigin = (TrackingOrigin)EditorGUILayout.EnumPopup("Tracking Origin", manager.TrackingOrigin);
        manager.Rotfoldout     = EditorGUILayout.Foldout(manager.Rotfoldout, "Only Rotation Tracking");
        if (manager.Rotfoldout)
        {
            manager.HmdOnlyrot = EditorGUILayout.Toggle("  Only HMD Rotation Tracking", manager.HmdOnlyrot);
            if (manager.HmdOnlyrot)
            {
                manager.PVRNeck = EditorGUILayout.Toggle("    Enable Neck Model", manager.PVRNeck);
                if (manager.PVRNeck)
                {
                    manager.UseCustomNeckPara = EditorGUILayout.Toggle("Use Custom Neck Parameters", manager.UseCustomNeckPara);
                    if (manager.UseCustomNeckPara)
                    {
                        manager.neckOffset = EditorGUILayout.Vector3Field("Neck Offset", manager.neckOffset);
                    }
                }
            }
            else
            {
                manager.PVRNeck = false;
            }
            manager.ControllerOnlyrot =
                EditorGUILayout.Toggle("  Only Controller Rotation Tracking", manager.ControllerOnlyrot);
        }
        else
        {
            manager.HmdOnlyrot        = false;
            manager.ControllerOnlyrot = false;
        }

        manager.MovingRatios   = EditorGUILayout.FloatField("Position ScaleFactor", manager.MovingRatios);
        manager.SixDofPosReset = EditorGUILayout.Toggle("Enable 6Dof Position Reset", manager.SixDofPosReset);

        manager.DefaultRange = EditorGUILayout.Toggle("Use Default Safe Radius", manager.DefaultRange);
        if (!manager.DefaultRange)
        {
            manager.CustomRange = EditorGUILayout.FloatField("    Safe Radius(meters)", manager.CustomRange);
        }

        GUILayout.Space(10);
        EditorGUILayout.LabelField("Other Settings", firstLevelStyle);
        manager.ShowFPS       = EditorGUILayout.Toggle("Show FPS", manager.ShowFPS);
        manager.ShowSafePanel = EditorGUILayout.Toggle("Show SafePanel", manager.ShowSafePanel);
        manager.ScreenFade    = EditorGUILayout.Toggle("Open Screen Fade", manager.ScreenFade);
        manager.DefaultFPS    = EditorGUILayout.Toggle("Use Default FPS", manager.DefaultFPS);
        if (!manager.DefaultFPS)
        {
            manager.CustomFPS = EditorGUILayout.IntField("    FPS", manager.CustomFPS);
        }
        manager.Monoscopic          = EditorGUILayout.Toggle("Use Monoscopic", manager.Monoscopic);
        manager.Copyrightprotection = EditorGUILayout.Toggle("Copyright protection", manager.Copyrightprotection);
        if (GUI.changed)
        {
            QulityRtMass = (int)Pvr_UnitySDKManager.SDK.RtAntiAlising;
            if (QulityRtMass == 1)
            {
                QulityRtMass = 0;
            }
            if (MSAAChange != null)
            {
                MSAAChange(QulityRtMass);
            }
            var headDof = Pvr_UnitySDKManager.SDK.HmdOnlyrot ? 0 : 1;
            if (HeadDofChangedEvent != null)
            {
                if (headDof == 0)
                {
                    HeadDofChangedEvent("3dof");
                }
                else
                {
                    HeadDofChangedEvent("6dof");
                }
            }
            EditorUtility.SetDirty(manager);
#if !UNITY_5_2
            UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEngine.SceneManagement.SceneManager
                                                                          .GetActiveScene());
#endif
        }

        serializedObject.ApplyModifiedProperties();
    }
コード例 #7
0
    public override void OnInspectorGUI()
    {
        GUI.changed = false;

        //GUI style 设置
        GUIStyle firstLevelStyle = new GUIStyle(GUI.skin.label);

        firstLevelStyle.alignment = TextAnchor.UpperLeft;
        firstLevelStyle.fontStyle = FontStyle.Bold;
        firstLevelStyle.fontSize  = 12;
        firstLevelStyle.wordWrap  = true;

        //inspector 所在 target
        Pvr_UnitySDKManager manager = (Pvr_UnitySDKManager)target;

        //一级分层标题 1
        GUILayout.Space(10);
        EditorGUILayout.LabelField("ConfigFile Setting", firstLevelStyle);
        EditorGUILayout.LabelField("Current Build Target : " + EditorUserBuildSettings.activeBuildTarget.ToString() + "\n", firstLevelStyle);
        GUILayout.Space(10);

        //一级分层标题 2
        GUILayout.Space(10);
        EditorGUILayout.LabelField("Render Texture Setting", firstLevelStyle);
        GUILayout.Space(10);

        manager.RtAntiAlising = (RenderTextureAntiAliasing)EditorGUILayout.EnumPopup("Render Texture Anti-Aliasing ", manager.RtAntiAlising);
        manager.RtBitDepth    = (RenderTextureDepth)EditorGUILayout.EnumPopup("Render Texture Bit Depth   ", manager.RtBitDepth);
        manager.RtFormat      = (RenderTextureFormat)EditorGUILayout.EnumPopup("Render Texture Format", manager.RtFormat);

        manager.RtSizeWH = EditorGUILayout.FloatField("Render Texture Size", manager.RtSizeWH);


        //一级分层标题 1
        GUILayout.Space(10);
        EditorGUILayout.LabelField("Show FPS", firstLevelStyle);
        GUILayout.Space(10);
        manager.ShowFPS = EditorGUILayout.Toggle("Show FPS in Scene", manager.ShowFPS);
        GUILayout.Space(10);

        GUILayout.Space(10);
        EditorGUILayout.LabelField("Show SafePanel", firstLevelStyle);
        GUILayout.Space(10);
        manager.ShowSafePanel = EditorGUILayout.Toggle("Show SafePanel", manager.ShowSafePanel);
        GUILayout.Space(10);

        GUILayout.Space(10);
        EditorGUILayout.LabelField("Screen Fade", firstLevelStyle);
        GUILayout.Space(10);
        manager.ScreenFade = EditorGUILayout.Toggle("Screen Fade", manager.ScreenFade);
        GUILayout.Space(10);


        GUILayout.Space(10);
        EditorGUILayout.LabelField("Head Pose", firstLevelStyle);
        manager.HeadDofNum = (HeadDofNum)EditorGUILayout.EnumPopup(manager.HeadDofNum);
        GUILayout.Space(10);
        EditorGUILayout.LabelField("Hand Pose", firstLevelStyle);
        manager.HandDofNum = (HandDofNum)EditorGUILayout.EnumPopup(manager.HandDofNum);
        GUILayout.Space(10);
        EditorGUILayout.LabelField("Controller Num", firstLevelStyle);
        manager.HandNum = (HandNum)EditorGUILayout.EnumPopup(manager.HandNum);

        GUILayout.Space(10);
        EditorGUILayout.LabelField("6Dof Position Reset", firstLevelStyle);
        GUILayout.Space(10);
        manager.SixDofRecenter = EditorGUILayout.Toggle("Enable 6Dof Position Reset", manager.SixDofRecenter);
        GUILayout.Space(10);

        GUILayout.Space(10);
        EditorGUILayout.LabelField("Use Default Range", firstLevelStyle);
        GUILayout.Space(10);
        manager.DefaultRange = EditorGUILayout.Toggle("Use Default Range", manager.DefaultRange);
        GUILayout.Space(10);

        if (!manager.DefaultRange)
        {
            GUILayout.Space(10);
            EditorGUILayout.LabelField("Custom Range", firstLevelStyle);
            GUILayout.Space(10);
            manager.CustomRange = EditorGUILayout.FloatField("Range", manager.CustomRange);
            GUILayout.Space(10);
        }

        GUILayout.Space(10);
        EditorGUILayout.LabelField("Moving Ratios", firstLevelStyle);
        GUILayout.Space(10);
        manager.MovingRatios = EditorGUILayout.FloatField("Ratios", manager.MovingRatios);
        GUILayout.Space(10);

        if (GUI.changed)
        {
            EditorUtility.SetDirty(manager);
        }

        // 保存序列化数据,否则会出现设置数据丢失情况
        serializedObject.ApplyModifiedProperties();
    }
コード例 #8
0
    /*************************************  Unity API ****************************************/
    #region Unity API

    void Awake()
    {
        PLOG.getConfigTraceLevel();
#if !UNITY_EDITOR && UNITY_ANDROID
        isViewerLogicFlow = ViewerLogicFlow();
        Debug.Log("viewer :" + isViewerLogicFlow.ToString());
        if (isViewerLogicFlow)
        {
            HeadDofNum = HeadDofNum.ThreeDof;
            HandDofNum = HandDofNum.ThreeDof;
        }
        else
        {
            int enumindex = (int)GlobalIntConfigs.TRACKING_MODE;
            Render.UPvr_GetIntConfig(enumindex, ref trackingmode);
            LoadIsPUIValue();
            if (isPUI)
            {
                if (trackingmode == 1 || trackingmode == 0)
                {
                    HeadDofNum = HeadDofNum.ThreeDof;
                    HandDofNum = HandDofNum.ThreeDof;
                }
            }
        }
#endif
        Application.targetFrameRate = 61;
#if !UNITY_EDITOR && UNITY_ANDROID
        int fps  = -1;
        int rate = (int)GlobalIntConfigs.TARGET_FRAME_RATE;
        Render.UPvr_GetIntConfig(rate, ref fps);
        float ffps  = 0.0f;
        int   frame = (int)GlobalFloatConfigs.DISPLAY_REFRESH_RATE;
        Render.UPvr_GetFloatConfig(frame, ref ffps);
        Application.targetFrameRate = fps > 0 ? fps : (int)ffps;
#endif

#if !UNITY_EDITOR && UNITY_ANDROID
        float neckx  = 0.0f;
        float necky  = 0.0f;
        float neckz  = 0.0f;
        int   modelx = (int)GlobalFloatConfigs.NECK_MODEL_X;
        int   modely = (int)GlobalFloatConfigs.NECK_MODEL_Y;
        int   modelz = (int)GlobalFloatConfigs.NECK_MODEL_Z;
        Render.UPvr_GetFloatConfig(modelx, ref neckx);
        Render.UPvr_GetFloatConfig(modely, ref necky);
        Render.UPvr_GetFloatConfig(modelz, ref neckz);
        if (neckx != 0.0f || necky != 0.0f || neckz != 0.0f)
        {
            neckOffset = new Vector3(neckx, necky, neckz);
        }
#endif
        var controllermanager = FindObjectOfType <Pvr_ControllerManager>();
        isHasController = controllermanager != null;
        if (sdk == null)
        {
            sdk = this;
        }
        if (sdk != this)
        {
            Debug.LogError("SDK object should be a singleton.");
            enabled = false;
            return;
        }
        if (SDKManagerInit())
        {
            Debug.Log("SDK Init success.");
        }
        else
        {
            Debug.LogError("SDK Init Failed.");
            Application.Quit();
        }

        SDKManagerInitFPS();

        safeArea   = transform.Find("SafeArea2").gameObject;
        safeToast  = transform.Find("SafeToast").gameObject;
        resetPanel = transform.Find("ResetPanel").gameObject;
        safePanel1 = transform.Find("SafePanel1").gameObject;
        safePanel2 = transform.Find("SafePanel2").gameObject;
        if (isViewerLogicFlow)
        {
            // Viewer battery
            InitViewerBatteryVolClass();
            ViewerToast = transform.Find("Head").Find("Viewertoast").gameObject;;
            if (safeArea != null)
            {
                DestroyObject(safeArea);
            }
            if (safeToast != null)
            {
                DestroyObject(safeToast);
            }
            if (resetPanel != null)
            {
                DestroyObject(resetPanel);
            }
            if (safePanel1 != null)
            {
                DestroyObject(safePanel1);
            }
            if (safePanel2 != null)
            {
                DestroyObject(safePanel2);
            }
        }
        else
        {
            if (Application.systemLanguage != SystemLanguage.Chinese && Application.systemLanguage != SystemLanguage.ChineseSimplified)
            {
                safeToast.transform.Find("Panel/title").GetComponent <Text>().text = "You have left the safe zone";
                safeToast.transform.Find("Panel/Text").GetComponent <Text>().text  = "Please take off your headset and return to the safe zone,or hold down the Home key of headset to rebuild a safe zone.";
                safeToast.transform.Find("Panel/Image").localPosition = new Vector3(15, -91, 0);
                safeToast.transform.Find("Panel/Text").GetComponent <RectTransform>().sizeDelta = new Vector2(370, 250);
                safeToast.transform.Find("Panel/Text").localPosition = new Vector3(15, -2, 0);
                safeToast.transform.Find("Panel/Text").GetComponent <Text>().lineSpacing        = 0.8f;
                resetPanel.transform.Find("Panel/resetbtn/Text").GetComponent <Text>().text     = "Continue";
                safePanel1.transform.Find("Panel/startgameBtn/Text").GetComponent <Text>().text = "Continue";
                safePanel2.transform.Find("Panel/Title").GetComponent <Text>().text             = "Warning";
                safePanel2.transform.Find("Panel/toast2").GetComponent <Text>().text            = "This device does not support this applications";
                safePanel2.transform.Find("Panel/forcequitBtn/Text").GetComponent <Text>().text = "Quit";
                safePanel1.transform.Find("Panel/Image").localPosition = new Vector3(0, -49, 0);
                safePanel1.transform.Find("Panel/toast1").GetComponent <RectTransform>().sizeDelta = new Vector2(370, 170);
                safePanel1.transform.Find("Panel/toast1").localPosition = new Vector3(13, 93, 0);
                safePanel1.transform.Find("Panel/toast1").GetComponent <Text>().lineSpacing = 0.8f;
                resetPanel.transform.Find("Panel/Image").localPosition = new Vector3(0, -53, 0);
                resetPanel.transform.Find("Panel/toast").GetComponent <RectTransform>().sizeDelta = new Vector2(370, 170);
                resetPanel.transform.Find("Panel/toast").localPosition = new Vector3(16, 88, 0);
                resetPanel.transform.Find("Panel/toast").GetComponent <Text>().lineSpacing = 0.8f;
                if (DefaultRange)
                {
                    resetPanel.transform.Find("Panel/toast").GetComponent <Text>().text =
                        "Please take off your headset and ensure that there are no obstacles within a radius of 0.8 meters,then press Continue";
                    safePanel1.transform.Find("Panel/toast1").GetComponent <Text>().text =
                        "Please take off your headset and ensure that there are no obstacles within a radius of 0.8 meters,then press Continue";
                }
                else
                {
                    resetPanel.transform.Find("Panel/toast").GetComponent <Text>().text =
                        "Please take off your headset and ensure that there are no obstacles within a radius of" + CustomRange + "meters,then press Continue";
                    safePanel1.transform.Find("Panel/toast1").GetComponent <Text>().text =
                        "Please take off your headset and ensure that there are no obstacles within a radius of" + CustomRange + "meters,then press Continue";
                }
            }
#if !UNITY_EDITOR && UNITY_ANDROID
            if (HeadDofNum == HeadDofNum.SixDof || HandDofNum == HandDofNum.SixDof)
            {
                if (trackingmode == 1 || trackingmode == 0)
                {
                    safePanel2.SetActive(true);
                }
            }
            if (HeadDofNum == HeadDofNum.SixDof)
            {
                if (Sensor.Pvr_IsHead6dofReset() && ShowSafePanel)
                {
                    safePanel1.SetActive(true);
                }
            }
#endif
        }
    }
コード例 #9
0
    public override void OnInspectorGUI()
    {
        GUI.changed = false;

        GUIStyle firstLevelStyle = new GUIStyle(GUI.skin.label);

        firstLevelStyle.alignment = TextAnchor.UpperLeft;
        firstLevelStyle.fontStyle = FontStyle.Bold;
        firstLevelStyle.fontSize  = 12;
        firstLevelStyle.wordWrap  = true;

        var guiContent = new GUIContent();

        Pvr_UnitySDKManager        manager       = (Pvr_UnitySDKManager)target;
        Pvr_UnitySDKProjectSetting projectConfig = Pvr_UnitySDKProjectSetting.GetProjectConfig();

        GUILayout.Space(10);
        EditorGUILayout.LabelField("Current Build Platform", firstLevelStyle);
        EditorGUILayout.LabelField(EditorUserBuildSettings.activeBuildTarget.ToString());
        GUILayout.Space(10);

        EditorGUILayout.LabelField("RenderTexture Setting", firstLevelStyle);
        projectConfig.rtAntiAlising = (RenderTextureAntiAliasing)EditorGUILayout.EnumPopup("RenderTexture Anti-Aliasing", projectConfig.rtAntiAlising);
#if UNITY_2018_3_OR_NEWER
        GUI.enabled = false;
#endif
        projectConfig.rtBitDepth = (RenderTextureDepth)EditorGUILayout.EnumPopup("RenderTexture Bit Depth", projectConfig.rtBitDepth);
        projectConfig.rtFormat   = (RenderTextureFormat)EditorGUILayout.EnumPopup("RenderTexture Format", projectConfig.rtFormat);
#if UNITY_2018_3_OR_NEWER
        GUI.enabled = true;
#endif
        guiContent.text    = "Use Default RenderTexture";
        guiContent.tooltip = "If false,you can define customed size of Render Texture, and effect for all scenes.";
        projectConfig.usedefaultRenderTexture = EditorGUILayout.Toggle(guiContent, projectConfig.usedefaultRenderTexture);
        if (!projectConfig.usedefaultRenderTexture)
        {
            projectConfig.customRTSize = EditorGUILayout.Vector2Field("    RT Size", projectConfig.customRTSize);
            EditorGUILayout.BeginVertical("box");
            EditorGUILayout.LabelField("Note:", firstLevelStyle);
            EditorGUILayout.LabelField("1.width & height must be larger than 0;");
            EditorGUILayout.LabelField("2.the size of RT has a great influence on performance;");
            EditorGUILayout.EndVertical();
        }

        GUILayout.Space(10);
        EditorGUILayout.LabelField("Pose Settings", firstLevelStyle);

        guiContent.text        = "Tracking Origin";
        guiContent.tooltip     = "Define the current tracking origin type.";
        manager.TrackingOrigin = (TrackingOrigin)EditorGUILayout.EnumPopup(guiContent, manager.TrackingOrigin);

        guiContent.text            = "Reset Tracker OnLoad";
        guiContent.tooltip         = "If true, each scene load will cause the head pose to reset.";
        manager.ResetTrackerOnLoad = EditorGUILayout.Toggle(guiContent, manager.ResetTrackerOnLoad);

        guiContent.text    = "Only Rotation Tracking";
        guiContent.tooltip = "If true,tracking will not affect the position of specified target.";
        manager.Rotfoldout = EditorGUILayout.Foldout(manager.Rotfoldout, guiContent, true);
        if (manager.Rotfoldout)
        {
            guiContent.text    = "  Only HMD Rotation Tracking";
            guiContent.tooltip = "If true, head tracking will not affect the position of each Pvr_UnitySDK's cameras, and just act in three DOF mode.";
            manager.HmdOnlyrot = EditorGUILayout.Toggle(guiContent, manager.HmdOnlyrot);
            if (manager.HmdOnlyrot)
            {
                manager.PVRNeck = EditorGUILayout.Toggle("    Enable Neck Model", manager.PVRNeck);
                if (manager.PVRNeck)
                {
                    manager.neckOffset = EditorGUILayout.Vector3Field("Neck Offset", manager.neckOffset);
                    GUILayout.BeginHorizontal();
                    GUILayout.Space(100);
                    resetNeckOffset = GUILayout.Button("Use Default Neck Offset");
                    GUILayout.EndHorizontal();
                    if (resetNeckOffset)
                    {
                        manager.neckOffset        = new Vector3(0, 0.075f, 0.0805f);
                        manager.UseCustomNeckPara = false;
                    }
                }
            }
            else
            {
                manager.UseCustomNeckPara = false;
            }
            guiContent.text           = "  Only Controller Rotation Tracking";
            guiContent.tooltip        = "If true, hand tracking will not affect the position of controller(s).It will just act in three DOF mode.";
            manager.ControllerOnlyrot =
                EditorGUILayout.Toggle(guiContent, manager.ControllerOnlyrot);
        }
        else
        {
            manager.HmdOnlyrot        = false;
            manager.ControllerOnlyrot = false;
            manager.UseCustomNeckPara = false;
        }

        GUILayout.Space(10);
        EditorGUILayout.LabelField("Other Settings", firstLevelStyle);

        guiContent.text    = "Show FPS";
        guiContent.tooltip = "If true,display FPS on Overlay.";
        manager.ShowFPS    = EditorGUILayout.Toggle(guiContent, manager.ShowFPS);

        guiContent.text             = "Use Default FPS";
        guiContent.tooltip          = "If false, you can define upper limit of FPS.";
        projectConfig.usedefaultfps = EditorGUILayout.Toggle(guiContent, projectConfig.usedefaultfps);
        if (!projectConfig.usedefaultfps)
        {
            projectConfig.customfps = EditorGUILayout.IntField("    FPS", projectConfig.customfps);
        }

        EditorGUI.BeginDisabledGroup(projectConfig.usesinglepass);
        guiContent.text    = "Use Monoscopic";
        guiContent.tooltip = "If true, both eyes will be rendered with same image  from the center eye pose, which will reduce GPU load.";
        manager.Monoscopic = EditorGUILayout.Toggle(guiContent, manager.Monoscopic);
        EditorGUI.EndDisabledGroup();

        EditorGUI.BeginDisabledGroup(manager.Monoscopic);
        guiContent.text             = "Use SinglePass";
        guiContent.tooltip          = "If true, objects are rendered once to the left eye buffer, then duplicated to the right buffer automatically with appropriate modifications. It primarily reduces CPU usage.";
        projectConfig.usesinglepass = EditorGUILayout.Toggle(guiContent, projectConfig.usesinglepass);
        if (projectConfig.usesinglepass != IsSinglePassEnable())
        {
            SetSinglePass(projectConfig.usesinglepass);
        }
        EditorGUI.EndDisabledGroup();

        guiContent.text    = "Use Content Protect";
        guiContent.tooltip = "If true, content will not be recorded or casted illegally.";
        projectConfig.usecontentprotect = EditorGUILayout.Toggle(guiContent, projectConfig.usecontentprotect);
        if (projectConfig.usecontentprotect)
        {
            EditorGUILayout.BeginVertical("box");
            EditorGUILayout.LabelField("Note:", firstLevelStyle);
            EditorGUILayout.LabelField("This is Content Protect,if checked:");
            EditorGUILayout.LabelField("Screen Shot & Screen Recording & Screen Cast CANNOT work");
            EditorGUILayout.EndVertical();
        }

        if (GUI.changed)
        {
            QulityRtMass = (int)projectConfig.rtAntiAlising;
            if (QulityRtMass == 1)
            {
                QulityRtMass = 0;
            }
            if (MSAAChange != null)
            {
                MSAAChange(QulityRtMass);
            }
            var headDof = Pvr_UnitySDKManager.SDK.HmdOnlyrot ? 0 : 1;
            if (HeadDofChangedEvent != null)
            {
                if (headDof == 0)
                {
                    HeadDofChangedEvent("3dof");
                }
                else
                {
                    HeadDofChangedEvent("6dof");
                }
            }
            if (SetContentProtectXml != null)
            {
                if (projectConfig.usecontentprotect)
                {
                    SetContentProtectXml("1");
                }
                else
                {
                    SetContentProtectXml("0");
                }
            }
            if (manager.Rotfoldout && manager.HmdOnlyrot)
            {
                if (manager.neckOffset != new Vector3(0, 0.075f, 0.0805f))
                {
                    manager.UseCustomNeckPara = true;
                }
            }
            EditorUtility.SetDirty(manager);
            EditorUtility.SetDirty(projectConfig);
#if !UNITY_5_2
            if (!Application.isPlaying)
            {
                UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEngine.SceneManagement.SceneManager.GetActiveScene());
            }
#endif
        }

        serializedObject.ApplyModifiedProperties();
    }
コード例 #10
0
    /*************************************  Unity API ****************************************/
    #region Unity API

    void Awake()
    {
        PLOG.getConfigTraceLevel();
#if !UNITY_EDITOR && UNITY_ANDROID
        int enumindex = (int)GlobalIntConfigs.TRACKING_MODE;
        Render.UPvr_GetIntConfig(enumindex, ref trackingmode);
        if (isPUI)
        {
            if (trackingmode == 1 || trackingmode == 0)
            {
                HeadDofNum = HeadDofNum.ThreeDof;
                HandDofNum = HandDofNum.ThreeDof;
                HandNum    = HandNum.One;
            }
        }
#endif
        Application.targetFrameRate = 61;
#if !UNITY_EDITOR && UNITY_ANDROID
        int fps  = -1;
        int rate = (int)GlobalIntConfigs.TARGET_FRAME_RATE;
        Render.UPvr_GetIntConfig(rate, ref fps);
        float ffps  = 0.0f;
        int   frame = (int)GlobalFloatConfigs.DISPLAY_REFRESH_RATE;
        Render.UPvr_GetFloatConfig(frame, ref ffps);
        Application.targetFrameRate = fps > 0 ? fps : (int)ffps;
#endif

#if !UNITY_EDITOR && UNITY_ANDROID
        float neckx  = 0.0f;
        float necky  = 0.0f;
        float neckz  = 0.0f;
        int   modelx = (int)GlobalFloatConfigs.NECK_MODEL_X;
        int   modely = (int)GlobalFloatConfigs.NECK_MODEL_Y;
        int   modelz = (int)GlobalFloatConfigs.NECK_MODEL_Z;
        Render.UPvr_GetFloatConfig(modelx, ref neckx);
        Render.UPvr_GetFloatConfig(modely, ref necky);
        Render.UPvr_GetFloatConfig(modelz, ref neckz);
        if (neckx != 0.0f || necky != 0.0f || neckz != 0.0f)
        {
            neckOffset = new Vector3(neckx, necky, neckz);
        }
#endif
        var controllermanager = FindObjectOfType <Pvr_ControllerManager>();
        isHasController = controllermanager != null;
        if (sdk == null)
        {
            sdk = this;
        }
        if (sdk != this)
        {
            Debug.LogError("SDK object should be a singleton.");
            enabled = false;
            return;
        }
        if (SDKManagerInit())
        {
            Debug.Log("SDK Init success.");
        }
        else
        {
            Debug.LogError("SDK Init Failed.");
            Application.Quit();
        }

        SDKManagerInitFPS();

        //    safeArea = transform.Find("SafeArea2").gameObject;
        //safeToast = transform.Find("Head/SafeToast").gameObject;
        /// resetPanel = transform.Find("ResetPanel").gameObject;
        // safePanel1 = transform.Find("SafePanel1").gameObject;
        // safePanel2 = transform.Find("SafePanel2").gameObject;

        if (Application.systemLanguage != SystemLanguage.Chinese && Application.systemLanguage != SystemLanguage.ChineseSimplified)
        {
            safeToast.transform.Find("title").GetComponent <Text>().text = "Safety Warning";
            safeToast.transform.Find("Text").GetComponent <Text>().text  =
                "You have left the safe zone. Please take off your headset and return to the safe zone,or hold down the Home key of headset to rebuild a safe zone.";
            resetPanel.transform.Find("Panel/resetbtn/Text").GetComponent <Text>().text     = "Continue";
            safePanel1.transform.Find("Panel/startgameBtn/Text").GetComponent <Text>().text = "Continue";
            safePanel1.transform.Find("Panel/toast2").GetComponent <Text>().text            = "I have read and agree to the ";
            safePanel1.transform.Find("Panel/toast3").GetComponent <Text>().text            = "safety policy.";
            safePanel1.transform.Find("Panel/Toggle").localPosition                         = new Vector3(-37, -136, 0);
            safePanel2.transform.Find("Panel/Title").GetComponent <Text>().text             = "Warning";
            safePanel2.transform.Find("Panel/toast2").GetComponent <Text>().text            = "This device does not support this applications";
            safePanel2.transform.Find("Panel/forcequitBtn/Text").GetComponent <Text>().text = "Quit";
            if (DefaultRange)
            {
                resetPanel.transform.Find("Panel/toast").GetComponent <Text>().text =
                    "Please take off your headset and ensure that there are no obstacles within a radius of 0.8 meters,then press Continue";
                safePanel1.transform.Find("Panel/toast1").GetComponent <Text>().text =
                    "Please take off your headset and ensure that there are no obstacles within a radius of 0.8 meters,then press Continue";
            }
            else
            {
                resetPanel.transform.Find("Panel/toast").GetComponent <Text>().text =
                    "Please take off your headset and ensure that there are no obstacles within a radius of" + CustomRange + "meters,then press Continue";
                safePanel1.transform.Find("Panel/toast1").GetComponent <Text>().text =
                    "Please take off your headset and ensure that there are no obstacles within a radius of" + CustomRange + "meters,then press Continue";
            }
        }
#if !UNITY_EDITOR && UNITY_ANDROID
        if (HeadDofNum == HeadDofNum.SixDof || HandDofNum == HandDofNum.SixDof)
        {
            if (trackingmode == 1 || trackingmode == 0)
            {
                safePanel2.SetActive(true);
            }
        }
        if (ShowSafePanel && HeadDofNum == HeadDofNum.SixDof && Sensor.UPvr_Pvr_Get6DofSafePanelFlag())
        {
            safePanel1.SetActive(true);
            var toggle = safePanel1.transform.Find("Panel/Toggle").GetComponent <Toggle>();
            toggle.isOn = false;
            toggle.onValueChanged.AddListener(ToggleValueChange);
            safePanel1.transform.Find("Panel/startgameBtn").GetComponent <Button>().interactable = false;
        }
#endif
    }
コード例 #11
0
    public override void OnInspectorGUI()
    {
        GUI.changed = false;

        GUIStyle firstLevelStyle = new GUIStyle(GUI.skin.label);

        firstLevelStyle.alignment = TextAnchor.UpperLeft;
        firstLevelStyle.fontStyle = FontStyle.Bold;
        firstLevelStyle.fontSize  = 12;
        firstLevelStyle.wordWrap  = true;

        Pvr_UnitySDKManager manager = (Pvr_UnitySDKManager)target;

        GUILayout.Space(10);
        EditorGUILayout.LabelField("ConfigFile Setting", firstLevelStyle);
        EditorGUILayout.LabelField("Current Build Target : " + EditorUserBuildSettings.activeBuildTarget.ToString() + "\n", firstLevelStyle);
        GUILayout.Space(10);

        GUILayout.Space(10);
        EditorGUILayout.LabelField("Render Texture Setting", firstLevelStyle);
        GUILayout.Space(10);

        manager.RtAntiAlising = (RenderTextureAntiAliasing)EditorGUILayout.EnumPopup("Render Texture Anti-Aliasing ", manager.RtAntiAlising);
        manager.RtBitDepth    = (RenderTextureDepth)EditorGUILayout.EnumPopup("Render Texture Bit Depth   ", manager.RtBitDepth);
        manager.RtFormat      = (RenderTextureFormat)EditorGUILayout.EnumPopup("Render Texture Format", manager.RtFormat);

        //manager.RtSizeWH = EditorGUILayout.FloatField("Render Texture Size",manager.RtSizeWH);
        GUILayout.Space(10);
        EditorGUILayout.LabelField("Render Texture Level", firstLevelStyle);
        GUILayout.Space(10);
        manager.DefaultRenderTexture = EditorGUILayout.Toggle("Use Default Render Texture", manager.DefaultRenderTexture);
        GUILayout.Space(10);

        if (!manager.DefaultRenderTexture)
        {
            GUILayout.Space(10);
            manager.RtLevel = (RenderTextureLevel)EditorGUILayout.EnumPopup("Render Texture Level", manager.RtLevel);
            GUILayout.Space(10);
        }


        GUILayout.Space(10);
        EditorGUILayout.LabelField("Show FPS", firstLevelStyle);
        GUILayout.Space(10);
        manager.ShowFPS = EditorGUILayout.Toggle("Show FPS in Scene", manager.ShowFPS);
        GUILayout.Space(10);

        GUILayout.Space(10);
        EditorGUILayout.LabelField("Show SafePanel", firstLevelStyle);
        GUILayout.Space(10);
        manager.ShowSafePanel = EditorGUILayout.Toggle("Show SafePanel", manager.ShowSafePanel);
        GUILayout.Space(10);

        GUILayout.Space(10);
        EditorGUILayout.LabelField("Screen Fade", firstLevelStyle);
        GUILayout.Space(10);
        manager.ScreenFade = EditorGUILayout.Toggle("Screen Fade", manager.ScreenFade);
        GUILayout.Space(10);


        GUILayout.Space(10);
        EditorGUILayout.LabelField("Head Pose", firstLevelStyle);
        manager.HeadDofNum = (HeadDofNum)EditorGUILayout.EnumPopup(manager.HeadDofNum);
        GUILayout.Space(10);
        EditorGUILayout.LabelField("Hand Pose", firstLevelStyle);
        manager.HandDofNum = (HandDofNum)EditorGUILayout.EnumPopup(manager.HandDofNum);

        GUILayout.Space(10);
        EditorGUILayout.LabelField("6Dof Position Reset", firstLevelStyle);
        GUILayout.Space(10);
        manager.SixDofRecenter = EditorGUILayout.Toggle("Enable 6Dof Position Reset", manager.SixDofRecenter);
        GUILayout.Space(10);

        GUILayout.Space(10);
        EditorGUILayout.LabelField("Use Default Range", firstLevelStyle);
        GUILayout.Space(10);
        manager.DefaultRange = EditorGUILayout.Toggle("Use Default Range", manager.DefaultRange);
        GUILayout.Space(10);

        if (!manager.DefaultRange)
        {
            GUILayout.Space(10);
            EditorGUILayout.LabelField("Custom Range", firstLevelStyle);
            GUILayout.Space(10);
            manager.CustomRange = EditorGUILayout.FloatField("Range", manager.CustomRange);
            GUILayout.Space(10);
        }

        GUILayout.Space(10);
        EditorGUILayout.LabelField("Moving Ratios", firstLevelStyle);
        GUILayout.Space(10);
        manager.MovingRatios = EditorGUILayout.FloatField("Ratios", manager.MovingRatios);
        GUILayout.Space(10);

        if (GUI.changed)
        {
            QulityRtMass = (int)Pvr_UnitySDKManager.SDK.RtAntiAlising;
            if (QulityRtMass == 1)
            {
                QulityRtMass = 0;
            }
            if (MSAAChange != null)
            {
                MSAAChange(QulityRtMass);
            }
            var headDof = (int)manager.HeadDofNum;
            if (HeadDofChangedEvent != null)
            {
                if (headDof == 0)
                {
                    HeadDofChangedEvent("3dof");
                }
                else
                {
                    HeadDofChangedEvent("6dof");
                }
            }
            EditorUtility.SetDirty(manager);
#if !UNITY_5_2
            UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEngine.SceneManagement.SceneManager
                                                                          .GetActiveScene());
#endif
        }

        serializedObject.ApplyModifiedProperties();
    }