X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=laserbrain_demo;a=blobdiff_plain;f=src%2Fsnode.cc;fp=src%2Fsnode.cc;h=101fe62994e3bbbdf5c31b10c31afbd2266e89b3;hp=fac6c650b9c7e69b29d410bff6e7e29a9a5b38e1;hb=873255c40ab793b8c569eca3728d918339686000;hpb=8137121400748ee8afb1608253aae15323c5e3a2 diff --git a/src/snode.cc b/src/snode.cc index fac6c65..101fe62 100644 --- a/src/snode.cc +++ b/src/snode.cc @@ -37,6 +37,8 @@ const char *SceneNode::get_name() const void SceneNode::add_child(SceneNode *node) { + if(!node) return; + if(node->parent) { if(node->parent == this) { return; @@ -50,6 +52,8 @@ void SceneNode::add_child(SceneNode *node) bool SceneNode::remove_child(SceneNode *node) { + if(!node) return false; + auto it = std::find(children.begin(), children.end(), node); if(it != children.end()) { assert(node->parent == this); @@ -177,7 +181,7 @@ void SceneNode::update_node(float dt) xform.pre_scale(scale); if(parent) { - xform = parent->xform * xform; + xform = xform * parent->xform; } inv_xform = inverse(xform); }