public override bool checkProceduralPrecondition(GameObject agent) { //find nearest deposit: WoodDepositComponent[] woodDeposits = (WoodDepositComponent[])FindObjectsOfType(typeof(WoodDepositComponent)); WoodDepositComponent closest = null; float closestDist = 0; foreach (WoodDepositComponent woodDeposit in woodDeposits) { if (woodDeposit.numWood > 0) { if (closest == null) { closest = woodDeposit; closestDist = (woodDeposit.gameObject.transform.position - agent.transform.position).magnitude; } else { float dist = (woodDeposit.gameObject.transform.position - agent.transform.position).magnitude; if (dist < closestDist) { closest = woodDeposit; closestDist = dist; } } } } if (closest == null) { return(false); } targetWoodDeposit = closest; target = targetWoodDeposit.gameObject; return(closest != null); }
public override void reset() { hasWood = false; targetWoodDeposit = null; }