// // Created by versustune on 13.06.20. // #include "VenoMatrix.h" VenoMatrix::VenoMatrix (const std::string& processId) : m_processId (processId) { for (auto& m_slot : m_slots) { m_slot = new VenoMatrixSlot (); } } VenoMatrix::~VenoMatrix () { for (auto& m_slot : m_slots) { delete m_slot; } } VenoMatrixSlot* VenoMatrix::getSlotById (int id) { return m_slots[id]; } void VenoMatrix::removeModulateValue (const std::string& name) { m_modulationValues.erase (name); } void VenoMatrix::removeModulator (const std::string& name) { m_modulators.erase (name); } void VenoMatrix::addModulateValue (const std::string& name, ModulateValue* modulateValue) { m_modulationValues.emplace (std::pair (name, modulateValue)); } void VenoMatrix::addModulator (const std::string& name, Modulator* modulator) { m_modulators.emplace (std::pair (name, modulator)); } void VenoMatrix::updateSlots () { for (auto& m_slot : m_slots) { if (m_slot->sourceName == "none") { continue; } if (m_modulators.find (m_slot->sourceName) != m_modulators.end ()) { auto modulator = m_modulators[m_slot->sourceName]; if (modulator == nullptr) { continue; } modulator->update (); for (auto& value : m_slot->targets) { if (value.name != "none") { if (m_modulationValues.find (value.name) != m_modulationValues.end ()) { auto modValue = m_modulationValues[value.name]; if (modValue == nullptr) { continue; } modValue->addValue (modulator->getValue () * value.amount); } } } } } }