void nodeManager::implementReaction(reaction & r, ofPtr<clamourNode> t, bool isOn) { if(r.rType == "sleep") { appReactions[t->getName()] = "resetControl"; killNode(t->getName()); } else if(r.rType == "transform") { clamourNode temp = presetStore::nodePresets[r.stringParams["PRESET"]]; //load the node into the reaction for easier variation setNode(t, temp); } else if(r.rType == "scaleNode") { parameter p = t->getDrawData().getParameter("size"); p.abs_val *= r.floatParams["SCALE"]; p.abs_val = min(1.0f, p.abs_val); t->setDrawParameter(p); ofPath pt = t->getEdgeTemplate(); pt.scale(r.floatParams["SCALE"], r.floatParams["SCALE"]); t->setEdgeTemplate(pt); t->updatePath(); } else if(r.rType == "scaleShift") { float shift = t->getShiftAmount() * r.floatParams["SCALE"]; t->setShiftAmount(shift); } else if(r.rType == "scaleAttack") { float att = t->getAttSecs() * r.floatParams["SCALE"]; t->setAttSecs(att); } else if(r.rType == "event") { t->triggerEvent(r.intParams["ENV_INDEX"]); } else if(r.rType == "eventOff") { t->endEvent(r.intParams["ENV_INDEX"]); // not sure this one is necessary } }