77 lines
2.8 KiB
C#
77 lines
2.8 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using UnityEngine.TerrainUtils;
|
|
|
|
namespace Unity.HLODSystem
|
|
{
|
|
public class HLODTreeNodeRenderer
|
|
{
|
|
#if UNITY_EDITOR
|
|
#region Singleton
|
|
private static HLODTreeNodeRenderer s_instance;
|
|
|
|
public static HLODTreeNodeRenderer Instance
|
|
{
|
|
get
|
|
{
|
|
if (s_instance == null)
|
|
s_instance = new HLODTreeNodeRenderer();
|
|
return s_instance;
|
|
}
|
|
}
|
|
#endregion
|
|
private Vector3[] m_allocatedVertices = new Vector3[8];
|
|
#region public
|
|
public void Render(HLODTreeNode node, Color color, float width)
|
|
{
|
|
if (node == null || node.Controller == null)
|
|
return;
|
|
|
|
Vector3 min = node.Bounds.min;
|
|
Vector3 max = node.Bounds.max;
|
|
|
|
|
|
m_allocatedVertices[0] = new Vector3(min.x, min.y, min.z);
|
|
m_allocatedVertices[1] = new Vector3(min.x, min.y, max.z);
|
|
m_allocatedVertices[2] = new Vector3(max.x, min.y, max.z);
|
|
m_allocatedVertices[3] = new Vector3(max.x, min.y, min.z);
|
|
|
|
m_allocatedVertices[4] = new Vector3(min.x, max.y, min.z);
|
|
m_allocatedVertices[5] = new Vector3(min.x, max.y, max.z);
|
|
m_allocatedVertices[6] = new Vector3(max.x, max.y, max.z);
|
|
m_allocatedVertices[7] = new Vector3(max.x, max.y, min.z);
|
|
|
|
for (int i = 0; i < m_allocatedVertices.Length; ++i)
|
|
{
|
|
m_allocatedVertices[i] = node.Controller.transform.localToWorldMatrix.MultiplyPoint(m_allocatedVertices[i]);
|
|
}
|
|
|
|
Handles.color = color;
|
|
|
|
Handles.DrawLine(m_allocatedVertices[0], m_allocatedVertices[1], width);
|
|
Handles.DrawLine(m_allocatedVertices[1], m_allocatedVertices[2], width);
|
|
Handles.DrawLine(m_allocatedVertices[2], m_allocatedVertices[3], width);
|
|
Handles.DrawLine(m_allocatedVertices[3], m_allocatedVertices[0], width);
|
|
|
|
Handles.DrawLine(m_allocatedVertices[0], m_allocatedVertices[4], width);
|
|
Handles.DrawLine(m_allocatedVertices[1], m_allocatedVertices[5], width);
|
|
Handles.DrawLine(m_allocatedVertices[2], m_allocatedVertices[6], width);
|
|
Handles.DrawLine(m_allocatedVertices[3], m_allocatedVertices[7], width);
|
|
|
|
Handles.DrawLine(m_allocatedVertices[4], m_allocatedVertices[5], width);
|
|
Handles.DrawLine(m_allocatedVertices[5], m_allocatedVertices[6], width);
|
|
Handles.DrawLine(m_allocatedVertices[6], m_allocatedVertices[7], width);
|
|
Handles.DrawLine(m_allocatedVertices[7], m_allocatedVertices[4], width);
|
|
}
|
|
|
|
#endregion
|
|
|
|
private HLODTreeNodeRenderer()
|
|
{
|
|
}
|
|
|
|
#endif
|
|
}
|
|
} |