private ToolDispenser GetClosest()
    {
        var dispensers = COMPONENT_DATABASE.RetrieveComponents <ToolDispenser>();

        if (dispensers.Count == 0)
        {
            return(null);
        }

        ToolDispenser closest     = null;
        float         closestDist = float.MaxValue;

        foreach (var d in dispensers)
        {
            var dispenser = (ToolDispenser)d;
            if (dispenser.GetResourceCount(ToolType.WoodenAxe) <= 0)
            {
                continue;
            }

            float dist = (dispenser.gameObject.transform.position - transform.position).magnitude;

            if (dist < closestDist)
            {
                closest     = dispenser;
                closestDist = dist;
            }
        }

        return(closest);
    }
    public override void SetTarget()
    {
        var closest = GetClosest();

        if (closest != null)
        {
            m_ToolDispenser = closest;
            target          = m_ToolDispenser.transform;
        }
    }
 protected override void DoReset()
 {
     m_HasAxe        = false;
     m_ToolDispenser = null;
 }
Exemplo n.º 4
0
 void Awake()
 {
     m_Animator      = GetComponent <GoapLabourerAnimator> ();
     m_Inventory     = GetComponent <Inventory> ();
     m_ToolDispenser = GetComponent <ToolDispenser> ();
 }