using MshLib;
namespace NResUI.Rendering.Inspection;
///
/// Parsed MSH component data retained so state/LOD changes can rebuild GPU meshes without reparsing the file.
///
public sealed class MshModelGeometry
{
/// Таблица узлов 0x01: именно она связывает каждый piece с geometry slot для пары state/LOD.
public required Msh0x01.Msh0x01Component Nodes { get; init; }
/// Слоты геометрии 0x02. Один piece выбирает один слот через 0x01.ResolveSlotIndex.
public required Msh0x02.Msh0x02Component GeometrySlots { get; init; }
/// Позиции вершин из 0x03.
public required IReadOnlyList Positions { get; init; }
/// Нормали из 0x04. Компонент опционален, поэтому фабрика мешей обязана иметь fallback.
public required IReadOnlyList Normals { get; init; }
/// UV из 0x05. Компонент опционален для части ресурсов.
public required IReadOnlyList Uvs { get; init; }
/// Индексный буфер 0x06 для обычных моделей.
public required IReadOnlyList Indices { get; init; }
/// Render batches 0x0D: диапазоны индексов, material id и render flags.
public required IReadOnlyList Batches { get; init; }
}