/// Delete a scene from memory. After this call the pointer is invalid void Simulation::unload(Node::SPtr root) { if ( !root ) return; sofa::core::ExecParams* params = sofa::core::ExecParams::defaultInstance(); //if (dynamic_cast<Node*>(this->getContext()) == root) //{ // this->setContext(NULL); //} root->detachFromGraph(); root->execute<CleanupVisitor>(params); root->execute<DeleteVisitor>(params); }
void QSofaListView::RemoveNode() { if( object_.type == typeNode) { emit Lock(true); Node::SPtr node = object_.ptr.Node; if ( node == node->getRoot() ) { if ( QMessageBox::warning ( this, "Removing root", "root node cannot be removed" ) ) return; } else { node->detachFromGraph(); node->execute<simulation::DeleteVisitor>(sofa::core::ExecParams::defaultInstance()); emit NodeRemoved(); } emit Lock(false); } }