public void Move(T ObjectToMove, Vector2 Offset) { ObjectToMove.Collision.Position += 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 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); } } } }