using System.Collections; using System.Collections.Generic; using DG.Tweening; using Ichni.RhythmGame.Beatmap; using UnityEngine; namespace Ichni.RhythmGame { public class CameraTiltEffect : EffectBase { public float duration; public Vector3 tiltValue; public AnimationCurve tiltCurve; GameCamera gameCamera=> GameManager.instance.cameraManager.gameCamera; Tweener tiltTweener; Tweener tiltBackTweener; public CameraTiltEffect(float duration, Vector3 tiltValue, AnimationCurve tiltCurve) { this.effectTime = duration; this.duration = duration; this.tiltValue = tiltValue; this.tiltCurve = tiltCurve; } public override void Recover() { tiltTweener?.Kill(true); tiltBackTweener?.Kill(true); gameCamera.cam.transform.localEulerAngles = Vector3.zero; } public override void PreExecute() { tiltTweener = gameCamera.cam.transform.DOBlendableLocalRotateBy(tiltValue, duration, RotateMode.FastBeyond360).SetEase(tiltCurve).Play(); } public override void Adjust() { } public override EffectBase_BM ConvertToBM() { return new CameraTiltEffect_BM(duration, tiltValue, tiltCurve); } public override void Disrupt() { tiltTweener?.Kill(); tiltBackTweener = gameCamera.cam.transform.DOLocalRotate(Vector3.zero, 0.4f).SetEase(Ease.OutSine).Play(); } } namespace Beatmap { public class CameraTiltEffect_BM : EffectBase_BM { public float duration; public Vector3 tiltValue; public AnimationCurve tiltCurve; public CameraTiltEffect_BM(float duration, Vector3 tiltValue, AnimationCurve tiltCurve) { this.effectTime = duration; this.duration = duration; this.tiltValue = tiltValue; this.tiltCurve = tiltCurve; } public override EffectBase ConvertToGameType(GameElement attachedGameElement) { return new CameraTiltEffect(duration, tiltValue, tiltCurve); } } } }