public void Update(GameTime gameTime) { List <Creep> DirtyCreeps = new List <Creep>(); foreach (var v in CreepWaypointDict) { Creep c = v.Key; if (creepPath.UpdateCreep(c, v.Value) == true) { DirtyCreeps.Add(c); } c.Update(gameTime); //c.Rotation = c.Center - MousePos; } foreach (Tower t in ActiveTowers) { t.Update(gameTime); t.Rotation = t.Center - MousePos; } foreach (Creep c in DirtyCreeps) { CreepWaypointDict[c]++; } foreach (Projectile p in ActiveProjectiles) { p.Update(gameTime); } CollisionDetection(); foreach (Tower T in TowersToRemove) { ActiveTowers.Remove(T); } foreach (Creep C in CreepsToRemove) { CreepWaypointDict.Remove(C); } foreach (Projectile P in ProjectilesToRemove) { ActiveProjectiles.Remove(P); } TowersToRemove.Clear(); CreepsToRemove.Clear(); ProjectilesToRemove.Clear(); }