using System.Collections; using System.Collections.Generic; using System.Linq; using Ichni.Editor; using Ichni.RhythmGame.Beatmap; using Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse.Beatmap; using UnityEngine; namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse { public class DTMNoteMissTransparent : NoteMissEffect { public List noteRenderers; public DTMNoteMissTransparent(NoteVisualBase noteVisual, float effectTime) { this.note = noteVisual.note; this.noteVisual = noteVisual; this.effectTime = effectTime; this.noteRenderers = new List(); foreach (GameObject part in noteVisual.notePartList) { Renderer rend = part.GetComponent(); if(rend != null) { noteRenderers.Add(rend); } } } public override void Recover() { noteVisual.noteMain.SetActive(true); noteRenderers[0].materials[1].SetFloat("_GlowIntensity", 4f); foreach (var renderer in noteRenderers) { foreach (Material m in renderer.materials) { m.SetFloat("_MainAlpha", 1); } } } public override void PreExecute() { if (noteVisual is DTMNoteVisualHold) { noteRenderers[0].materials[1].SetFloat("_GlowIntensity", 0.25f); } } public override void Execute() { float e = AnimationCurveEvaluator.Evaluate(AnimationCurveType.OutQuad, effectProgressPercent); float alpha = (1 - e) / 4f; foreach (var renderer in noteRenderers) { foreach (Material m in renderer.materials) { m.SetFloat("_MainAlpha", alpha); } } } public override void Adjust() { noteVisual.noteMain.SetActive(false); foreach (var renderer in noteRenderers) { foreach (Material m in renderer.materials) { m.SetFloat("_MainAlpha", 0); } } } public override EffectBase_BM ConvertToBM() { return new DTMNoteMissTransparent_BM(effectTime); } public override void SetUpInspector() { IHaveInspection inspector = EditorManager.instance.uiManager.inspector; var container = inspector.GenerateContainer("DTM Note Miss Transparent"); var subcontainer = container.GenerateSubcontainer(3); var effectTimeField = inspector.GenerateInputField(this, subcontainer, "Effect Time", nameof(effectTime)); } } namespace Beatmap { public class DTMNoteMissTransparent_BM : NoteMissEffect_BM { public DTMNoteMissTransparent_BM() { } public DTMNoteMissTransparent_BM(float effectTime) : base(effectTime) { } public override EffectBase ConvertToGameType(GameElement attachedGameElement) { return new DTMNoteMissTransparent(attachedGameElement as NoteVisualBase, effectTime); } } } }