using System.Collections; using Ichni.RhythmGame.Beatmap; using Lean.Pool; using MoreMountains.Feedbacks; namespace Ichni.RhythmGame { public class CameraShakeEffect : EffectBase { public float duration; public float frequency; public float amplitudeX; public float amplitudeY; public float amplitudeZ; public CameraShakeEffect(float duration, float frequency, float amplitudeX, float amplitudeY, float amplitudeZ) { this.effectTime = 0; this.duration = duration; this.frequency = frequency; this.amplitudeX = amplitudeX; this.amplitudeY = amplitudeY; this.amplitudeZ = amplitudeZ; } public override void Adjust() { MMF_Player effect = LeanPool.Spawn(GameManager.instance.basePrefabs.cameraShakeEffect).GetComponent(); effect.GetFeedbackOfType().CameraShakeProperties.Duration = duration; effect.GetFeedbackOfType().CameraShakeProperties.Frequency = 1f / frequency; effect.GetFeedbackOfType().CameraShakeProperties.AmplitudeX = amplitudeX; effect.GetFeedbackOfType().CameraShakeProperties.AmplitudeY = amplitudeY; effect.GetFeedbackOfType().CameraShakeProperties.AmplitudeZ = amplitudeZ; effect.PlayFeedbacks(); LeanPool.Despawn(effect.gameObject, duration); } public override EffectBase_BM ConvertToBM() { return new CameraShakeEffect_BM(duration, frequency, amplitudeX, amplitudeY, amplitudeZ); } } namespace Beatmap { public class CameraShakeEffect_BM : EffectBase_BM { public float duration; public float frequency; public float amplitudeX; public float amplitudeY; public float amplitudeZ; public CameraShakeEffect_BM() { } public CameraShakeEffect_BM(float duration, float frequency, float amplitudeX, float amplitudeY, float amplitudeZ) { this.effectTime = 0; this.duration = duration; this.frequency = frequency; this.amplitudeX = amplitudeX; this.amplitudeY = amplitudeY; this.amplitudeZ = amplitudeZ; } public override EffectBase ConvertToGameType(GameElement attachedGameElement) { return new CameraShakeEffect(duration, frequency, amplitudeX, amplitudeY, amplitudeZ); } } } }