Exemplo n.º 1
0
        /// <summary>
        /// Disables colliders of individual room template tilemaps in the generated level.
        /// The goal is to try to keep triggers functioning.
        /// </summary>
        /// <param name="level"></param>
        public static void DisableRoomTemplatesColliders(GeneratedLevel level)
        {
            // Iterate through all the rooms
            foreach (var roomInstance in level.GetRoomInstances())
            {
                var roomTemplateInstance = roomInstance.RoomTemplateInstance;
                var tilemaps             = RoomTemplateUtils.GetTilemaps(roomTemplateInstance);

                foreach (var tilemap in tilemaps)
                {
                    // Iterate through all the colliders
                    foreach (var collider in tilemap.GetComponents <Collider2D>())
                    {
                        // If the collider is not used by composite collider and it is not a trigger, destroy it
                        if (!collider.usedByComposite && !collider.isTrigger)
                        {
                            Destroy(collider);
                        }
                        else if (collider.usedByComposite)
                        {
                            // If the collider is used by composite but that composite does not exist or is not a trigger, destroy it
                            if (collider.composite == null || !collider.composite.isTrigger)
                            {
                                Destroy(collider);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
 public static void CopyTilesToSharedTilemaps(GeneratedLevel level)
 {
     foreach (var roomInstance in level.GetRoomInstances().OrderBy(x => x.IsCorridor))
     {
         CopyTilesToSharedTilemaps(level, roomInstance);
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// Copies to from individual room templates to shared tilemaps.
        /// </summary>
        /// <remarks>
        /// The order is important. First, copy all basic rooms and only then copy corridor rooms.
        /// </remarks>
        /// <param name="level"></param>
        public static void CopyTilesToSharedTilemaps(GeneratedLevel level)
        {
            var destinationTilemaps = level.GetSharedTilemaps();

            foreach (var roomInstance in level.GetRoomInstances().OrderBy(x => x.IsCorridor))
            {
                CopyTiles(roomInstance, destinationTilemaps, true, false);
            }
        }
Exemplo n.º 4
0
        public static void DisableRoomTemplatesRenderers(GeneratedLevel level)
        {
            foreach (var roomInstance in level.GetRoomInstances())
            {
                var roomTemplateInstance = roomInstance.RoomTemplateInstance;
                var tilemaps             = RoomTemplateUtils.GetTilemaps(roomTemplateInstance);

                foreach (var tilemap in tilemaps)
                {
                    var tilemapRenderer = tilemap.GetComponent <TilemapRenderer>();
                    Destroy(tilemapRenderer);
                }
            }
        }