52 const size_t n = m_children.size();
53 for (
size_t i = 0; i < n; ++i)
55 tgModel *
const pChild = m_children[i];
57 assert(pChild != NULL);
64 for (
int i = 0; i < m_children.size(); i++)
66 m_children[i]->setup(world);
75 for (
int i = 0; i < m_children.size(); i++)
77 m_children[i]->teardown();
83 assert(m_children.empty());
90 throw std::invalid_argument(
"dt is not positive");
96 const size_t n = m_children.size();
97 for (
int i = 0; i < n; i++)
99 tgModel*
const pChild = m_children[i];
100 assert(pChild != NULL);
114 const size_t n = m_children.size();
115 for (
int i = 0; i < n; i++)
117 tgModel *
const pChild = m_children[i];
118 assert(pChild != NULL);
131 throw std::invalid_argument(
"child is NULL");
133 else if (pChild ==
this)
135 throw std::invalid_argument(
"child is this object");
140 if (std::find(descendants.begin(), descendants.end(), pChild) !=
143 throw std::invalid_argument(
"child is already a descendant");
147 m_children.push_back(pChild);
151 assert(!m_children.empty());
152 assert(std::find(m_children.begin(), m_children.end(), pChild) !=
159 std::ostringstream os;
160 os << prefix <<
"tgModel(" << std::endl;
161 os << prefix << p <<
"Children:" << std::endl;
162 for(
int i = 0; i < m_children.size(); i++) {
163 os << m_children[i]->toString(prefix + p) << std::endl;
165 os << prefix << p <<
"Tags: [" << getTags() <<
"]" << std::endl;
176 std::vector<tgModel*> result;
177 const size_t n = m_children.size();
178 for (
int i = 0; i < n; i++)
180 tgModel*
const pChild = m_children[i];
181 assert(pChild != NULL);
182 result.push_back(pChild);
185 result.insert(result.end(), cd.begin(), cd.end());
190 bool tgModel::invariant()
const
virtual void setup(tgWorld &world)
virtual std::string toString(std::string prefix="") const
void addChild(tgModel *pChild)
virtual void step(double dt)
std::ostream & operator<<(std::ostream &os, const tgModel &obj)
virtual void onVisit(const tgModelVisitor &r) const
Contains the definition of class tgModel. $Id$.
virtual void render(const tgRod &rod) const
Contains the definition of interface class tgModelVisitor.
std::vector< tgModel * > getDescendants() const