public bool HasOutlineOverride() { var tilemapsRoot = RoomTemplateUtils.GetTilemapsRoot(gameObject); var outlineOverride = tilemapsRoot.transform.Find(GeneratorConstants.OutlineOverrideLayerName); return(outlineOverride != null); }
public void RemoveOutlineOverride() { if (!HasOutlineOverride()) { return; } var tilemapsRoot = RoomTemplateUtils.GetTilemapsRoot(gameObject); var outlineOverride = tilemapsRoot.transform.Find(GeneratorConstants.OutlineOverrideLayerName).gameObject; PostProcessUtils.Destroy(outlineOverride); }
public static void InitializeSharedTilemaps(GeneratedLevel level, TilemapLayersStructureMode mode, ITilemapLayersHandler defaultTilemapLayersHandler, ITilemapLayersHandler customTilemapLayersHandler, GameObject example, Material tilemapMaterial) { GameObject tilemapsRoot; if (/*mode == TilemapLayersStructureMode.Automatic || */ mode == TilemapLayersStructureMode.FromExample) { if (mode == TilemapLayersStructureMode.FromExample && example == null) { throw new ConfigurationException($"When {nameof(PostProcessConfig.TilemapLayersStructure)} is set to {nameof(TilemapLayersStructureMode.FromExample)}, {nameof(PostProcessConfig.TilemapLayersExample)} must not be null. Please set the field in the Dungeon Generator component."); } //var tilemapsSource = mode == TilemapLayersStructureMode.Automatic // ? level.GetRoomInstances().First().RoomTemplateInstance // : example; var tilemapsSource = example; var tilemapsSourceRoot = RoomTemplateUtils.GetTilemapsRoot(tilemapsSource); if (mode == TilemapLayersStructureMode.FromExample && tilemapsSourceRoot == tilemapsSource) { throw new ConfigurationException($"Given {nameof(PostProcessConfig.TilemapLayersExample)} is not valid as it does not contain a game object called {GeneratorConstants.TilemapsRootName} that holds individual tilemap layers."); } tilemapsRoot = Object.Instantiate(tilemapsSourceRoot, level.RootGameObject.transform); tilemapsRoot.name = GeneratorConstants.TilemapsRootName; foreach (var tilemap in tilemapsRoot.GetComponentsInChildren <Tilemap>()) { tilemap.ClearAllTiles(); } } else { // Initialize GameObject that will hold tilemaps tilemapsRoot = new GameObject(GeneratorConstants.TilemapsRootName); tilemapsRoot.transform.parent = level.RootGameObject.transform; if (mode == TilemapLayersStructureMode.Default) { defaultTilemapLayersHandler.InitializeTilemaps(tilemapsRoot); } else if (mode == TilemapLayersStructureMode.Custom) { if (customTilemapLayersHandler == null) { throw new ConfigurationException($"When {nameof(PostProcessConfig.TilemapLayersStructure)} is set to {nameof(TilemapLayersStructureMode.Custom)}, {nameof(PostProcessConfig.TilemapLayersHandler)} must not be null. Please set the field in the Dungeon Generator component."); } customTilemapLayersHandler.InitializeTilemaps(tilemapsRoot); } } }
public static void SetTilemapsMaterial(GeneratedLevel level, Material tilemapMaterial) { if (tilemapMaterial == null) { return; } var tilemapsRoot = RoomTemplateUtils.GetTilemapsRoot(level.RootGameObject); foreach (var tilemapRenderer in tilemapsRoot.GetComponentsInChildren <TilemapRenderer>()) { tilemapRenderer.material = tilemapMaterial; } }
public void AddOutlineOverride() { if (HasOutlineOverride()) { return; } var tilemapsRoot = RoomTemplateUtils.GetTilemapsRoot(gameObject); var outlineOverride = new GameObject(GeneratorConstants.OutlineOverrideLayerName); outlineOverride.transform.parent = tilemapsRoot.transform; outlineOverride.AddComponent <Tilemap>(); outlineOverride.AddComponent <TilemapRenderer>(); outlineOverride.AddComponent <OutlineOverride>(); outlineOverride.GetComponent <TilemapRenderer>().sortingOrder = 1000; }