X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fsnode.cc;h=101fe62994e3bbbdf5c31b10c31afbd2266e89b3;hb=572bf1ef8d54ef5a7cba7cdf38515cb16c4c312c;hp=fac6c650b9c7e69b29d410bff6e7e29a9a5b38e1;hpb=b7c92831285013b2a0783bccaf3d900545ebb5ba;p=laserbrain_demo 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); }