/// <summary> /// Unity OnGUI. /// </summary> public void OnGUI() { _pvsManager = EditorGUILayout.ObjectField("PVS Manager", _pvsManager, typeof(PVSManager), true) as PVSManager; if (!_pvsManager || null == _pvsManager.visibleFlags || _pvsManager.visibleFlags.Length <= 0) { return; } if (GUILayout.Button("Init")) { PVSBaker.InitPVSManager(_pvsManager); } _scrollPosition = GUILayout.BeginScrollView(_scrollPosition); try { for (var i = 0; i < _pvsManager.renderers.Count; i += 3) { if (!GUILayout.Button($"Bake {i}-{i + 3}")) { continue; } _pvsManager.BuildAccelerationStructure(); try { for (var index = i; index < Mathf.Min(_pvsManager.renderers.Count, i + 3); ++index) { _pvsManager.accelerationStructure.Build(); PVSBaker.BakeVisibleFlagForRenderer(_pvsManager, index, index / 3.0f); } UnityEditor.SceneManagement.EditorSceneManager.SaveOpenScenes(); } finally { EditorUtility.ClearProgressBar(); _pvsManager.ReleaseBakeResource(); } } } finally { GUILayout.EndScrollView(); } }