示例#1
0
bool zoneManager::getIsRuleMet(ofPtr<zone> z, zoneRule r) {


    if(r.ruleType == "MIN_OCCUPANTS") {

        return(z->getCaptureNodes().size() >= r.gtOccupants);

    } else if(r.ruleType == "MAX_OCCUPANTS") {

        if(z->getCaptureNodes().size() > 0 &&
                z->getCaptureNodes().size() <= r.ltOccupants)return true;

    } else if(r.ruleType == "RANGE_OCCUPANTS") {

        if(z->getCaptureNodes().size() >= r.gtOccupants  &&
                z->getCaptureNodes().size() <= r.ltOccupants)return true;

    } else {

        return false;

    }

    return false;

}
示例#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"]);

    }
}