ofxGuiPanel::ofxGuiPanel(const ofParameterGroup & parameters, const ofJson & config) :ofxGuiPanel(parameters.getName()){ addParametersFrom(parameters); _setConfig(config); }
ofxGuiContainer::ofxGuiContainer(const ofParameterGroup & _parameters, const ofJson & config) :ofxGuiContainer(_parameters.getName()) { addParametersFrom(_parameters); _setConfig(config); }
ofxGuiContainer::ofxGuiContainer(const ofParameterGroup & _parameters, const std::string& _filename, float x, float y) :ofxGuiContainer(_parameters.getName()) { filename = _filename; setPosition(x,y); addParametersFrom(_parameters); }
ofxGuiPanel::ofxGuiPanel(const ofParameterGroup & parameters, const std::string& filename, float x, float y) :ofxGuiPanel(parameters.getName()){ addParametersFrom(parameters); // config.filename = filename; // TODO set filename setPosition(x,y); }
//infer uniform type from structure of ofParameterGroup g //and set in shader from values in g. //assumes shader->begin() has been called already void ofxBaseShaderNode::setShaderParam(ofParameterGroup &g){ size_t dim = g.size(); //need to infer the uniform type from size of, and types in, this group //unfortunately g.getType(0) is weird and compiler dependent, so this. //weep for me, weep for c++ string type = ""; if(g.contains("0i")) type = "int"; else if(g.contains("0f")) type = "float"; string param_name = g.getName(); // cout<<"node "<<name<<" setting "<<type<<" "<<dim<<" uniform "<<param_name<<endl; if(type=="float"){ // cout<<g.getFloat("0f")<<endl; switch(dim){ case 1: shader->setUniform1f(param_name, g.getFloat("0f")); break; case 2: shader->setUniform2f(param_name, g.getFloat("0f"), g.getFloat("1f")); break; case 3: shader->setUniform3f(param_name, g.getFloat("0f"), g.getFloat("1f"), g.getFloat("2f")); break; case 4: shader->setUniform4f(param_name, g.getFloat("0f"), g.getFloat("1f"), g.getFloat("2f"), g.getFloat("3f")); } } else if(type=="int"){ switch(dim){ case 1: shader->setUniform1i(param_name, g.getInt("0i")); break; case 2: shader->setUniform2i(param_name, g.getInt("0i"), g.getInt("1i")); break; case 3: shader->setUniform3i(param_name, g.getInt("0i"), g.getInt("1i"), g.getInt("2i")); break; case 4: shader->setUniform4i(param_name, g.getInt("0i"), g.getInt("1i"), g.getInt("2i"), g.getInt("3i")); } } }
//-------------------------------------------------------------- void testApp::update() { // get value directly string s; if (keyValue.get("/string_value", s)) { cout << "/string_value: " << s << endl; } // get value as osc message ofxOscMessage m; if (keyValue.get("/test", m)) { cout << "/test: " << m.getArgAsFloat(0) << endl; } // use Key-Value-Store style address keyValue.get("/myObject1.pos", myObject1.pos); keyValue.get("/myObject1.color", myObject1.color); for (int i = 0; i < params.size(); i++) { string name = "/"+params.getName(i); if ( keyValue.get( name, params.get(i) ) ) cout << "update param " << name << " = " << params.get(i) << endl; } // FIFO queue access int value; while (keyValue.get("/uzi", value)) { printf("%i\n", value); } }