75 lines
2.6 KiB
C#
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;
|
|
}
|
|
}
|
|
} |