Ejemplo n.º 1
0
KinBodyGroup* CreateOsgGroup(KinBody& body) {
  assert(!body.GetUserData("osg"));
  RAVELOG_DEBUG("creating graphics for kinbody %s\n", body.GetName().c_str());
  osg::Node* node = osgNodeFromKinBody(body);
  UserDataPtr rph = UserDataPtr(new RefPtrHolder(node));
  body.SetUserData("osg", rph);
  return static_cast<KinBodyGroup*>(static_cast<RefPtrHolder*>(rph.get())->rp.get());
}
Ejemplo n.º 2
0
bool InterfaceBase::RemoveUserData(const std::string& key) const
{
    // have to destroy the userdata pointer outside the lock, otherwise can get into a deadlock
    UserDataPtr olduserdata;
    {
        boost::unique_lock< boost::shared_mutex > lock(_mutexInterface);
        std::map<std::string, UserDataPtr>::iterator it = __mapUserData.find(key);
        if( it == __mapUserData.end() ) {
            return false;
        }
        olduserdata = it->second;
        __mapUserData.erase(it);
    }
    olduserdata.reset();
    return true;
}
Ejemplo n.º 3
0
void InterfaceBase::SetUserData(const std::string& key, UserDataPtr data) const
{
    UserDataPtr olduserdata;
    {
        boost::unique_lock< boost::shared_mutex > lock(_mutexInterface);
        std::map<std::string, UserDataPtr>::iterator it = __mapUserData.find(key);
        if( it == __mapUserData.end() ) {
            __mapUserData[key] = data;
        }
        else {
            olduserdata = it->second;
            it->second = data;
        }
    }
    olduserdata.reset();
}
bool StandardContactList::deserializeLines(const UserDataPtr& ud, const QString& dataname, const QString& data)
{
    PropertyHubPtr hub = ud->getUserData(dataname);
    if(!hub)
        hub = ud->createUserData(dataname);
    QStringList list = data.split('\n');
    foreach(const QString& s, list)
    {
        QStringList keyval = s.split('=');
        if(keyval.size() != 2)
            continue;
        if(keyval.at(1).startsWith('\"') && keyval.at(1).endsWith('\"') )
            hub->setValue(keyval.at(0), keyval.at(1).mid(1, keyval.at(1).size() - 2));
        else
            hub->setValue(keyval.at(0), keyval.at(1));
    }
Ejemplo n.º 5
0
int main(int argc, char ** argv)
{
    //int num = 1;
    string scenefilename = "data/lab1.env.xml";
    string viewername = RaveGetDefaultViewerType(); //qtcoin

    // parse the command line options
    int i = 1;
    while(i < argc) {
        if((strcmp(argv[i], "-h") == 0)||(strcmp(argv[i], "-?") == 0)||(strcmp(argv[i], "/?") == 0)||(strcmp(argv[i], "--help") == 0)||(strcmp(argv[i], "-help") == 0)) {
            RAVELOG_INFO("orloadviewer [--num n] [--scene filename] viewername\n");
            return 0;
        }
        else if( strcmp(argv[i], "--scene") == 0 ) {
            scenefilename = argv[i+1];
            i += 2;
        }
        else
            break;
    }
    if( i < argc ) {
        viewername = argv[i++];
    }

    RaveInitialize(true); // start openrave core
    EnvironmentBasePtr penv = RaveCreateEnvironment(); // create the main environment
    RaveSetDebugLevel(Level_Debug);

    boost::thread thviewer(boost::bind(SetViewer,penv,viewername));
    penv->Load(scenefilename); // load the scene


    UserDataPtr pregistration;
    while(!pregistration) {
        if( !pregistration && !!penv->GetViewer() ) {
            pregistration = penv->GetViewer()->RegisterViewerThreadCallback(boost::bind(ViewerCallback,penv->GetViewer()));
        }
        boost::this_thread::sleep(boost::posix_time::milliseconds(1));
    }

    thviewer.join(); // wait for the viewer thread to exit
    pregistration.reset();
    penv->Destroy(); // destroy
    return 0;
}
Ejemplo n.º 6
0
KinBodyGroup* GetOsgGroup(KinBody& body) {
  UserDataPtr rph = body.GetUserData("osg");
  return rph ? static_cast<KinBodyGroup*>(static_cast<RefPtrHolder*>(rph.get())->rp.get())
      : NULL;
}