using Ichni.RhythmGame.Beatmap; using Lean.Pool; using MoreMountains.Feedbacks; using UnityEngine; namespace Ichni.RhythmGame { public class CameraZoomEffect : EffectBase { public float duration; public float relativeZoom; public AnimationCurve zoomCurve; public CameraZoomEffect(float duration, float relativeZoom, AnimationCurve zoomCurve) { this.effectTime = 0f; this.duration = duration; this.relativeZoom = relativeZoom; this.zoomCurve = zoomCurve; } public override void Adjust() { MMF_Player effect = LeanPool.Spawn(GameManager.instance.basePrefabs.cameraZoomEffect).GetComponent(); effect.GetFeedbackOfType().Duration = duration; effect.GetFeedbackOfType().RemapFieldOfViewOne = relativeZoom; effect.GetFeedbackOfType().ShakeFieldOfView = zoomCurve; effect.PlayFeedbacks(); LeanPool.Despawn(effect.gameObject, duration); } public override EffectBase_BM ConvertToBM() { return new CameraZoomEffect_BM(duration, relativeZoom, zoomCurve); } } namespace Beatmap { public class CameraZoomEffect_BM : EffectBase_BM { public float duration; public float relativeZoom; public AnimationCurve zoomCurve; public CameraZoomEffect_BM() { } public CameraZoomEffect_BM(float duration, float relativeZoom, AnimationCurve zoomCurve) { this.duration = duration; this.relativeZoom = relativeZoom; this.zoomCurve = zoomCurve; } public override EffectBase ConvertToGameType(GameElement attachedGameElement) { return new CameraZoomEffect(duration, relativeZoom, zoomCurve); } } } }