Example #1
0
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

    }

}
Example #2
0
void zoneManager::implementReaction(reaction &r, ofPtr<zone> z, bool isReverse) {

    map<string, ofPtr<clamourNode> > cap = z->getCaptureNodes();

    if(r.rType == "closeInZone") {
        z->setIsClosedIn(!isReverse);
    } else if(r.rType == "openInZone") {
        z->setIsClosedIn(isReverse);
    } else if(r.rType == "closeOutZone") {
        z->setIsClosedOut(!isReverse);
    } else if(r.rType == "openOutZone") {
        z->setIsClosedOut(isReverse);
    } else if(r.rType == "incrementStage") {
        appReactions.push_back("incrementStage");
    } else if(r.rType == "repeatStage") {
        appReactions.push_back("repeatStage");
    } else if(r.rType == "decrementStage") {
        appReactions.push_back("decrementStage");
    } else if(r.rType == "muteSynths") {
        appReactions.push_back("muteSynths");
    } else if(r.rType == "transformNode") {
        //potentially could need on/off for data storage

        map<string, ofPtr<clamourNode> >::iterator c_it = cap.begin();
        clamourNode temp;

        if(!r.tempNode){
            temp = presetStore::nodePresets[r.stringParams["PRESET"]]; //load the node into the reaction for easier variation
        }else{
            temp = *r.tempNode;
        }

        while(c_it != cap.end()) {
            nodeManager::setNode(c_it->second, temp);
            ++ c_it;
        }
    } else if(r.rType == "scaleNode") {

        map<string, ofPtr<clamourNode> >::iterator c_it = cap.begin();

        while(c_it != cap.end()) {

            parameter p = c_it->second->getDrawData().getParameter("size");
            p.abs_val *= r.floatParams["SCALE"];

            if((p.abs_val < 0.8 && r.floatParams["SCALE"] > 1 )|| ( p.abs_val > 0.02 && r.floatParams["SCALE"] < 1 )){

                c_it->second->setDrawParameter(p);
                ofPath pt = c_it->second->getEdgeTemplate();

                pt.scale(r.floatParams["SCALE"], r.floatParams["SCALE"]);
                c_it->second->setEdgeTemplate(pt);
                c_it->second->updatePath();
            }

            ++ c_it;
        }
    } else if(r.rType == "scaleShift") {

        map<string, ofPtr<clamourNode> >::iterator c_it = cap.begin();

        while(c_it != cap.end()) {
            float shift = c_it->second->getShiftAmount() * r.floatParams["SCALE"];
            c_it->second->setShiftAmount(shift);
            ++c_it;
        }

    } else if(r.rType == "scaleAttack") {

        map<string, ofPtr<clamourNode> >::iterator c_it = cap.begin();

        while(c_it != cap.end()) {

            float att = c_it->second->getAttSecs();
            att *= r.floatParams["SCALE"];
             if((att > 0.2 && r.floatParams["SCALE"] < 1 )|| ( att < 1 && r.floatParams["SCALE"] > 1 )){
                c_it->second->setAttSecs(att);
             }
            ++c_it;
        }

    } else if(r.rType == "event") {

        if(!isReverse){
            z->triggerEvent(r.intParams["ENV_INDEX"]);
        }else{
            z->endEvent(r.intParams["ENV_INDEX"]);
        }

    } else if(r.rType == "eventOff") {

        z->endEvent(r.intParams["ENV_INDEX"]);

    }
}