Choreonoid  1.5
SceneBody.h
Go to the documentation of this file.
1 
5 #ifndef CNOID_BODY_SCENE_BODY_H
6 #define CNOID_BODY_SCENE_BODY_H
7 
8 #include "Body.h"
9 #include "SceneDevice.h"
10 #include <cnoid/SceneGraph>
11 #include "exportdecl.h"
12 
13 namespace cnoid {
14 
16 {
17 public:
19 
20  SceneLink(Link* link);
21 
22  Link* link() { return link_; }
23  const Link* link() const { return link_; }
24 
25  const SgNode* visualShape() const { return visualShape_; }
26  SgNode* visualShape() { return visualShape_; }
27  const SgNode* collisionShape() const { return collisionShape_; }
28  SgNode* collisionShape() { return collisionShape_; }
29  void setShapeGroup(SgGroup* group);
30  void resetShapeGroup();
31  void cloneShape(SgCloneMap& cloneMap);
32  void setVisible(bool on);
33  void setVisibleShapeTypes(bool visual, bool collision);
34  void makeTransparent(float transparency);
35  void makeTransparent(float transparency, SgCloneMap& cloneMap);
36 
37  void addSceneDevice(SceneDevice* sdev);
38  SceneDevice* getSceneDevice(Device* device);
39 
40 private:
41  SceneLink(const SceneLink& org);
42  Link* link_;
43  SgPosTransformPtr shapeTransform;
44  SgNodePtr visualShape_;
45  SgNodePtr collisionShape_;
46  SgGroup* currentShapeGroup;
47  SgGroupPtr shapeGroup;
48  bool isVisible_;
49  bool isVisualShapeVisible_;
50  bool isCollisionShapeVisible_;
51  std::vector<SceneDevicePtr> sceneDevices_;
52  SgGroupPtr deviceGroup;
53  float transparency_;
54 
55  int cloneShape(SgCloneMap& cloneMap, bool doNotify);
56  int updateVisibility(int action, bool doNotify);
57 };
59 
60 
62 {
63 public:
65 
66  SceneBody(Body* body);
67  SceneBody(Body* body, boost::function<SceneLink*(Link*)> sceneLinkFactory);
68 
69  Body* body() { return body_; }
70  const Body* body() const { return body_; }
71 
72  void cloneShapes(SgCloneMap& cloneMap);
73 
74  void setVisibleShapeTypes(bool visual, bool collision);
75 
76  int numSceneLinks() const { return sceneLinks_.size(); }
77  SceneLink* sceneLink(int index) { return sceneLinks_[index]; }
78  const SceneLink* sceneLink(int index) const { return sceneLinks_[index]; }
79 
80  void updateLinkPositions();
81  void updateLinkPositions(SgUpdate& update);
82 
83  SceneDevice* getSceneDevice(Device* device);
84  void setSceneDeviceUpdateConnection(bool on);
85  void updateSceneDevices();
86 
87  void makeTransparent(float transparency);
88  void makeTransparent(float transparency, SgCloneMap& cloneMap);
89 
90  virtual void updateModel();
91 
92 protected:
95  std::vector<SceneLinkPtr> sceneLinks_;
96  std::vector<SceneDevicePtr> sceneDevices;
97 
98  virtual ~SceneBody();
99 
100 private:
101  boost::function<SceneLink*(Link*)> sceneLinkFactory;
102  bool isVisualShapeVisible;
103  bool isCollisionShapeVisible;
104 
105  SceneBody(const SceneBody& org);
106  void initialize(Body* body, const boost::function<SceneLink*(Link*)>& sceneLinkFactory);
107 };
108 
110 }
111 
112 #endif
Definition: Body.h:28
ref_ptr< SceneLink > SceneLinkPtr
Definition: SceneBody.h:58
Definition: SceneGraph.h:142
std::vector< SceneDevicePtr > sceneDevices
Definition: SceneBody.h:96
const Body * body() const
Definition: SceneBody.h:70
Definition: SceneGraph.h:24
int numSceneLinks() const
Definition: SceneBody.h:76
const SceneLink * sceneLink(int index) const
Definition: SceneBody.h:78
std::vector< SceneLinkPtr > sceneLinks_
Definition: SceneBody.h:95
Body * body()
Definition: SceneBody.h:69
ref_ptr< SceneBody > SceneBodyPtr
Definition: SceneBody.h:109
SceneLink * sceneLink(int index)
Definition: SceneBody.h:77
CNOID_EXPORT int makeTransparent(SgNode *topNode, float transparency, SgCloneMap &cloneMap, bool doKeepOrgTransparency=true)
Definition: SceneUtil.cpp:114
Definition: SceneGraph.h:56
Definition: SceneGraph.h:279
Definition: SceneDevice.h:20
Definition: SceneGraph.h:160
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
SgGroupPtr sceneLinkGroup
Definition: SceneBody.h:94
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
Definition: SceneBody.h:64
Definition: SceneBody.h:61
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37
BodyPtr body_
Definition: SceneBody.h:93
Definition: Device.h:52