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);
    }