Example #1
0
bool WorldSimulation::ReadState(File& f)
{
#if TEST_READ_WRITE
  TestReadWriteState(odesim,"odesim");
  for(size_t i=0;i<controlSimulators.size();i++) 
    TestReadWriteState(controlSimulators[i],"controller");
  for(size_t i=0;i<hooks.size();i++) 
    TestReadWriteState(*hooks[i],"hook");
#endif

  READ_FILE_DEBUG(f,time,"WorldSimulation::ReadState");
  if(!odesim.ReadState(f)) {
    fprintf(stderr,"WorldSimulation::ReadState: ODE sim failed to read\n");
    return false;
  }
  //controlSimulators will read the robotControllers' states
  for(size_t i=0;i<controlSimulators.size();i++) {
    if(!controlSimulators[i].ReadState(f)) {
      fprintf(stderr,"WorldSimulation::ReadState: Control simulator %d failed to read\n",i);
      return false;
    }
  }
  for(size_t i=0;i<hooks.size();i++) {
    if(!hooks[i]->ReadState(f)) {
      fprintf(stderr,"WorldSimulation::ReadState: Hook %d failed to read\n",i);
      return false;
    }
  }
  int n;
  READ_FILE_DEBUG(f,n,"WorldSimulation::ReadState: reading number of contactFeadback items");
  if(n < 0) {
    fprintf(stderr,"Invalid number %d of contactFeedback items\n",n);
    return false;
  }
  contactFeedback.clear();
  for(int i=0;i<n;i++) {
    pair<ODEObjectID,ODEObjectID> key;
    ContactFeedbackInfo info;
    if(!ReadFile(f,key.first)) {
      fprintf(stderr,"Unable to read contact feedback %d object 1\n",i);
      return false;
    }
    if(!ReadFile(f,key.second)) {
      fprintf(stderr,"Unable to read contact feedback %d object 2\n",i);
      return false;
    }
    if(!ReadFile(f,info)) {
      fprintf(stderr,"Unable to read contact feedback %d info\n",i);
      return false;
    }
    contactFeedback[key] = info;
  }
  UpdateModel();
  return true;
}
bool WorldSimulation::ReadState(File& f)
{
#if TEST_READ_WRITE
  TestReadWriteState(odesim,"odesim");
  for(size_t i=0;i<controlSimulators.size();i++) 
    TestReadWriteState(controlSimulators[i],"controller");
  for(size_t i=0;i<hooks.size();i++) 
    TestReadWriteState(*hooks[i],"hook");
#endif

  if(!ReadFile(f,time)) return false;
  if(!odesim.ReadState(f)) {
    fprintf(stderr,"WorldSimulation::ReadState: ODE sim failed to read\n");
    return false;
  }
  //controlSimulators will read the robotControllers' states
  for(size_t i=0;i<controlSimulators.size();i++) {
    if(!controlSimulators[i].ReadState(f)) {
      fprintf(stderr,"WorldSimulation::ReadState: Control simulator %d failed to read\n",i);
      return false;
    }
  }
  for(size_t i=0;i<hooks.size();i++) {
    if(!hooks[i]->ReadState(f)) {
      fprintf(stderr,"WorldSimulation::ReadState: Hook %d failed to read\n",i);
      return false;
    }
  }
  int n;
  if(!ReadFile(f,n)) return false;
  if(n < 0) return false;
  contactFeedback.clear();
  for(size_t i=0;i<n;i++) {
    pair<ODEObjectID,ODEObjectID> key;
    ContactFeedbackInfo info;
    if(!ReadFile(f,key.first)) return false;
    if(!ReadFile(f,key.second)) return false;
    if(!ReadFile(f,info)) return false;
    contactFeedback[key] = info;
  }
  UpdateModel();
  return true;
}
Example #3
0
bool ODESimulator::ReadState(File& f)
{
#if TEST_READ_WRITE_STATE
  for(size_t i=0;i<robots.size();i++) 
    TestReadWriteState(*robots[i],"ODERobot");
  for(size_t i=0;i<objects.size();i++) 
    TestReadWriteState(*objects[i],"ODEObject");
#endif

  for(size_t i=0;i<robots.size();i++) {
    if(!robots[i]->ReadState(f)) {
      fprintf(stderr,"ODESimulator::ReadState(): failed to read robot %d\n",i);
      return false;
    }
  }
  for(size_t i=0;i<objects.size();i++) {
    if(!objects[i]->ReadState(f)) {
      fprintf(stderr,"ODESimulator::ReadState(): failed to read object %d\n",i);
      return false;
    }
  }
  return true;
}