97 lines
2.5 KiB
C#
97 lines
2.5 KiB
C#
using System.Collections.Generic;
|
|
using Unity.HLODSystem.Streaming;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
|
|
#if UNITY_EDITOR
|
|
using UnityEditor;
|
|
#endif
|
|
|
|
|
|
namespace Unity.HLODSystem
|
|
{
|
|
public class HLODManager
|
|
{
|
|
#region Singleton
|
|
|
|
private static HLODManager s_instance = null;
|
|
private bool IsSRP => GraphicsSettings.defaultRenderPipeline != null || QualitySettings.renderPipeline != null;
|
|
|
|
public static HLODManager Instance
|
|
{
|
|
get
|
|
{
|
|
if (s_instance == null)
|
|
s_instance = new HLODManager();
|
|
return s_instance;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
public List<HLODControllerBase> ActiveControllers
|
|
{
|
|
get
|
|
{
|
|
if (m_activeControllers == null)
|
|
{
|
|
m_activeControllers = new List<HLODControllerBase>();
|
|
if (IsSRP)
|
|
RenderPipelineManager.beginCameraRendering += OnPreCull;
|
|
else
|
|
Camera.onPreCull += OnPreCull;
|
|
}
|
|
|
|
return m_activeControllers;
|
|
}
|
|
}
|
|
public void Register(HLODControllerBase controller)
|
|
{
|
|
ActiveControllers.Add(controller);
|
|
}
|
|
public void Unregister(HLODControllerBase controller)
|
|
{
|
|
ActiveControllers.Remove(controller);
|
|
}
|
|
|
|
|
|
|
|
private List<HLODControllerBase> m_activeControllers = null;
|
|
|
|
private void OnPreCull(ScriptableRenderContext context, Camera cam)
|
|
{
|
|
OnPreCull(cam);
|
|
}
|
|
|
|
public void OnPreCull(Camera cam)
|
|
{
|
|
#if UNITY_EDITOR
|
|
if (EditorApplication.isPlaying == false)
|
|
{
|
|
if (SceneView.currentDrawingSceneView == null)
|
|
return;
|
|
if (cam != SceneView.currentDrawingSceneView.camera)
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
if (cam != HLODCameraRecognizerManager.ActiveCamera)
|
|
return;
|
|
}
|
|
#else
|
|
if (cam != HLODCameraRecognizer.RecognizedCamera)
|
|
return;
|
|
#endif
|
|
|
|
if (m_activeControllers == null)
|
|
return;
|
|
|
|
for (int i = 0; i < m_activeControllers.Count; ++i)
|
|
{
|
|
m_activeControllers[i].UpdateCull(cam);
|
|
}
|
|
}
|
|
}
|
|
|
|
} |