public EnvironmentQueryResult QueryNodesOfType <T>() where T : I_EnvironmentNode { if (!m_EnvironmentNodesDict.ContainsKey(typeof(T))) { m_EnvironmentNodesDict[typeof(T)] = new EnvironmentQueryResult(); } return((EnvironmentQueryResult)m_EnvironmentNodesDict [typeof(T)]); }
public Vector2[] QueryXZPositionsOfType <T>() { if (!m_EnvironmentNodesDict.ContainsKey(typeof(T))) { m_EnvironmentNodesDict[typeof(T)] = new EnvironmentQueryResult(); } return(((EnvironmentQueryResult)m_EnvironmentNodesDict[typeof(T)]).GetPositionsCopy()); }
public void RegisterNodeAsType(I_EnvironmentNode _poi, System.Type _type) { if (!m_EnvironmentNodesDict.ContainsKey(_type)) { m_EnvironmentNodesDict[_type] = new EnvironmentQueryResult(); } Debug.Log("[POIManager] Registerd POI " + _type.Name); m_EnvironmentNodesDict[_type].Add(_poi); }
public T QueryRandomNodeOfType <T>() where T : I_EnvironmentNode { EnvironmentQueryResult pois = QueryNodesOfType <T>(); if (pois.Count() > 0) { I_EnvironmentNode randomPoi = pois.AtIndex(Random.Range(0, pois.Count())); return((T)randomPoi); } return(default(T)); }
public T QueryClosestNodeOfType <T>(Vector2 _pos, out float _sqrDistance) where T : I_EnvironmentNode { EnvironmentQueryResult pois = QueryNodesOfType <T>(); float closestDistance = float.MaxValue; int closestIndex = -1; for (int i = 0; i < pois.Count(); i++) { Vector2 posXZ = pois.GetPositionXZ(i); float distance = Vector2.SqrMagnitude(_pos - posXZ); closestIndex = i; } _sqrDistance = closestDistance; if (closestIndex == -1) { return(default(T)); } return((T)pois.AtIndex(closestIndex)); }