~choreonoid/choreonoid/debian

« back to all changes in this revision

Viewing changes to src/BodyPlugin/BodyMotionItem.h

  • Committer: Thomas Moulard
  • Date: 2012-10-23 12:43:24 UTC
  • Revision ID: git-v1:351cf736ad49bc7a9a7b9767dee760a013517a5d
Tags: upstream/1.1.0
ImportedĀ UpstreamĀ versionĀ 1.1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
2
   @file
 
3
   @author Shin'ichiro Nakaoka
 
4
*/
 
5
 
 
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:
 
21
        BodyMotionItem();
 
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
 
 
46
        inline Vector3SeqPtr relativeZmpSeq() {
 
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