Files
nightclub-arcadia/NightclubArcadia/Packages/com.unity.probuilder/Editor/Overlays/SceneInformationOverlay.cs
T

65 lines
2.6 KiB
C#

using UnityEditor.Overlays;
using UnityEngine;
using UnityEngine.UIElements;
namespace UnityEditor.ProBuilder.Overlays
{
//[Overlay(typeof(SceneView), "Scene Information", true)]
class SceneInformationOverlay : Overlay
{
Label m_FaceCountLabel = new Label();
Label m_TriCountLabel = new Label();
Label m_VertCountLabel = new Label();
Label m_SelectedFaceCountLabel = new Label();
Label m_SelectedEdgeCountLabel = new Label();
Label m_SelectedVertCountLabel = new Label();
public SceneInformationOverlay()
{
ProBuilderEditor.selectionUpdated += _ => UpdateSceneInfo();
MeshSelection.objectSelectionChanged += UpdateSceneInfo;
}
public override VisualElement CreatePanelContent()
{
displayName = "ProBuilder Information";
var root = new VisualElement();
root.style.flexDirection = FlexDirection.Column;
root.Add(CreateLabelLine(m_FaceCountLabel, "Faces:"));
root.Add(CreateLabelLine(m_TriCountLabel, "Triangles:"));
root.Add(CreateLabelLine(m_VertCountLabel, "Vertices:"));
var spacer = new VisualElement();
spacer.style.height = 10;
root.Add(spacer); // Spacer line
root.Add(CreateLabelLine(m_SelectedFaceCountLabel, "Selected Faces:"));
root.Add(CreateLabelLine(m_SelectedEdgeCountLabel, "Selected Edges:"));
root.Add(CreateLabelLine(m_SelectedVertCountLabel, "Selected Vertices:"));
UpdateSceneInfo();
return root;
}
void UpdateSceneInfo()
{
m_FaceCountLabel.text = MeshSelection.totalFaceCount.ToString();
m_TriCountLabel.text = MeshSelection.totalTriangleCountCompiled.ToString();
m_VertCountLabel.text = MeshSelection.totalCommonVertexCount + " (" + MeshSelection.totalVertexCountOptimized + ")";
m_SelectedFaceCountLabel.text = MeshSelection.selectedFaceCount.ToString();
m_SelectedEdgeCountLabel.text = MeshSelection.selectedEdgeCount.ToString();
m_SelectedVertCountLabel.text = MeshSelection.selectedSharedVertexCount + " (" + MeshSelection.selectedVertexCount+ ")";
}
VisualElement CreateLabelLine(Label targetLabel, string displayName)
{
var line = new VisualElement();
line.style.flexDirection = FlexDirection.Row;
line.Add(new Label(displayName));
targetLabel.style.unityFontStyleAndWeight = FontStyle.Bold;
line.Add(targetLabel);
return line;
}
}
}