using Ichni.RhythmGame.Beatmap; using Lean.Pool; using UnityEngine; namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse { public class DTMRippleEffect : EffectBase { private DTM_Ripple ripple; public float rippleTime; public Vector3 positionOffset; public Vector3 eulerAnglesOffset; public Vector3 scale; public Color emissionColor; public float emissionIntensity; public DTMRippleEffect(float rippleTime, Color emissionColor, float emissionIntensity, Vector3 positionOffset, Vector3 eulerAnglesOffset, Vector3 scale) { this.effectTime = 0; this.rippleTime = rippleTime; this.positionOffset = positionOffset; this.eulerAnglesOffset = eulerAnglesOffset; this.scale = scale; this.emissionColor = emissionColor; this.emissionIntensity = emissionIntensity; } public override void Adjust() { GameObject prefab = GameManager.instance.customPrefabs["departure_to_multiverse"].GetPrefab("DTM_Ripple"); ripple = LeanPool.Spawn(prefab, attachedGameElement.transform).GetComponent(); ripple.transform.localPosition = positionOffset; ripple.transform.localEulerAngles = eulerAnglesOffset; ripple.transform.localScale = scale; ripple.transform.SetParent(null); ripple.SetRippleTime(rippleTime); ripple.SetEmissionColor(emissionColor * Mathf.Pow(2, emissionIntensity)); ripple.mainRipple.Play(); LeanPool.Despawn(ripple.gameObject, rippleTime); } public override EffectBase_BM ConvertToBM() { return new Beatmap.DTMRippleEffect_BM(rippleTime, emissionColor, emissionIntensity, positionOffset, eulerAnglesOffset, scale); } } namespace Beatmap { public class DTMRippleEffect_BM : EffectBase_BM { public float rippleTime; public Vector3 positionOffset; public Vector3 eulerAngles; public Vector3 scale; public Color emissionColor = Color.white; public float emissionIntensity = 0; public DTMRippleEffect_BM() { } public DTMRippleEffect_BM(float rippleTime, Color emissionColor, float emissionIntensity, Vector3 positionOffset, Vector3 eulerAngles, Vector3 scale) { this.rippleTime = rippleTime; this.positionOffset = positionOffset; this.eulerAngles = eulerAngles; this.scale = scale; this.emissionColor = emissionColor; this.emissionIntensity = emissionIntensity; } public override EffectBase ConvertToGameType(GameElement attachedGameElement) { return new DTMRippleEffect(rippleTime, emissionColor, emissionIntensity, positionOffset, eulerAngles, scale) { attachedGameElement = attachedGameElement }; } } } }