SceneNode* SceneNode::Clone(SceneNode *dstNode) { if (!dstNode) { dstNode = new SceneNode(scene); } dstNode->visible = visible; dstNode->defaultLocalTransform = defaultLocalTransform; dstNode->localTransform = localTransform; dstNode->worldTransform = worldTransform; dstNode->name = name; dstNode->tag = tag; dstNode->debugFlags = debugFlags; // Logger::Debug("Node %s clonned", name.c_str()); dstNode->nodeAnimations = nodeAnimations; // Logger::Debug("Children +++++++++++++++++++++++++++++++"); std::vector<SceneNode*>::iterator it = childs.begin(); std::vector<SceneNode*>::iterator childsEnd = childs.end(); for(; it != childsEnd; it++) { SceneNode *n = (*it)->Clone(); dstNode->AddNode(n); n->Release(); } // Logger::Debug("Children -------------------------------"); return dstNode; }
void SceneNode::RemoveAllChildren() { for (std::vector<SceneNode*>::iterator t = childs.begin(); t != childs.end(); ++t) { SceneNode *node = *t; node->SetParent(0); node->Release(); } childs.clear(); }