===== SteerParameterCommand ===== ==== Description ==== The SteerParameterCommand gives you the opportunity to enable a simulation for parameter steering. The command is provided by the Steereo library and automatically loaded into the command map. You can see it in "action" in the [[steereo:simple_howto#using_parameter_steering| Howto]]. ==== Use in the simulation ==== In the simulation the only thing to do is to register the parameters, you want to be steerable with on of these static functions (T and TC are template parameters, of which you shouldn't have to take care). For each scalar and array you can either register the parameter with a pointer or getter and setter methods. * void **registerScalarParameter** (std::string paramName, T* ptrToParam, std::string minVal="0", std::string maxVal="0") * void **registerScalarParameter** (std::string paramName, TC* ptrToInstance, T (TC::*getter) (), void (TC::*setter) (T), std::string minVal ="0", std::string maxVal="0") * void **registerArrayParameter** (std::string paramName, T* ptrToParam, int arrayLength) * void **registerArrayParameter** (std::string paramName, TC* ptrToInstance, T (TC::*getter) (), int arrayLength) === Parameters === * **paramName** - the name, with which the parameter can be requested from a client * **ptrToParam** - pointer to the steered parameter * **ptrToInstance** - pointer to the instance from which the getter (and setter for scalars) should be used * **getter** - function pointer to the getter function (usually something like &(className::getParam) ) * **setter** - function pointer to the setter function (usually something like &(className::setParam) ) * **arrayLength** - length of the steered array * **minVal, maxVal** (optional) - minimal and maximal value of the parameter ==== How does the client request parameters ==== The easiest would be to use the [[steereo:classes:SteerParameterClient]], which helps you making requests and handling the responses. But you can use the usual //makeRequest//: ClientSteering clientSteer; clientSteer->addAction("steerParameter", &processParameter); clientSteer->makeRequest ("steerParameter", requestString); //or clientSteer->makeRequest ("steerParameter", requestString, additionalData); The //requestString// can be: * "GET param" - request the value of the parameter //param// (can also be an array) * "GET param index" - request the value of param[index]], if param is an array otherwise index is ignored and the value of param is returned * "SET param" - request to set the value of //param// to values, which have to be sent as third argument (//additionalData// in the abov snippet) as a [[steereo:classes:SteereoStream]]. * "SET param value" - request to set the value of //param// to //value// * "SET param index value" - request to set the value of //param[index]// to //value//.