public GoapObject QueryClosestObjectWithID(GoapID _queryObjectsID, int _tag, Vector2 _agentPosition, out float _sqrDistanceToTarget) { _sqrDistanceToTarget = float.MaxValue; if (!goapObjects.ContainsKey(_queryObjectsID.value)) { return(null); } List <GoapObject> objects = goapObjects[_queryObjectsID.value]; GoapObject targetObject = null; for (int i = 0; i < objects.Count; i++) { if (!objects[i].CanBeUsed() || objects[i].GetTagHash() != _tag) { continue; } float sqrDist = Vector2.SqrMagnitude(objects[i].GetPositionXZ() - _agentPosition); if (sqrDist < _sqrDistanceToTarget) { _sqrDistanceToTarget = sqrDist; targetObject = objects[i]; } } return(targetObject); }
public List <GoapObject> QueryObjectsWithID(GoapID _ID) { if (!goapObjects.ContainsKey(_ID.value)) { goapObjects[_ID.value] = new List <GoapObject>(); } return(goapObjects[_ID.value]); }