Combat/EnemyShotTrace.cs
namespace Prototype;

/// <summary>Use animated damage hitboxes while leaving navigation capsules out of gunfire.</summary>
public static class EnemyShotTrace
{
    public static SceneTraceResult Run( Scene scene, Vector3 start, Vector3 end )
    {
        var solid = scene.Trace.Ray( start, end )
            .WithoutTags( "player", "projectile", "enemy_model_proxy" ).Run();
        var body = scene.Trace.Ray( start, end ).UsePhysicsWorld( false ).UseHitboxes( true )
            .WithoutTags( "player", "projectile" ).Run();
        return body.Hit && (!solid.Hit || body.Fraction <= solid.Fraction) ? body : solid;
    }
}