void Primitive::setPosition(const Pos& pos){ if(body){ dBodySetPosition(body, pos.x(), pos.y(), pos.z()); }else if(geom){ // okay there is just a geom no body dGeomSetPosition(geom, pos.x(), pos.y(), pos.z()); } update(); // update the scenegraph stuff }
bool Primitive::restore(FILE* f){ Pose pose; Pos vel; Pos avel; if ( fread ( pose.ptr() , sizeof ( Pose::value_type), 16, f ) == 16 ) if( fread ( vel.ptr() , sizeof ( Pos::value_type), 3, f ) == 3 ) if( fread ( avel.ptr() , sizeof ( Pos::value_type), 3, f ) == 3 ){ setPose(pose); if(body){ dBodySetLinearVel(body,vel.x(),vel.y(),vel.z()); dBodySetAngularVel(body,avel.x(),avel.y(),avel.z()); } return true; } fprintf ( stderr, "Primitve::restore: cannot read primitive from data\n" ); return false; }