20 #ifndef _OPENMBV_COMPOUNDRIGIDBODY_H_
21 #define _OPENMBV_COMPOUNDRIGIDBODY_H_
23 #include <openmbvcppinterface/rigidbody.h>
25 #include <boost/enable_shared_from_this.hpp>
32 ,
public boost::enable_shared_from_this<CompoundRigidBody>
38 std::string expandStr;
39 std::vector<boost::shared_ptr<RigidBody> > rigidBody;
50 if(rigidBody_->name==
"")
throw std::runtime_error(
"the object to be added must have a name");
51 for(
unsigned int i=0; i<rigidBody.size(); i++)
52 if(rigidBody[i]->name==rigidBody_->name)
throw std::runtime_error(
"a object of the same name already exists");
53 rigidBody.push_back(rigidBody_);
54 rigidBody_->parent.reset();
55 rigidBody_->compound=shared_from_this();
58 std::vector<boost::shared_ptr<RigidBody> >& getRigidBodies() {
65 xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *parent);
68 void setExpand(
bool expand) { expandStr=(expand==
true)?
"true":
"false"; }
70 bool getExpand() {
return expandStr==
"true"?
true:
false; }
Abstract base class for all rigid bodies.
Definition: rigidbody.h:70
Definition: objectfactory.h:40
virtual void initializeUsingXML(xercesc::DOMElement *element)
Definition: compoundrigidbody.cc:48
void setExpand(bool expand)
Definition: compoundrigidbody.h:68
void addRigidBody(boost::shared_ptr< RigidBody > rigidBody_)
Definition: compoundrigidbody.h:49
std::string getClassName()
Definition: compoundrigidbody.h:46
Definition: compoundrigidbody.h:30