public virtual void OnMoveExecute(NPCBehaviour npc, float speed, Vector3 facingDir)
    {
        npc.CheckVision();

        Vector3 dir = npc.currentDestination - npc.transform.position;

        dir.y = 0;
        npc.CharMove.Move(dir, facingDir, speed);
    }
    public virtual void OnChaseExecute(NPCBehaviour npc, Vector3 target)
    {
        npc.CheckVision();
        Vector3 dir = npc.CurrentTarget.transform.position - npc.transform.position;

        dir.y = 0;
        npc.CharMove.Move(dir, target, RunSpeed);

        if (Vector3.Distance(npc.transform.position, target) < 2f)
        {
            Debug.Log("Reached target!");
        }
    }
 public virtual void OnIdleExecute(NPCBehaviour npc)
 {
     npc.CheckVision();
 }