public void OneTact() { Console.WriteLine("Doo tact"); var keepers = new List <Keeper>(); var allEnitities = new List <BaseMapEnitity>(); using (var data = new DataKeeper()) { _visitor.Data = data; keepers.AddRange(data.Keepers); allEnitities.AddRange(data.Enitities); foreach (var keeper in keepers) { var keepresEnitity = new List <BaseMapEnitity>(); var detectedEnitity = new HashSet <BaseMapEnitity>(); var collisionEnitity = new HashSet <BaseMapEnitity>(); keepresEnitity.AddRange(allEnitities.Where(e => e.EnitityKeeper.KeeperId == keeper.KeeperId)); foreach (var enitity in keepresEnitity) { foreach (var detected in allEnitities.Where(e => enitity.IsDetected(e) && e.KeeperId != keeper.KeeperId)) { detectedEnitity.Add(detected); } foreach (var Collided in allEnitities.Where(e => enitity.IsCollided(e) && e.KeeperId != keeper.KeeperId)) { collisionEnitity.Add(Collided); } } foreach (var o in keepresEnitity) { o.Visit(_visitor, detectedEnitity); } /* * foreach (var o in keepresEnitity) * { * o.Visit(_visitor, detectedEnitity); * Console.WriteLine("\n"+o.ToString() + "\n\n"); * } * Console.WriteLine(); * foreach (var o in detectedEnitity) * Console.WriteLine(o.ToString() + "\n"); * Console.WriteLine(); * foreach (var o in collisionEnitity) * Console.WriteLine(o.ToString() + "\n"); * Console.WriteLine(); * * Console.WriteLine(); */ } data.SaveChanges(); } }