Code/AutoRig/Analyze/AnalysisResult.cs

Data model for results of a mesh analysis. Defines an OrganicCategory enum and an AnalysisResult record-like class that holds a RigMesh, lists of MeshPart and PartContact, optional SymmetryPlane, a Classification, an OrganicCategory, and a summary string.

using AutoRig.Mesh;

namespace AutoRig.Analyze;

/// <summary>Organic body category (detection lands with the organic solver; Unknown until then).</summary>
public enum OrganicCategory
{
    Unknown,
    Humanoid,
    Quadruped,
    Winged,
    Other,
}

/// <summary>Everything the analysis pipeline learned about one mesh.</summary>
public sealed class AnalysisResult
{
    public required RigMesh Mesh { get; init; }
    public required IReadOnlyList<MeshPart> Parts { get; init; }
    public required IReadOnlyList<PartContact> Contacts { get; init; }
    public required SymmetryPlane? Symmetry { get; init; }
    public required Classification Classification { get; init; }
    public required OrganicCategory Category { get; init; }

    /// <summary>Chip text, e.g. "Mechanical · 6 rigid parts", "Organic · symmetric".</summary>
    public required string Summary { get; init; }
}