using GameCore.ECS; using GameCore.ECS.Interfaces; using GameCore.Math; namespace GameCore.AI; public class AIComponent : IComponent { public AIState CurrentState { get; set; } = AIState.Idle; public Entity? Target { get; set; } public float StateTimer { get; set; } = 0.0f; public Vector3 LastKnownTargetPosition { get; set; } = Vector3.Zero; public float SightRange { get; set; } = 20.0f; public float FieldOfView { get; set; } = 90.0f; // in degrees public float AttackRange { get; set; } = 10.0f; public float ChaseGiveUpTime { get; set; } = 5.0f; public float ReactionTime { get; set; } = 0.5f; public float AttackRangeBufferPercent { get; set; } = 0.2f; }