Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
                    }
                }
            }
        }