public override State Transition()
    {
        // see target?
        if (!MobTools.CheckLOS(blackboard.eyes.position, blackboard.target.gameObject, blackboard.eyeMask))
        {
            // seek
            return(blackboard.seekState);
        }

        return(this);
    }
    public override State Transition()
    {
        // see target?
        if (MobTools.CheckLOS(blackboard.eyes.position, blackboard.target.gameObject, blackboard.eyeMask))
        {
            // engage
            return(blackboard.engageState);
        }

        // out of range?
        if (!MobTools.CheckDistance(blackboard.eyes.position, blackboard.target.transform.position, blackboard.seekRange))
        {
            // idle
            return(blackboard.idleState);
        }

        return(this);
    }
 public override void RunState()
 {
     blackboard.target = MobTools.GetClosestEnemy(blackboard.myFaction, blackboard.eyes.position, blackboard.eyeMask);
 }