Beispiel #1
0
 private int AdjustLightPart1(int brightness, LightAction action)
 {
     return(action switch
     {
         LightAction.TurnOn => 1,
         LightAction.Toggle => brightness == 1 ? 0 : 1,
         LightAction.TurnOff => 0,
     });
Beispiel #2
0
 public Command(LightAction action, Color color, int actionTime)
 {
     _action     = action;
     _color      = color;
     _actionTime = actionTime;
 }
Beispiel #3
0
    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();
    }
Beispiel #4
0
    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;
          }
    }
Beispiel #5
0
 //trigger effect on lights that turns them on in sequence
 public void FXTurnOnInSequence(TurnOnInSequenceParams paramDef)
 {
     _curLightOverride = LightAction.TurnOnInSequence;
        _turnOnSeqParams = paramDef;
        _lightActionStartTime = Time.time;
 }
Beispiel #6
0
 //trigger effect on lights that turns them on in sequence
 public void FXTurnOnAll(TurnAllOnParams paramDef)
 {
     _curLightOverride = LightAction.TurnAllOn;
        _turnOnAllParams = paramDef;
        _lightActionStartTime = Time.time;
 }
Beispiel #7
0
 public void FXScrollColors(ScrollColorParams paramDef)
 {
     _curLightOverride = LightAction.ScrollColors;
        _scrollColorParams = paramDef;
        _lightActionStartTime = Time.time;
 }
Beispiel #8
0
 //trigger effect on lights that turns them on in sequence
 public void FXGradientCycle(GradientCycleParams paramDef)
 {
     _curLightOverride = LightAction.GradientCycle;
        _gradCycleParams = paramDef;
        _lightActionStartTime = Time.time;
 }
Beispiel #9
0
 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;
 }