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