virtual void Init() { if(mInit) { return; } mInit = true; assert(mEntity != NULL); dtEntityOSG::StaticMeshComponent* smc; if(!mEntity->GetComponent(smc)) { LOG_ERROR("Error setting up wheel component: Please add mesh component first"); return; } PropertyArray props = mWheels.ArrayValue(); for(PropertyArray::iterator i = props.begin(); i != props.end(); ++i) { Property* prop = *i; assert(prop->GetDataType() == DataType::GROUP); PropertyGroup pg = prop->GroupValue(); assert(pg.find(SID("NodeName")) != pg.end()); assert(pg.find(SID("Radius")) != pg.end()); std::string nodeName = pg[SID("NodeName")]->StringValue(); float radius = pg[SID("Radius")]->FloatValue(); osg::ref_ptr<FindNamedNodeVisitor> v = new FindNamedNodeVisitor(nodeName); smc->GetNode()->accept(*v); osgSim::DOFTransform* trans = dynamic_cast<osgSim::DOFTransform*>(v->getNode()); if(trans != NULL) { mDOFs.push_back(std::make_pair(trans, radius)); } } SetSpeed(mSpeed.FloatValue()); }