public void Collisions() { foreach (PhysicsSet p in ps) { LookupLinkedListSet <Entity> q1 = ents[p.Class1], q2 = ents[p.Class2]; foreach (Entity e1 in q1) { foreach (Entity e2 in q2) { if (e1.Shape.Meets(e1.Position, e2.Shape, e2.Position)) { foreach (OnCollision o in p.CollisionHandlers) { GameEvent gev = o(e1, e2); if (gev != null) { game.Events.Add(gev); } } } else { foreach (OnDisconnect o in p.DisconnectHandlers) { GameEvent gev = o(e1, e2); if (gev != null) { game.Events.Add(gev); } } } } } } }
public AdvancedEntityManager(PhysicsManager phys, RenderManager renders, params double[] ints) { pm = phys; rm = renders; oldTime = 0; entities = new LookupLinkedListSet <Entity>(); bulletShooters = new LookupLinkedListSet <Entity>(); }
public void RemovePermanently(Entity e) { if (ents.ContainsKey(e.RenderClass)) { ents[e.RenderClass].RemovePermanently(e); } else { LookupLinkedListSet <Entity> lls = new LookupLinkedListSet <Entity>(); ents[e.RenderClass] = lls; } }
public void Remove(Entity e) { if (ents.ContainsKey(e.PhysicsClass)) { ents[e.PhysicsClass].Remove(e); } else { LookupLinkedListSet <Entity> lls = new LookupLinkedListSet <Entity>(); ents[e.PhysicsClass] = lls; } }
public void Add(Entity e) { //Console.WriteLine(e.RenderClass); if (ents.ContainsKey(e.RenderClass)) { ents[e.RenderClass].Add(e); } else { LookupLinkedListSet <Entity> lls = new LookupLinkedListSet <Entity>(); lls.Add(e); ents[e.RenderClass] = lls; } }
public void AddDisconnectHandler(Id p1, Id p2, OnDisconnect ch) { foreach (PhysicsSet p in ps) { if ((p.Class1.Equals(p1) && p.Class2.Equals(p2)) || (p.Class2.Equals(p1) && p.Class1.Equals(p2))) { p.DisconnectHandlers.Add(ch); return; } } if (!ents.ContainsKey(p1)) { ents[p1] = new LookupLinkedListSet <Entity>(); } if (!ents.ContainsKey(p2)) { ents[p2] = new LookupLinkedListSet <Entity>(); } PhysicsSet newset = new PhysicsSet(p1, p2); newset.DisconnectHandlers.Add(ch); ps.Add(newset); }