private int AdjustLightPart1(int brightness, LightAction action) { return(action switch { LightAction.TurnOn => 1, LightAction.Toggle => brightness == 1 ? 0 : 1, LightAction.TurnOff => 0, });
public Command(LightAction action, Color color, int actionTime) { _action = action; _color = color; _actionTime = actionTime; }
public void ResetInstallation() { _isFinaleActive = false; _curLightOverride = LightAction.None; Nights2AudioMgr.Instance.StopShamashDrones(); Nights2AudioMgr.Instance.ActivateBackingLoop(Nights2AudioMgr.BackingLoops.kIntroAmbience); if (FinaleEvent != null) FinaleEvent.Stop(); _torchHasMagic = false; SetState(Nights2State.GettingReady); ResetBeacons(); }
void UpdateLightFX() { if (_curLightOverride == LightAction.None) return; float u = 0.0f; float actionElapsed = Time.time - _lightActionStartTime; switch (_curLightOverride) { //turn on all lights together case LightAction.TurnAllOn: float totalAllOnTime = (_turnOnAllParams.Duration + _turnOnAllParams.FadeOutTime); u = Mathf.Clamp01(actionElapsed / totalAllOnTime); //fade in for a bit const float kFadeInTime = .25f; float blendIntensityU = Mathf.Clamp01(actionElapsed / kFadeInTime); //fade out if (actionElapsed >= _turnOnAllParams.Duration) { blendIntensityU = 1.0f - Mathf.InverseLerp(_turnOnAllParams.Duration, totalAllOnTime, actionElapsed); } for (int i = 0; i < 8; i++) { EightNightsMgr.GroupID candleGroup = (EightNightsMgr.GroupID)(EightNightsMgr.GroupID.Candle1 + i); LightMgr.Instance.SetAllLightsInGroup(candleGroup, blendIntensityU, _turnOnAllParams.ShouldOverrideColor ? _turnOnAllParams.OverrideColor : LightMgr.Instance.GetDefaultColor(candleGroup)); } break; case LightAction.GradientCycle: u = Mathf.Clamp01(actionElapsed / _gradCycleParams.Duration); //sample the color gradient float gradientSample = (actionElapsed * _gradCycleParams.CycleSpeed) % 1.0f; Color gradColor = _gradCycleParams.ColorGradient.Evaluate(gradientSample); float intensity = 1.0f; if (_gradCycleParams.LevelMeter != null) { intensity = Mathf.Clamp01(_gradCycleParams.LevelMeter.CurLevel * _gradCycleParams.LevelMeterGain); //lights are flickery when value is low, so remap into better range intensity = Mathf.Lerp(.2f, .80f, intensity); } for (int i = 0; i < 8; i++) { EightNightsMgr.GroupID candleGroup = (EightNightsMgr.GroupID)(EightNightsMgr.GroupID.Candle1 + i); LightMgr.Instance.SetAllLightsInGroup(candleGroup, intensity, gradColor); } break; case LightAction.TurnOnInSequence: float turnOnTime = (_turnOnSeqParams.LightOrder.Length * _turnOnSeqParams.NextLightInterval); float totalTime = turnOnTime + _turnOnSeqParams.HoldDuration + _turnOnSeqParams.FadeDuration; u = Mathf.Clamp01(actionElapsed / totalTime); float turnOnU = Mathf.Clamp01(actionElapsed / turnOnTime); int onIdxThresh = (int)(turnOnU * _turnOnSeqParams.LightOrder.Length); float fadeAmt = 1.0f - Mathf.InverseLerp(turnOnTime + _turnOnSeqParams.HoldDuration, totalTime, actionElapsed); for (int i = 0; i < _turnOnSeqParams.LightOrder.Length; i++) { Nights2Beacon candle = _turnOnSeqParams.LightOrder[i]; EightNightsMgr.GroupID candleGroup = Nights2AudioMgr.Instance.GetGroupForBeacon(candle); LightMgr.Instance.SetAllLightsInGroup(candleGroup, (i <= onIdxThresh) ? fadeAmt : 0.0f, LightMgr.Instance.GetDefaultColor(candleGroup)); } break; case LightAction.ScrollColors: float totalScrollTime = _scrollColorParams.HoldDuration + _scrollColorParams.FadeDuration; u = Mathf.Clamp01(actionElapsed / totalScrollTime); float fadeOut = 1.0f - Mathf.InverseLerp(_scrollColorParams.HoldDuration, totalScrollTime, actionElapsed); float scrollOffset = actionElapsed * _scrollColorParams.ScrollSpeed; for (int i = 0; i < _scrollColorParams.LightOrder.Length; i++) { int idx1 = (i + (int)scrollOffset) % _scrollColorParams.LightOrder.Length; int idx2 = (idx1 + 1) % _scrollColorParams.LightOrder.Length; float blendColorU = scrollOffset % 1.0f; Nights2Beacon candle1 = _scrollColorParams.LightOrder[idx1]; Nights2Beacon candle2 = _scrollColorParams.LightOrder[idx2]; Color scrolledColor = Color.Lerp(candle1.CandleColor, candle2.CandleColor, blendColorU); Nights2Beacon candle = _scrollColorParams.LightOrder[i]; EightNightsMgr.GroupID candleGroup = Nights2AudioMgr.Instance.GetGroupForBeacon(candle); LightMgr.Instance.SetAllLightsInGroup(candleGroup, fadeOut, scrolledColor); } break; default: break; } if (Mathf.Approximately(u, 1.0f)) //done? { //finale over if ((_curLightOverride == LightAction.ScrollColors) && (_curState == Nights2State.AllBeaconsLit)) { Nights2AudioMgr.Instance.StopShamashDrones(); Nights2AudioMgr.Instance.ActivateBackingLoop(Nights2AudioMgr.BackingLoops.kIntroAmbience); _isFinaleActive = false; } _curLightOverride = LightAction.None; } }
//trigger effect on lights that turns them on in sequence public void FXTurnOnInSequence(TurnOnInSequenceParams paramDef) { _curLightOverride = LightAction.TurnOnInSequence; _turnOnSeqParams = paramDef; _lightActionStartTime = Time.time; }
//trigger effect on lights that turns them on in sequence public void FXTurnOnAll(TurnAllOnParams paramDef) { _curLightOverride = LightAction.TurnAllOn; _turnOnAllParams = paramDef; _lightActionStartTime = Time.time; }
public void FXScrollColors(ScrollColorParams paramDef) { _curLightOverride = LightAction.ScrollColors; _scrollColorParams = paramDef; _lightActionStartTime = Time.time; }
//trigger effect on lights that turns them on in sequence public void FXGradientCycle(GradientCycleParams paramDef) { _curLightOverride = LightAction.GradientCycle; _gradCycleParams = paramDef; _lightActionStartTime = Time.time; }
public void TriggerSpotFX(LightAction l, float overrideTime = 1.0f, Nights2Spot actionSpot = null, float optionalHoldTime = 0.50f) { _overrideStartTime = Time.time; _overrideTime = overrideTime; //how long to override for _overrideHoldTime = optionalHoldTime; _overrideAction = l; _actionSpot = actionSpot; }