public void UpdateUnitPointLists(ClusterConditions CC) { if (ListUnits.Count == 0) { return; } List <int> RemovalIndexList = new List <int>(); bool changeOccured = false; foreach (var item in ListUnits) { if (!item.IsStillValid() || (!CC.IgnoreNonTargetable || !item.IsTargetable.Value)) { RemovalIndexList.Add(ListUnits.IndexOf(item)); RAGUIDS.Remove(item.RAGUID); changeOccured = true; } } if (changeOccured) { RemovalIndexList.Sort(); RemovalIndexList.Reverse(); foreach (var item in RemovalIndexList) { //ListCacheObjects.RemoveAt(item); ListUnits.RemoveAt(item); ListPoints.RemoveAt(item); } if (ListUnits.Count > 1) { //Logger.DBLog.InfoFormat("Updating Cluster"); //Reset Vars Info = new ClusterInfo(); NearestMonsterDistance = -1f; //Set default using First Unit CacheUnit firstUnit = ListUnits[0]; MidPoint = firstUnit.PointPosition; RAGUIDS.Add(firstUnit.RAGUID); NearestMonsterDistance = firstUnit.CentreDistance; Info.Update(ref firstUnit); //Iterate thru the remaining for (int i = 1; i < ListUnits.Count - 1; i++) { this.UpdateProperties(ListUnits[i]); } } } }
} // of overloaded constructor public UnitCluster(double p_Dist, CacheUnit unit) : base(p_Dist, unit) { ListUnits = new List <CacheUnit>(); ListUnits.Add(unit); NearestMonsterDistance = unit.CentreDistance; Info = new ClusterInfo(); Info.Update(ref unit); } // of overloaded constructor
public UnitCluster(double p_Dist, CacheUnit unit) : base(p_Dist, unit) { ListUnits = new List<CacheUnit>(); ListUnits.Add(unit); NearestMonsterDistance = unit.CentreDistance; Info = new ClusterInfo(); Info.Update(ref unit); }
public void UpdateUnitPointLists(ClusterConditions CC) { if (ListUnits.Count == 0) return; List<int> RemovalIndexList = new List<int>(); bool changeOccured = false; foreach (var item in ListUnits) { if (!item.IsStillValid() || (!CC.IgnoreNonTargetable || !item.IsTargetable.Value)) { RemovalIndexList.Add(ListUnits.IndexOf(item)); RAGUIDS.Remove(item.RAGUID); changeOccured = true; } } if (changeOccured) { RemovalIndexList.Sort(); RemovalIndexList.Reverse(); foreach (var item in RemovalIndexList) { //ListCacheObjects.RemoveAt(item); ListUnits.RemoveAt(item); ListPoints.RemoveAt(item); } if (ListUnits.Count > 1) { //Logger.DBLog.InfoFormat("Updating Cluster"); //Reset Vars Info = new ClusterInfo(); NearestMonsterDistance = -1f; //Set default using First Unit CacheUnit firstUnit = ListUnits[0]; MidPoint = firstUnit.PointPosition; RAGUIDS.Add(firstUnit.RAGUID); NearestMonsterDistance = firstUnit.CentreDistance; Info.Update(ref firstUnit); //Iterate thru the remaining for (int i = 1; i < ListUnits.Count - 1; i++) { this.UpdateProperties(ListUnits[i]); } } } }