private void RegisterCallbacks(PriorityCallbacks <DungeonGeneratorPostProcessCallback> callbacks) { if (config.InitializeSharedTilemaps) { callbacks.RegisterCallback(PostProcessPriorities.InitializeSharedTilemaps, (level, description) => { var tilemapLayersHandler = config.TilemapLayersHandler ? config.TilemapLayersHandler : defaultTilemapLayersHandlerFactory(); PostProcessUtils.InitializeSharedTilemaps(level, tilemapLayersHandler); }); } if (config.CopyTilesToSharedTilemaps) { callbacks.RegisterCallback(PostProcessPriorities.CopyTilesToSharedTilemaps, (level, description) => { PostProcessUtils.CopyTilesToSharedTilemaps(level); }); } if (config.CenterGrid) { callbacks.RegisterCallback(PostProcessPriorities.CenterGrid, (level, description) => { PostProcessUtils.CenterGrid(level); }); } if (config.DisableRoomTemplatesRenderers) { callbacks.RegisterCallback(PostProcessPriorities.DisableRoomTemplateRenderers, (level, description) => { PostProcessUtils.DisableRoomTemplatesRenderers(level); }); } if (config.DisableRoomTemplatesColliders) { callbacks.RegisterCallback(PostProcessPriorities.DisableRoomTemplateColliders, (level, description) => { PostProcessUtils.DisableRoomTemplatesColliders(level); }); } }
public override IEnumerator Process() { var callbacks = new PriorityCallbacks <DungeonGeneratorPostProcessCallback>(); // Register default callbacks RegisterCallbacks(callbacks); // Register custom callbacks if (customPostProcessTasks != null) { foreach (var postProcessTask in customPostProcessTasks) { postProcessTask.SetRandomGenerator(Payload.Random); callbacks.RegisterAfterAll(postProcessTask.Run); } } // Run callbacks foreach (var callback in callbacks.GetCallbacks()) { callback(Payload.GeneratedLevel, Payload.LevelDescription); yield return(null); } }