/// <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); } } } } } }
public static void CopyTilesToSharedTilemaps(GeneratedLevel level) { foreach (var roomInstance in level.GetRoomInstances().OrderBy(x => x.IsCorridor)) { CopyTilesToSharedTilemaps(level, roomInstance); } }
/// <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); } }
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); } } }