3
@author Shin'ichiro Nakaoka
6
#ifndef CNOID_BODYPLUGIN_BODY_MOTION_ITEM_H_INCLUDED
7
#define CNOID_BODYPLUGIN_BODY_MOTION_ITEM_H_INCLUDED
9
#include <cnoid/BodyMotion>
10
#include <cnoid/MultiSeqItem>
11
#include <cnoid/MultiValueSeqItem>
12
#include <cnoid/MultiAffine3SeqItem>
13
#include <cnoid/Vector3SeqItem>
14
#include "exportdecl.h"
18
class CNOID_EXPORT BodyMotionItem : public MultiSeqItemBase
23
virtual MultiSeqBasePtr seqBase() { return bodyMotion_; }
25
inline const BodyMotionPtr& motion() { return bodyMotion_; }
27
inline MultiValueSeqItem* jointPosSeqItem() {
28
return jointPosSeqItem_.get();
31
inline const MultiValueSeqPtr& jointPosSeq() {
32
return bodyMotion_->jointPosSeq();
35
inline MultiAffine3SeqItem* linkPosSeqItem() {
36
return linkPosSeqItem_.get();
39
inline const MultiAffine3SeqPtr& linkPosSeq() {
40
return bodyMotion_->linkPosSeq();
43
bool hasRelativeZmpSeqItem() { return bodyMotion_->hasRelativeZmpSeq(); }
44
Vector3SeqItem* relativeZmpSeqItem();
46
inline Vector3SeqPtr relativeZmpSeq() {
47
return relativeZmpSeqItem()->seq();
50
virtual void notifyUpdate();
52
void updateChildItemLineup();
56
BodyMotionItem(const BodyMotionItem& org);
58
virtual ItemPtr doDuplicate() const;
59
virtual bool store(Archive& archive);
60
virtual bool restore(const Archive& archive);
64
BodyMotionPtr bodyMotion_;
66
MultiValueSeqItemPtr jointPosSeqItem_;
67
MultiAffine3SeqItemPtr linkPosSeqItem_;
68
Vector3SeqItemPtr relativeZmpSeqItem_;
71
void onSubItemUpdated(Item* childItem);
74
typedef boost::intrusive_ptr<BodyMotionItem> BodyMotionItemPtr;
76
void initializeBodyMotionItem(ExtensionManager& ext);