Browse Source

Add id to Wire

tags/v1.0.0
Andrew Belt 6 years ago
parent
commit
94d34c51fa
4 changed files with 24 additions and 13 deletions
  1. +1
    -1
      include/engine/Module.hpp
  2. +1
    -0
      include/engine/Wire.hpp
  3. +13
    -9
      src/app/RackWidget.cpp
  4. +9
    -3
      src/engine/Engine.cpp

+ 1
- 1
include/engine/Module.hpp View File

@@ -13,7 +13,7 @@ namespace rack {




struct Module { struct Module {
int id = -1;
int id = 0;
std::vector<Param> params; std::vector<Param> params;
std::vector<Input> inputs; std::vector<Input> inputs;
std::vector<Output> outputs; std::vector<Output> outputs;


+ 1
- 0
include/engine/Wire.hpp View File

@@ -7,6 +7,7 @@ namespace rack {




struct Wire { struct Wire {
int id = 0;
Module *outputModule = NULL; Module *outputModule = NULL;
int outputId; int outputId;
Module *inputModule = NULL; Module *inputModule = NULL;


+ 13
- 9
src/app/RackWidget.cpp View File

@@ -235,7 +235,7 @@ json_t *RackWidget::toJson() {
json_object_set_new(rootJ, "modules", modulesJ); json_object_set_new(rootJ, "modules", modulesJ);


// wires // wires
json_t *wires = json_array();
json_t *wiresJ = json_array();
for (Widget *w : wireContainer->children) { for (Widget *w : wireContainer->children) {
WireWidget *wireWidget = dynamic_cast<WireWidget*>(w); WireWidget *wireWidget = dynamic_cast<WireWidget*>(w);
assert(wireWidget); assert(wireWidget);
@@ -245,20 +245,24 @@ json_t *RackWidget::toJson() {
// Only serialize WireWidgets connected on both ends // Only serialize WireWidgets connected on both ends
if (!(outputPort && inputPort)) if (!(outputPort && inputPort))
continue; continue;

Wire *wire = wireWidget->wire;
assert(wire);
// wire // wire
json_t *wire = wireWidget->toJson();
json_t *wireJ = wireWidget->toJson();


assert(outputPort->module); assert(outputPort->module);
assert(inputPort->module); assert(inputPort->module);


json_object_set_new(wire, "outputModuleId", json_integer(outputPort->module->id));
json_object_set_new(wire, "outputId", json_integer(outputPort->portId));
json_object_set_new(wire, "inputModuleId", json_integer(inputPort->module->id));
json_object_set_new(wire, "inputId", json_integer(inputPort->portId));
json_object_set_new(wireJ, "id", json_integer(wire->id));
json_object_set_new(wireJ, "outputModuleId", json_integer(outputPort->module->id));
json_object_set_new(wireJ, "outputId", json_integer(outputPort->portId));
json_object_set_new(wireJ, "inputModuleId", json_integer(inputPort->module->id));
json_object_set_new(wireJ, "inputId", json_integer(inputPort->portId));


json_array_append_new(wires, wire);
json_array_append_new(wiresJ, wireJ);
} }
json_object_set_new(rootJ, "wires", wires);
json_object_set_new(rootJ, "wires", wiresJ);


return rootJ; return rootJ;
} }
@@ -306,7 +310,7 @@ void RackWidget::fromJson(json_t *rootJ) {
if (moduleWidget) { if (moduleWidget) {
// id // id
json_t *idJ = json_object_get(moduleJ, "id"); json_t *idJ = json_object_get(moduleJ, "id");
int id = -1;
int id = 0;
if (idJ) if (idJ)
id = json_integer_value(idJ); id = json_integer_value(idJ);
// pos // pos


+ 9
- 3
src/engine/Engine.cpp View File

@@ -52,7 +52,8 @@ struct Engine::Internal {


Module *resetModule = NULL; Module *resetModule = NULL;
Module *randomizeModule = NULL; Module *randomizeModule = NULL;
int nextModuleId = 0;
int nextModuleId = 1;
int nextWireId = 1;


// Parameter smoothing // Parameter smoothing
Module *smoothModule = NULL; Module *smoothModule = NULL;
@@ -218,7 +219,7 @@ void Engine::addModule(Module *module) {
VIPLock vipLock(internal->vipMutex); VIPLock vipLock(internal->vipMutex);
std::lock_guard<std::mutex> lock(internal->mutex); std::lock_guard<std::mutex> lock(internal->mutex);
// Set ID // Set ID
assert(module->id == -1);
assert(module->id == 0);
module->id = internal->nextModuleId++; module->id = internal->nextModuleId++;
// Check that the module is not already added // Check that the module is not already added
auto it = std::find(modules.begin(), modules.end(), module); auto it = std::find(modules.begin(), modules.end(), module);
@@ -245,7 +246,7 @@ void Engine::removeModule(Module *module) {
// Remove the module // Remove the module
modules.erase(it); modules.erase(it);
// Remove id // Remove id
module->id = -1;
module->id = 0;
} }


void Engine::resetModule(Module *module) { void Engine::resetModule(Module *module) {
@@ -285,6 +286,9 @@ void Engine::addWire(Wire *wire) {
assert(wire2 != wire); assert(wire2 != wire);
assert(!(wire2->inputModule == wire->inputModule && wire2->inputId == wire->inputId)); assert(!(wire2->inputModule == wire->inputModule && wire2->inputId == wire->inputId));
} }
// Set ID
assert(wire->id == 0);
wire->id = internal->nextWireId++;
// Add the wire // Add the wire
wires.push_back(wire); wires.push_back(wire);
Engine_updateActive(this); Engine_updateActive(this);
@@ -302,6 +306,8 @@ void Engine::removeWire(Wire *wire) {
// Remove the wire // Remove the wire
wires.erase(it); wires.erase(it);
Engine_updateActive(this); Engine_updateActive(this);
// Remove ID
wire->id = 0;
} }


void Engine::setParam(Module *module, int paramId, float value) { void Engine::setParam(Module *module, int paramId, float value) {


Loading…
Cancel
Save