vibecoded inspector

This commit is contained in:
bird_egop
2026-06-09 01:46:57 +03:00
parent 70a5d0ef69
commit 325970374a
25 changed files with 1944 additions and 649 deletions
+58
View File
@@ -0,0 +1,58 @@
using NResUI.Rendering.Inspection;
namespace NResUI.Models;
/// <summary>
/// Общее состояние mesh viewport и inspector.
/// Панели синхронизируются через эту модель, чтобы выбор piece/batch не жил отдельно в каждом окне.
/// </summary>
public sealed class MeshViewportViewModel
{
public MeshDocument? Document { get; private set; }
public MeshRenderState RenderState { get; } = new();
public string? LoadError { get; private set; }
public bool NeedsSceneRebuild { get; private set; }
public bool HasDocument => Document != null;
/// <summary>Заменяет текущий документ и сбрасывает все viewport-only overrides.</summary>
public void SetDocument(MeshDocument document)
{
Document = document;
LoadError = null;
RenderState.HiddenPieceIds.Clear();
RenderState.ClearAllPieceOverrides();
RenderState.ClearSelection();
NeedsSceneRebuild = true;
}
public void SetError(string error)
{
Document = null;
LoadError = error;
RenderState.HiddenPieceIds.Clear();
RenderState.ClearAllPieceOverrides();
RenderState.ClearSelection();
NeedsSceneRebuild = true;
}
public void ClearDocument()
{
Document = null;
LoadError = null;
RenderState.HiddenPieceIds.Clear();
RenderState.ClearAllPieceOverrides();
RenderState.ClearSelection();
NeedsSceneRebuild = true;
}
public void MarkSceneRebuildNeeded()
{
NeedsSceneRebuild = true;
}
public void MarkSceneRebuilt()
{
NeedsSceneRebuild = false;
}
}