예제 #1
0
파일: Entity.cpp 프로젝트: dtbinh/dart
//==============================================================================
void Entity::changeParentFrame(Frame* _newParentFrame)
{
  if (mParentFrame == _newParentFrame)
    return;

  const Frame* oldParentFrame = mParentFrame;

  if (!mAmQuiet && nullptr != mParentFrame)
  {
    EntityPtrSet::iterator it = mParentFrame->mChildEntities.find(this);
    if (it != mParentFrame->mChildEntities.end())
    {
      mParentFrame->mChildEntities.erase(it);
      mParentFrame->processRemovedEntity(this);
    }
  }

  mParentFrame =_newParentFrame;

  if (!mAmQuiet && nullptr != mParentFrame)
  {
    mParentFrame->mChildEntities.insert(this);
    mParentFrame->processNewEntity(this);
    notifyTransformUpdate();
  }

  mFrameChangedSignal.raise(this, oldParentFrame, mParentFrame);
}
예제 #2
0
//==============================================================================
void EndEffector::setRelativeTransform(const Eigen::Isometry3d& _newRelativeTf)
{
  mRelativeTf = _newRelativeTf;
  notifyTransformUpdate();
  notifyJacobianUpdate();
  notifyJacobianDerivUpdate();
}