void AddLightToSceneCommand::execute(void) { //Make the Light Beacon node _CreatedLightBeaconNode = makeCoredNode<Transform>(); setName(_CreatedLightBeaconNode, _LightType.getName() + "_Beacon_Node"); //Make the Light node LightRecPtr NewLight = dynamic_pointer_cast<Light>(_LightType.createContainer()); NewLight->setBeacon(_CreatedLightBeaconNode); setName(NewLight, _LightType.getName() + "_NodeCore"); _CreatedLightNode = Node::create(); setName(_CreatedLightNode, _LightType.getName() + "_Node"); _CreatedLightNode->setCore(NewLight); //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(RootNode->getNChildren() != 0) { _CreatedLightNode->addChild(RootNode->getChild(0)); } _CreatedLightNode->addChild(_CreatedLightBeaconNode); //Add the Light node to the root RootNode->addChild(_CreatedLightNode); dynamic_cast<ApplicationBuilder*>(MainApplication::the()->getBuilderMode())->getMainWindow()->getSceneComponentTree()->getTreeModel()->lightAdded(dynamic_cast<Light*>(_CreatedLightNode->getCore())); _HasBeenDone = true; }
void AddLightToSceneCommand::redo(void) { Inherited::redo(); //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(RootNode->getNChildren() != 0) { _CreatedLightNode->addChild(RootNode->getChild(0)); } _CreatedLightNode->addChild(_CreatedLightBeaconNode); //Add the Light node to the root RootNode->addChild(_CreatedLightNode); dynamic_cast<ApplicationBuilder*>(MainApplication::the()->getBuilderMode())->getMainWindow()->getSceneComponentTree()->getTreeModel()->lightAdded(dynamic_cast<Light*>(_CreatedLightNode->getCore())); }