using Flyshot.Core.Domain;

namespace Flyshot.Core.Config;

/// <summary>
/// 表示一次 JSON 模型解析后生成的完整机器人模型视图集合。
/// </summary>
public sealed class LoadedRobotModel
{
    /// <summary>
    /// 初始化完整机器人模型视图集合。
    /// </summary>
    /// <param name="profile">规划和运行时使用的关节约束视图。</param>
    /// <param name="kinematicsModel">正运动学导出使用的几何链视图。</param>
    public LoadedRobotModel(RobotProfile profile, RobotKinematicsModel kinematicsModel)
    {
        Profile = profile ?? throw new ArgumentNullException(nameof(profile));
        KinematicsModel = kinematicsModel ?? throw new ArgumentNullException(nameof(kinematicsModel));
    }

    /// <summary>
    /// 获取规划和运行时使用的关节约束视图。
    /// </summary>
    public RobotProfile Profile { get; }

    /// <summary>
    /// 获取正运动学导出使用的几何链视图。
    /// </summary>
    public RobotKinematicsModel KinematicsModel { get; }
}
