Choreonoid  1.1
BodyMotionItem.h
[詳解]
1 
6 #ifndef CNOID_BODYPLUGIN_BODY_MOTION_ITEM_H_INCLUDED
7 #define CNOID_BODYPLUGIN_BODY_MOTION_ITEM_H_INCLUDED
8 
9 #include <cnoid/BodyMotion>
10 #include <cnoid/MultiSeqItem>
11 #include <cnoid/MultiValueSeqItem>
12 #include <cnoid/MultiAffine3SeqItem>
13 #include <cnoid/Vector3SeqItem>
14 #include "exportdecl.h"
15 
16 namespace cnoid {
17 
18  class CNOID_EXPORT BodyMotionItem : public MultiSeqItemBase
19  {
20  public:
22 
23  virtual MultiSeqBasePtr seqBase() { return bodyMotion_; }
24 
25  inline const BodyMotionPtr& motion() { return bodyMotion_; }
26 
27  inline MultiValueSeqItem* jointPosSeqItem() {
28  return jointPosSeqItem_.get();
29  }
30 
31  inline const MultiValueSeqPtr& jointPosSeq() {
32  return bodyMotion_->jointPosSeq();
33  }
34 
35  inline MultiAffine3SeqItem* linkPosSeqItem() {
36  return linkPosSeqItem_.get();
37  }
38 
39  inline const MultiAffine3SeqPtr& linkPosSeq() {
40  return bodyMotion_->linkPosSeq();
41  }
42 
43  bool hasRelativeZmpSeqItem() { return bodyMotion_->hasRelativeZmpSeq(); }
44  Vector3SeqItem* relativeZmpSeqItem();
45 
47  return relativeZmpSeqItem()->seq();
48  }
49 
50  virtual void notifyUpdate();
51 
52  void updateChildItemLineup();
53 
54  protected:
55 
56  BodyMotionItem(const BodyMotionItem& org);
57 
58  virtual ItemPtr doDuplicate() const;
59  virtual bool store(Archive& archive);
60  virtual bool restore(const Archive& archive);
61 
62  private:
63 
64  BodyMotionPtr bodyMotion_;
65 
66  MultiValueSeqItemPtr jointPosSeqItem_;
67  MultiAffine3SeqItemPtr linkPosSeqItem_;
68  Vector3SeqItemPtr relativeZmpSeqItem_;
69 
70  void initialize();
71  void onSubItemUpdated(Item* childItem);
72  };
73 
74  typedef boost::intrusive_ptr<BodyMotionItem> BodyMotionItemPtr;
75 
76  void initializeBodyMotionItem(ExtensionManager& ext);
77 
78 }
79 
80 #endif
MultiAffine3SeqItem * linkPosSeqItem()
Definition: BodyMotionItem.h:35
MultiValueSeq::Ptr MultiValueSeqPtr
Definition: MultiValueSeq.h:33
boost::shared_ptr< BodyMotion > BodyMotionPtr
Definition: BodyMotion.h:90
Vector3SeqPtr relativeZmpSeq()
Definition: BodyMotionItem.h:46
Definition: BodyMotionItem.h:18
boost::shared_ptr< Vector3Seq > Vector3SeqPtr
Definition: Vector3Seq.h:34
boost::intrusive_ptr< BodyMotionItem > BodyMotionItemPtr
Definition: BodyMotionItem.h:74
Definition: EasyScanner.h:16
bool hasRelativeZmpSeqItem()
Definition: BodyMotionItem.h:43
const MultiAffine3SeqPtr & linkPosSeq()
Definition: BodyMotionItem.h:39
const BodyMotionPtr & motion()
Definition: BodyMotionItem.h:25
MultiAffine3Seq::Ptr MultiAffine3SeqPtr
Definition: MultiAffine3Seq.h:40
const MultiValueSeqPtr & jointPosSeq()
Definition: BodyMotionItem.h:31
boost::shared_ptr< MultiSeqBase > MultiSeqBasePtr
Definition: SeqBase.h:108
#define CNOID_EXPORT
Definition: Util/exportdecl.h:13
MultiValueSeqItem * jointPosSeqItem()
Definition: BodyMotionItem.h:27
void initializeBodyMotionItem(ExtensionManager &ext)
Definition: BodyMotionItem.cpp:152
bool initialize()
virtual MultiSeqBasePtr seqBase()
Definition: BodyMotionItem.h:23