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;
            }
        }
Esempio n. 2
0
        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);
            }
        }