public static void AssignForceChangeMethod(IDataBlockType blockTypeCache) { //TODO: Better Support switch (blockTypeCache.GetShortName().ToLower()) { case "fogsettings": blockTypeCache.RegisterOnChangeEvent(() => { if (Builder.CurrentFloor.IsBuilt) { Logger.Error("Fog Transition Code is not working properly, Skipping this one"); return; var instance = EnvironmentStateManager.Current; Logger.Error("Read Replicator"); var replicator = instance.m_stateReplicator; Logger.Error("Read State"); var state = replicator.State; Logger.Error("Read FogState"); var fogState = state.FogState; Logger.Error("Read ID"); var id = fogState.FogDataID; Logger.Error($"FogTransition {id}"); if (!GameDataBlockBase <FogSettingsDataBlock> .HasBlock(id)) { id = RundownManager.ActiveExpedition.Expedition.FogSettings; } if (GameDataBlockBase <FogSettingsDataBlock> .HasBlock(id)) { EnvironmentStateManager.SetFogSettingsLocal(id); } } }); break; case "lightsettings": blockTypeCache.RegisterOnChangeEvent(() => { if (!Builder.CurrentFloor.IsBuilt) { return; } foreach (var zone in Builder.CurrentFloor.allZones) { foreach (var node in zone.m_courseNodes) { LG_BuildZoneLightsJob.ApplyLightSettings(node.m_lightsInNode, zone.m_lightSettings, false); } } }); break; } }
private IEnumerator ActivateSequence(uint fogID, float transitionDelay, float transitionDuration) { var fogDataBlock = FogSettingsDataBlock.GetBlock(fogID); if (fogDataBlock != null) { if (transitionDelay > 0.0f) { yield return(new WaitForSeconds(transitionDelay)); } EnvironmentStateManager.AttemptStartFogTransition(fogID, transitionDuration); } }