Files
ichni_Creator_Studio/Assets/ThemeBundles/DepartureToMultiverse/Scripts/NoteEffect/DTMRippleEffect.cs

124 lines
4.9 KiB
C#
Raw Normal View History

2025-06-28 03:01:03 -04:00
using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
using Ichni.Editor;
using Ichni.RhythmGame.Beatmap;
using Lean.Pool;
using UnityEngine;
namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse
{
public class DTMRippleEffect : EffectBase
{
private GameObject prefab;
2025-06-28 12:06:19 -04:00
private DTM_Ripple ripple;
2025-06-28 03:01:03 -04:00
public float rippleTime;
public Vector3 positionOffset;
public Vector3 eulerAnglesOffset;
public Vector3 scale;
public Color emissionColor;
public float emissionIntensity;
2025-06-28 12:06:19 -04:00
public DTMRippleEffect(float rippleTime, Color emissionColor, float emissionIntensity)
2025-06-28 03:01:03 -04:00
{
this.effectTime = 0;
this.rippleTime = rippleTime;
this.positionOffset = Vector3.zero;
this.eulerAnglesOffset = Vector3.zero;
this.scale = Vector3.one;
this.emissionColor = emissionColor;
this.emissionIntensity = emissionIntensity;
prefab =
EditorManager.instance.
customPrefabs["departure_to_multiverse"].
GetPrefab("DTM_Ripple");
2025-06-28 03:01:03 -04:00
}
public DTMRippleEffect(float rippleTime, Color emissionColor, float emissionIntensity,
2025-06-28 03:01:03 -04:00
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;
prefab =
EditorManager.instance.
customPrefabs["departure_to_multiverse"].
GetPrefab("DTM_Ripple");
2025-06-28 03:01:03 -04:00
}
2025-06-28 03:01:03 -04:00
public override void Adjust()
{
2025-06-28 12:06:19 -04:00
ripple = LeanPool.Spawn(prefab, attachedGameElement.transform).GetComponent<DTM_Ripple>();
2025-06-28 03:01:03 -04:00
ripple.transform.localPosition = positionOffset;
ripple.transform.localEulerAngles = eulerAnglesOffset;
ripple.transform.localScale = scale;
2025-06-28 12:06:19 -04:00
ripple.transform.SetParent(null);
2025-06-28 12:06:19 -04:00
ripple.SetRippleTime(rippleTime);
ripple.SetEmissionColor(emissionColor * Mathf.Pow(2, emissionIntensity));
ripple.mainRipple.Play();
LeanPool.Despawn(ripple.gameObject, rippleTime);
2025-06-28 03:01:03 -04:00
}
public override EffectBase_BM ConvertToBM()
{
2025-06-28 12:06:19 -04:00
return new Beatmap.DTMRippleEffect_BM(rippleTime, emissionColor, emissionIntensity, positionOffset, eulerAnglesOffset, scale);
2025-06-28 03:01:03 -04:00
}
public override void SetUpInspector()
{
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
var container = inspector.GenerateContainer("DTM Ripple Effect");
var effectSettings1 = container.GenerateSubcontainer(3);
var rippleTimeInputField = inspector.GenerateInputField(this, effectSettings1, "Ripple Time", nameof(rippleTime));
var effectSettings2 = container.GenerateSubcontainer(1);
var emissionColorPicker = inspector.GenerateEmissionColorPicker(this, effectSettings2, "Color", "NULL", nameof(emissionColor), nameof(emissionIntensity));
var positionOffsetInputField = inspector.GenerateVector3InputField(this, effectSettings2, "Position Offset", nameof(positionOffset));
var eulerAnglesInputField = inspector.GenerateVector3InputField(this, effectSettings2, "Euler Angles", nameof(eulerAnglesOffset));
var scaleInputField = inspector.GenerateVector3InputField(this, effectSettings2, "Scale", nameof(scale));
SetRemove(effectSettings2);
2025-06-28 03:01:03 -04:00
}
2025-06-28 03:01:03 -04:00
}
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;
2025-06-28 03:01:03 -04:00
public DTMRippleEffect_BM()
{
2025-06-28 03:01:03 -04:00
}
2025-06-28 12:06:19 -04:00
public DTMRippleEffect_BM(float rippleTime, Color emissionColor, float emissionIntensity, Vector3 positionOffset, Vector3 eulerAngles, Vector3 scale)
2025-06-28 03:01:03 -04:00
{
this.rippleTime = rippleTime;
this.positionOffset = positionOffset;
this.eulerAngles = eulerAngles;
this.scale = scale;
this.emissionColor = emissionColor;
this.emissionIntensity = emissionIntensity;
}
public override EffectBase ConvertToGameType(GameElement attachedGameElement)
{
2025-06-28 12:06:19 -04:00
return new DTMRippleEffect(rippleTime, emissionColor, emissionIntensity, positionOffset, eulerAngles, scale)
2025-06-28 03:01:03 -04:00
{
attachedGameElement = attachedGameElement
};
}
}
}
}