void Start() { msg = GameObject.Find("MassageInfo"); InitDelegate(); callback = new Callback(); picoVrManager = GameObject.Find("Pvr_UnitySDK").GetComponent <Pvr_UnitySDKManager>(); InputPanel.SetActive(false); }
void OnDestroy() { if (sdk == this) { sdk = null; } RenderTexture.active = null; Resources.UnloadUnusedAssets(); System.GC.Collect(); }
void OnDestroy() { if (sdk == this) { sdk = null; } RenderTexture.active = null; Resources.UnloadUnusedAssets(); System.GC.Collect(); Pvr_ControllerManager.ControllerStatusChangeEvent -= CheckControllerStateForG2; }
private void OnEnable() { if (sdk == null) { sdk = this; } else { if (sdk != this) { sdk = this; } } }
/************************************* 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(); } }
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(); }
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(); }
/************************************* 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 } }
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(); }
/************************************* 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 }
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(); }