ViewModel.cs
using Sandbox;
public sealed class ViewModel : Component
{
/// <summary>First-person weapon prefab cloned onto the camera when this item is held.</summary>
[Property] public GameObject ModelPrefab { get; private set; }
/// <summary>When true, ADS is driven by the viewmodel animgraph. When false, Offset/Angle are applied in code.</summary>
[Property, Group( "Ironsights" )]
public bool AnimationIronsights { get; private set; } = true;
/// <summary>Local ADS position offset (camera space). Applied for both anim and code ADS. With code ADS, this is added on top of muzzle centering.</summary>
[Property, Group( "Ironsights" )]
public Vector3 IronsightsOffset { get; private set; }
/// <summary>Local euler angles applied when aiming down sights. Zero keeps hip rotation.</summary>
[Property, Group( "Ironsights" )]
public Angles IronsightsAngle { get; private set; }
/// <summary>Seconds to blend into and out of ironsights.</summary>
[Property, Group( "Ironsights" )]
public float IronsightsDuration { get; private set; } = 0.2f;
}