public void PlayEffect(int player = 0, float duration = 0.5f, float shake = 0f, int effects = Effects.NONE, float startFading = -1f) { if (!effectsActive) { return; } //Player 0 means both players TemporalEffectInfo effect = new TemporalEffectInfo(player, effects, shake, duration, (startFading == -1f ? duration * 0.75f : startFading)); temporalEffectList.Add(effect); }
// Update is called once per frame void Update() { if (temporalEffectList.Count > 0 || continousEffectList.Count > 0) { p0Effects.Reset(); p1Effects.Reset(); p2Effects.Reset(); finalEffects.Reset(); if (!pauseEffects) { for (int i = temporalEffectList.Count - 1; i >= 0; --i) { TemporalEffectInfo effect = temporalEffectList[i]; effect.Update(); if (effect.duration > 0) { switch (effect.player) { case 0: currentPlayerEffects = p0Effects; break; case 1: currentPlayerEffects = p1Effects; break; case 2: currentPlayerEffects = p2Effects; break; } currentPlayerEffects.SetMax(effect); } else { temporalEffectList.RemoveAt(i); } } foreach (ContinousEffectInfo effect in continousEffectList.Values) { switch (effect.player) { case 0: currentPlayerEffects = p0Effects; break; case 1: currentPlayerEffects = p1Effects; break; case 2: currentPlayerEffects = p2Effects; break; } currentPlayerEffects.SetMax(effect); } if (rsc.gameInfo.numberOfPlayers == 1) { finalEffects.SetMax(p0Effects, p1Effects); } else { if (rsc.gameInfo.player1Controller.IsPlaying && rsc.gameInfo.player2Controller.IsPlaying) { finalEffects.Copy(p0Effects); } else if (rsc.gameInfo.player1Controller.IsPlaying) { finalEffects.SetMax(p0Effects, p1Effects); } else if (rsc.gameInfo.player2Controller.IsPlaying) { finalEffects.SetMax(p0Effects, p2Effects); } } } //If effects paused should stop only shake else { finalEffects.shakeIntensity = 0f; } mainCameraController.SetEffects(finalEffects); entryCameraController.SetEffects(finalEffects); godCameraController.SetEffects(finalEffects); } }