コード例 #1
0
ファイル: world_diff.cpp プロジェクト: ksenglee/ros
collision_detection::WorldDiff::WorldDiff(WorldDiff &other)
{
  WorldPtr world = other.world_.lock();
  if (world)
  {
    changes_ = other.changes_;

    boost::weak_ptr<World>(world).swap(world_);
    observer_handle_ = world->addObserver(boost::bind(&WorldDiff::notify, this, _1, _2));
  }
}
コード例 #2
0
ファイル: world_diff.cpp プロジェクト: ksenglee/ros
void collision_detection::WorldDiff::reset(const WorldPtr& world)
{
  clearChanges();

  WorldPtr old_world = world_.lock();
  if (old_world)
    old_world->removeObserver(observer_handle_);

  boost::weak_ptr<World>(world).swap(world_);
  observer_handle_ = world->addObserver(boost::bind(&WorldDiff::notify, this, _1, _2));
}
コード例 #3
0
ファイル: world_diff.cpp プロジェクト: ksenglee/ros
void collision_detection::WorldDiff::setWorld(const WorldPtr& world)
{
  WorldPtr old_world = world_.lock();
  if (old_world)
  {
    old_world->notifyObserverAllObjects(observer_handle_, World::DESTROY);
    old_world->removeObserver(observer_handle_);
  }

  boost::weak_ptr<World>(world).swap(world_);

  observer_handle_ = world->addObserver(boost::bind(&WorldDiff::notify, this, _1, _2));
  world->notifyObserverAllObjects(observer_handle_, World::CREATE|World::ADD_SHAPE);
}
コード例 #4
0
ファイル: world_diff.cpp プロジェクト: ksenglee/ros
collision_detection::WorldDiff::WorldDiff(const WorldPtr& world) :
  world_(world)
{
  observer_handle_ = world->addObserver(boost::bind(&WorldDiff::notify, this, _1, _2));
}