void AddLightToSceneCommand::undo(void) { Inherited::undo(); dynamic_cast<ApplicationBuilder*>(MainApplication::the()->getBuilderMode())->getMainWindow()->getSceneComponentTree()->getTreeModel()->lightWillBeRemoved(dynamic_cast<Light*>(_CreatedLightNode->getCore())); //Get the Root node NodeRecPtr RootNode = _RootScene->getPrimaryViewport()->getRoot(); //Move all of the child nodes on the root onto children of the light node while(_CreatedLightNode->getNChildren() != 0) { RootNode->addChild(_CreatedLightNode->getChild(0)); } //Add the Light node to the root RootNode->subChild(_CreatedLightBeaconNode); dynamic_cast<ApplicationBuilder*>(MainApplication::the()->getBuilderMode())->getMainWindow()->getSceneComponentTree()->getTreeModel()->lightRemoved(dynamic_cast<Light*>(_CreatedLightNode->getCore())); }
OpenSGEnvironmentSceneGraphAttachment::~OpenSGEnvironmentSceneGraphAttachment() { if (envGroupeNode->getNChildren() > 0) { printd(ERROR, "OpenSGEnvironmentSceneGraphAttachment::destructor(): Environment Group-Node still has children attached! FORCING REMOVE!\n"); for (int i=envGroupeNode->getNChildren()-1; i >= 0 ; i--) { #if OSG_MAJOR_VERSION >= 2 envGroupeNode->subChild(i); #else //OpenSG1: beginEditCP(envGroupeNode); envGroupeNode->subChild(i); endEditCP(envGroupeNode); #endif } // for } // if #if OSG_MAJOR_VERSION >= 2 if (envTransNode->getParent() != NULL) { printd(ERROR, "OpenSGEnvironmentSceneGraphAttachment::destructor(): Environment Transformation Node still in SceneGraph! FORCING REMOVE!\n"); NodeRecPtr parentNode = envTransNode->getParent(); parentNode->subChild(envTransNode); } // if #else //OpenSG1: if (envTransNode->getParent() != NullFC) { printd(ERROR, "OpenSGEnvironmentSceneGraphAttachment::destructor(): Environment Transformation Node still in SceneGraph! FORCING REMOVE!\n"); NodePtr parentNode = envTransNode->getParent(); beginEditCP(parentNode); parentNode->subChild(envTransNode); endEditCP(parentNode); } // if subRefCP(envTransNode); #endif } // ~OpenSGEnvironmentSceneGraphAttachment