public void Move(T ObjectToMove, Vector2 Offset) { ObjectToMove.Collision.Center += Offset; CollisionZone <T> Root = ObjectToMove.Collision.ListParent.First.Value; foreach (CollisionZone <T> ActiveParent in ObjectToMove.Collision.ListParent) { ActiveParent.ListObjectInZoneAndOverlappingParents.Remove(ObjectToMove); } ObjectToMove.Collision.ListParent.Clear(); Root.AddToZone(ObjectToMove); }
public AdventureMap() { BulletCollisions = new List <Bullet>(1024); PlayerCollisions = new CollisionZone <Player>(2000, 100, -500, -500); WorldCollisions = new CollisionZone <WorldObject>(2000, 100, -500, -500); BombCollisions = new CollisionZone <Bomb>(2000, 100, -500, -500); ExplosionCollisions = new List <SimpleLinearExplosion>(); ListWorldCollisionPolygon = new List <Polygon>(); ListImages = new List <SimpleAnimation>(); ListProp = new List <Prop>(); }
public CollisionZone(int Size, int NumberOfSubdivisions, int ZoneX, int ZoneY) { this.ZoneX = ZoneX; this.ZoneY = ZoneY; ListObjectInZoneAndOverlappingParents = new LinkedList <T>(); ArraySubZone = new CollisionZone <T> [NumberOfSubdivisions * NumberOfSubdivisions]; if (NumberOfSubdivisions > 0) { SubdivisionSize = Size / NumberOfSubdivisions; for (int X = 0; X < NumberOfSubdivisions; ++X) { for (int Y = 0; Y < NumberOfSubdivisions; ++Y) { ArraySubZone[X + Y * NumberOfSubdivisions] = new CollisionZone <T>(SubdivisionSize, 0, ZoneX + X * NumberOfSubdivisions, ZoneY + Y * NumberOfSubdivisions); } } } }