From 6ffc495c812f83e729129afd5a85292b893702a5 Mon Sep 17 00:00:00 2001 From: yohannd1 Date: Thu, 19 Dec 2024 15:04:10 -0300 Subject: [PATCH] instrument swap implemented (thanks to @Eknous-P) --- src/engine/engine.cpp | 14 ++++++++++++++ src/engine/engine.h | 3 +++ src/gui/dataList.cpp | 6 ++++-- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 9cfbc18d9..b65727572 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -3248,6 +3248,20 @@ bool DivEngine::moveSampleDown(int which) { return true; } +bool DivEngine::swapInstruments(int a, int b) { + if (a<0 || a>=(int)song.ins.size() || b<0 || b>=(int)song.ins.size()) return false; + BUSY_BEGIN; + DivInstrument* temp=song.ins[a]; + saveLock.lock(); + song.ins[a]=song.ins[b]; + song.ins[b]=temp; + moveAsset(song.insDir,a,b); + exchangeIns(a,b); + saveLock.unlock(); + BUSY_END; + return true; +} + void DivEngine::autoPatchbay() { song.patchbay.clear(); for (unsigned int i=0; iswapInstruments(insToMove,targetIns)) { + MARK_MODIFIED; + curIns=targetIns; + } insToMove=-1; ImGui::EndDragDropTarget(); }