00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00026 #include "../include/IPSA/ipsaclasses.h"
00027 #include "../include/IPSA/IpsaSimulator.h"
00028 #include "../include/IPSA/viewer/instructions/SetStepsizeIPSA.h"
00029
00030
00031 Instruction::tExecResultType SetStepsizeIPSA::vExecute(std::vector<std::string>& Instr, std::ostringstream& answer, unsigned int& numberOfReturnValues)
00032 {
00033 numberOfReturnValues = 0;
00034 float newStepsize = static_cast<float>( atof(Instr[1].c_str()) );
00035 SoSearchAction sa;
00036 sa.setType(SoWorldPhysics::getClassTypeId());
00037 sa.setInterest(SoSearchAction::ALL);
00038 sa.apply(ipsaSimulator->getSceneGraph());
00039 SoPathList pl = sa.getPaths();
00040
00041 for (int i = 0; i < pl.getLength(); i++)
00042 {
00043 SoPath* path = pl[i];
00044 SoWorldPhysics* world = dynamic_cast<SoWorldPhysics*>(path->getNodeFromTail(0));
00045 if (NULL != world)
00046 world->setStepsize(newStepsize);
00047 }
00048
00049 return eOK;
00050 }