// Destroy a Scene Node by name. void PCZSceneManager::destroySceneNode( const String &name ) { SceneNode * on = ( getSceneNode( name ) ); if ( on != 0 ) { // remove references to the node from zones removeSceneNode( on ); } // destroy the node SceneManager::destroySceneNode( name ); }
//--------------------------------EVENTOS-DE-MOUSE-E-TECLADO--------------------------------------// void Cena::keyPressEvent(QKeyEvent *event){ if (smgr) { if((event->modifiers() == Qt::ShiftModifier) && (event->key() == Qt::Key_A))//movimenta objeto em x e y { key_x_on = true; key_y_on = true; key_z_on = false; } if((event->modifiers() == Qt::ShiftModifier) && (event->key() == Qt::Key_S))//movimenta objeto em x e z { key_x_on = true; key_y_on = false; key_z_on = true; } if((event->modifiers() == Qt::ShiftModifier) && (event->key() == Qt::Key_D))//movimenta objeto em y e z { key_x_on = false; key_y_on = true; key_z_on = true; } if((event->modifiers() == Qt::ShiftModifier) && (event->key() == Qt::Key_F))//modivementa objeto nas 3 dimensoes { key_x_on = true; key_y_on = true; key_z_on = true; } if((event->modifiers() == Qt::ShiftModifier) && (event->key() == Qt::Key_P))//aproxima camera { if(camera_01 && (camera->getPosition().Z < (box.MinEdge.Z))){ camera->setPosition(Vector3df(camera->getPosition().X, camera->getPosition().Y, camera->getPosition().Z + aproxima*2)); } else if(camera_04 && (camera->getPosition().Z > (box.MaxEdge.Z))){ camera->setPosition(Vector3df(camera->getPosition().X, camera->getPosition().Y, camera->getPosition().Z - aproxima*2)); } else if(camera_06 && (camera->getPosition().Y < (box.MinEdge.Y) - 20)){ camera->setPosition(Vector3df(camera->getPosition().X, camera->getPosition().Y + aproxima*2, camera->getPosition().Z )); } else if(camera_05 && (camera->getPosition().Y > (box.MaxEdge.Y) + 20)){ camera->setPosition(Vector3df(camera->getPosition().X, camera->getPosition().Y - aproxima*2, camera->getPosition().Z)); } else if(camera_03 && ( camera->getPosition().X < (box.MinEdge.X) )){ camera->setPosition(Vector3df(camera->getPosition().X + aproxima*2, camera->getPosition().Y, camera->getPosition().Z)); } else if(camera_02 && (camera->getPosition().X > (box.MaxEdge.X))){ camera->setPosition(Vector3df(camera->getPosition().X - aproxima*2, camera->getPosition().Y, camera->getPosition().Z)); } } if((event->modifiers() == Qt::ShiftModifier) && (event->key() == Qt::Key_O))//afasta camera { if(camera_01 ){ camera->setPosition(Vector3df(camera->getPosition().X, camera->getPosition().Y, camera->getPosition().Z - afasta*2)); } else if(camera_04){ camera->setPosition(Vector3df(camera->getPosition().X, camera->getPosition().Y, camera->getPosition().Z + afasta*2)); } else if(camera_06){ camera->setPosition(Vector3df(camera->getPosition().X, camera->getPosition().Y - afasta*2, camera->getPosition().Z )); } else if(camera_05){ camera->setPosition(Vector3df(camera->getPosition().X, camera->getPosition().Y + afasta*2, camera->getPosition().Z)); } else if(camera_03){ camera->setPosition(Vector3df(camera->getPosition().X - afasta*2, camera->getPosition().Y, camera->getPosition().Z)); } else if(camera_02){ camera->setPosition(Vector3df(camera->getPosition().X + afasta*2, camera->getPosition().Y, camera->getPosition().Z)); } } switch(event->key()){ case (Qt::Key_X)://ativa movimentacao em x key_x_on = true; key_y_on = false; key_z_on = false; break; case (Qt::Key_Y)://ativa movimentacao em y key_y_on = true; key_x_on = false; key_z_on = false; break; case (Qt::Key_Z)://ativa movimentacao em z key_z_on = true; key_x_on = false; key_y_on = false; break; case (Qt::Key_R)://remove objeto selecioando removeSceneNode(); break; case (Qt::Key_C)://duplica objeto selecionado duplicateSceneNode(); break; case (Qt::Key_M)://ativa a movimentacao key_m_on = true; break; case (Qt::Key_W): aproximaObjetoSelecionado(); break; case (Qt::Key_1): //camera na posicao padrão camera->setPosition(Vector3df(0, 0, -200)); camera->setTarget(Vector3df(0, 0, 0)); camera_01 = true; camera_02 = false; camera_03 = false; camera_04 = false; camera_05 = false; camera_06 = false; break; case (Qt::Key_2): //camera posionada na direita camera->setTarget(Vector3df(0, 0, 0)); camera->setPosition(Vector3df(200, 0, 0)); camera_01 = false; camera_02 = true; camera_03 = false; camera_04 = false; camera_05 = false; camera_06 = false; break; case (Qt::Key_3): //camera posicionada na esquerda camera->setTarget(Vector3df(0,0,0)); camera->setPosition(Vector3df(-200,0,0)); camera_01 = false; camera_02 = false; camera_03 = true; camera_04 = false; camera_05 = false; camera_06 = false; break; case (Qt::Key_4): //camera posionada na parte de tras camera->setTarget(Vector3df(0,0,0)); camera->setPosition(Vector3df(0,0,200)); camera_01 = false; camera_02 = false; camera_03 = false; camera_04 = true; camera_05 = false; camera_06 = false; break; case (Qt::Key_5): //camera posionada no topo camera->setTarget(Vector3df(0, 0, 0)); camera->setPosition(Vector3df(0, 200, -0.1)); //camera->setRotation(Vector3df(90,0,0)); camera_01 = false; camera_02 = false; camera_03 = false; camera_04 = false; camera_05 = true; camera_06 = false; break; case (Qt::Key_6): //camera posionada na base camera->setTarget(Vector3df(0, 0, 0)); camera->setPosition(Vector3df(0, -200, -0.1)); camera_01 = false; camera_02 = false; camera_03 = false; camera_04 = false; camera_05 = false; camera_06 = true; break; default: break; } drawIrrlichtScene(); } event->ignore(); }