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 bonusParticles; [SerializeField] private List 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; } } }