Exemplo n.º 1
0
   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());
   
   
   }