From defdad973d8a702ba837f5172fd41c92db2422ca Mon Sep 17 00:00:00 2001 From: lunarcleint <88809950+lunarcleint@users.noreply.github.com> Date: Wed, 20 Mar 2024 17:08:50 -0700 Subject: [PATCH] ok we are nearly done with ui!!! now i gotta make some icons!! --- source/funkin/editors/charter/Charter.hx | 46 ++++++++++++++----- .../editors/charter/CharterWaveformHandler.hx | 16 ++++++- 2 files changed, 50 insertions(+), 12 deletions(-) diff --git a/source/funkin/editors/charter/Charter.hx b/source/funkin/editors/charter/Charter.hx index fabd88f1..62fd5cde 100644 --- a/source/funkin/editors/charter/Charter.hx +++ b/source/funkin/editors/charter/Charter.hx @@ -565,28 +565,50 @@ class Charter extends UIState { gridBackdrops.bottomLimitY = __endStep * 40; eventsBackdrop.bottomSeparator.y = gridBackdrops.bottomLimitY-2; - regenerateWaveforms(); + updateWaveforms(); } - public function regenerateWaveforms() { - if (waveformHandler == null ? true : waveformHandler.ampsNeeded != __endStep*40) { - trace("REGEN WAVES"); + public function updateWaveforms() { + var wavesToGenerate:Array<{name:String, sound:FlxSound}> = [ + {name: "Inst.ogg", sound: FlxG.sound.music}, + ]; + if (vocals != null) wavesToGenerate.push({name: "Voices.ogg", sound: vocals}); + for (strumLine in strumLines) + if (strumLine.vocals != null && strumLine.strumLine.vocalsSuffix != null && strumLine.strumLine.vocalsSuffix != "") + wavesToGenerate.push({ + name: 'Voices${strumLine.strumLine.vocalsSuffix}.ogg', + sound: strumLine.vocals + }); + + var oldWaveformList:Array = waveformHandler.waveformList; + var newWaveformList:Array = [for (data in wavesToGenerate) data.name]; + + if (waveformHandler == null ? true : waveformHandler.ampsNeeded != __endStep*40) { waveformHandler.clearWaveforms(); waveformHandler.ampsNeeded = __endStep * 40; - var wavesToGenerate:Array<{name:String, sound:FlxSound}> = [ - {name: "Inst.ogg", sound: FlxG.sound.music}, - {name: "Voices.ogg", sound: vocals} - ]; - for (data in wavesToGenerate) { waveformHandler.generateShader(data.name, data.sound); waveformHandler.waveformList.push(data.name); } + } else if (waveformHandler != null && waveformHandler.waveformList.length != newWaveformList.length) { + for (name in oldWaveformList) + if (!newWaveformList.contains(name)) + waveformHandler.clearWaveform(name); - for (strumLine in strumLines) // Update grids - strumLine.selectedWaveform = strumLine.selectedWaveform; + for (data in wavesToGenerate) + if (!oldWaveformList.contains(data.name)) + waveformHandler.generateShader(data.name, data.sound); + + waveformHandler.waveformList = newWaveformList; + } + + for (strumLine in strumLines) { + if (strumLine.selectedWaveform == -1) continue; + + var oldName:String = oldWaveformList[strumLine.selectedWaveform]; + strumLine.selectedWaveform = waveformHandler.waveformList.indexOf(oldName); } } @@ -1008,6 +1030,8 @@ class Charter extends UIState { strumLines.members[strID].updateInfo(); undos.addToUndo(CEditStrumLine(strID, oldData, _)); + + if (oldData.vocalsSuffix != _.vocalsSuffix) updateWaveforms(); })); } diff --git a/source/funkin/editors/charter/CharterWaveformHandler.hx b/source/funkin/editors/charter/CharterWaveformHandler.hx index 233d8e44..8e48ee62 100644 --- a/source/funkin/editors/charter/CharterWaveformHandler.hx +++ b/source/funkin/editors/charter/CharterWaveformHandler.hx @@ -77,6 +77,20 @@ class CharterWaveformHandler extends FlxBasic { return waveShader; } + public function clearWaveform(name:String) { + waveDatas.get(name).dispose(); + waveDatas.remove(name); + + waveShaders.set(name, null); + waveShaders.remove(name); + + analyzers.set(name, null); + analyzers.remove(name); + + sounds.remove(name); + waveformList.remove(name); + } + public function clearWaveforms() { for (data in waveDatas) data.dispose(); for (shader in waveShaders) shader = null; @@ -84,7 +98,7 @@ class CharterWaveformHandler extends FlxBasic { waveDatas.clear(); waveShaders.clear(); analyzers.clear(); sounds.clear(); - + waveformList = []; }