void OnlineViewerServerImpl::resetLogItem(BodyItemInfo* info, BodyMotionItem* newLogItem) { info->logItemConnections.disconnect(); info->logItem = newLogItem; if(newLogItem){ BodyMotionPtr motion = newLogItem->motion(); motion->jointPosSeq()->setDimension(0, 0); motion->linkPosSeq()->setNumParts(info->bodyItem->body()->numLinks()); motion->setFrameRate(timeBar->frameRate()); info->logItemConnections.add( newLogItem->sigPositionChanged().connect( boost::bind(&OnlineViewerServerImpl::resetLogItem, this, info, (BodyMotionItem*)0))); info->logItemConnections.add( newLogItem->sigNameChanged().connect( boost::bind(&OnlineViewerServerImpl::resetLogItem, this, info, (BodyMotionItem*)0))); } }
bool BodyMotionGenerationBar::shapeBodyMotionWithSimpleInterpolation (BodyPtr& body, PoseProvider* provider, BodyMotionItemPtr motionItem) { if(setup->onlyTimeBarRangeCheck.isChecked()){ poseProviderToBodyMotionConverter->setTimeRange(timeBar->minTime(), timeBar->maxTime()); } else { poseProviderToBodyMotionConverter->setFullTimeRange(); } poseProviderToBodyMotionConverter->setAllLinkPositionOutput(setup->se3Check.isChecked()); BodyMotionPtr motion = motionItem->motion(); motion->setFrameRate(timeBar->frameRate()); bool result = poseProviderToBodyMotionConverter->convert(body, provider, *motion); if(result){ motionItem->updateChildItemLineup(); motionItem->notifyUpdate(); } return result; }