Files
beyond/Assets/Scripts/Powers/ShieldEffectController.cs
2024-11-20 15:21:28 +01:00

75 lines
2.6 KiB
C#

using Sirenix.OdinInspector;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Beyond
{
public class ShieldEffectController : MonoBehaviour
{
[SerializeField] private RFX1_ShaderFloatCurve shaderEffectController;
private AnimationCurve enableCurve = AnimationCurve.EaseInOut(0, 0, 1, 1), disableCurve = AnimationCurve.EaseInOut(0, 1, 1, 0);
[SerializeField] private List<ParticleSystem> bonusParticles;
[SerializeField] private List<RFX1_LightCurves> lightControllers;
[SerializeField] private RFX1_AudioVolumeCurves audioController;
[SerializeField] private ShieldCollisionController shieldCollisionController;
public void InitializeEffect()
{
enabled = true;
bonusParticles.ForEach(particles => particles.Play());
shaderEffectController.FloatCurve = enableCurve;
shaderEffectController.GraphTimeMultiplier = 3f;
lightControllers.ForEach(controller =>
{
controller.LightCurve = enableCurve;
controller.GraphTimeMultiplier = 3f;
controller.enabled = true;
}
);
audioController.AudioCurve = enableCurve;
audioController.enabled = true;
StopAllCoroutines();
}
[Button]
public void DisableEffect()
{
shaderEffectController.FloatCurve = disableCurve;
shaderEffectController.GraphTimeMultiplier = 1f;
lightControllers.ForEach(controller =>
{
controller.LightCurve = disableCurve;
controller.GraphTimeMultiplier = 1f;
});
bonusParticles.ForEach(particles => particles.Stop());
audioController.AudioCurve = disableCurve;
StartCoroutine(DisableEffectCoroutine());
}
private IEnumerator DisableEffectCoroutine()
{
audioController.enabled = false;
shaderEffectController.enabled = false;
lightControllers.ForEach(controller => controller.enabled = false);
yield return new WaitForSeconds(Time.deltaTime);
yield return new WaitForSeconds(Time.deltaTime);
lightControllers.ForEach(controller => controller.enabled = true);
shaderEffectController.enabled = true;
audioController.enabled = true;
enabled = false;
}
private void Update()
{
// transform.rotation = Quaternion.identity;
}
}
}