void IrrQWidget::mousePressEvent( QMouseEvent* event ){ if (idevice != 0){ sendMouseEventToIrrlicht(event, true); drawIrrlichtScene(); } event->ignore(); }
void IrrQWidget::mouseReleaseEvent( QMouseEvent* event){ if (idevice != 0){ sendMouseEventToIrrlicht(event, false); drawIrrlichtScene(); } event->ignore(); }
void Cena::mouseReleaseEvent( QMouseEvent* event ) { if (smgr) { sendMouseEventToIrrlicht(event, false); duplicateNode_mouse_key = false; drawIrrlichtScene(); } event->ignore(); }
void Cena::gizmo(){ if(smgr) { IrrNode* node = new IrrNode(); node->criaGizmo(smgr, &gizmo_X, &gizmo_Y, &gizmo_Z); drawIrrlichtScene(); delete node; } }
void Cena::cenaIrrlicht() { if (smgr) { collMan = smgr->getSceneCollisionManager(); cenaCameras(); cenaIluminacao(); criaRegiaoAnalise(); gizmo(); drawIrrlichtScene(); } }
//-----------------------------------MODIFICADORES-DE-OBEJTOS--------------------------------------// void Cena::insertCubo(IrrNode* node) { if(smgr){ getDimCube* w = new getDimCube(0); w->show(); w->exec(); if(w->isOk()){ Dim3df dim = w->getDimension(); Pos3df p = w->getPosition(); node->criaCubo(smgr, p, dim); drawIrrlichtScene(); } delete w; } }
void IrrQWidget::createCubo(){ if(idevice!=0){ IMesh *mesh_cube_node = geo->createCubeMesh(vector3df(20,20,20)); IMeshSceneNode *cube_node = iscene->addMeshSceneNode(mesh_cube_node); if (cube_node){ cube_node->setPosition(vector3df(40,0,0)); cube_node->setMaterialFlag(EMF_LIGHTING, false); seletor = iscene->createOctTreeTriangleSelector(cube_node->getMesh(), cube_node, 128); cube_node->setTriangleSelector(seletor); seletor->drop(); selectedSceneNode = (ISceneNode*)cube_node; drawIrrlichtScene(); } } }
void IrrQWidget::createEsfera(){ if(idevice!=0){ IMesh *mesh_esfera = geo->createSphereMesh(10.0f,16,16); IMeshSceneNode *esfera = iscene->addMeshSceneNode(mesh_esfera); if (esfera){ esfera->setMaterialFlag(EMF_LIGHTING, false); esfera->setPosition(core::vector3df(20,20,20)); seletor = iscene->createOctTreeTriangleSelector(esfera->getMesh(), esfera, 128); esfera->setTriangleSelector(seletor); seletor->drop(); selectedSceneNode = (ISceneNode*)esfera; drawIrrlichtScene(); } } }
void IrrQWidget::createCone(){ if(idevice!=0){ IMesh *mesh_cone = geo->createConeMesh(10.0f,20.0f,40,SColor(),SColor(),0.f); IMeshSceneNode *cone2 = iscene->addMeshSceneNode(mesh_cone); if (cone2){ cone2->setMaterialFlag(EMF_LIGHTING, false); cone2->setPosition(core::vector3df(0,-35,0)); seletor = iscene->createOctTreeTriangleSelector(cone2->getMesh(), cone2, 128); cone2->setTriangleSelector(seletor); seletor->drop(); selectedSceneNode = (ISceneNode*)cone2; drawIrrlichtScene(); } } }
void IrrQWidget::createLinha(){ if(idevice!=0){ IMesh *mesh_linha = geo->createCylinderMesh(1.0f,100.0f,10,SColor(255, 255, 0, 0),true,0.f); IMeshSceneNode *linha = iscene->addMeshSceneNode(mesh_linha); if (linha){ linha->setMaterialFlag(EMF_LIGHTING, false); linha->setPosition(core::vector3df(10,0,0)); linha->setRotation(core::vector3df(0,0,90)); seletor = iscene->createOctTreeTriangleSelector(linha->getMesh(), linha, 128); linha->setTriangleSelector(seletor); seletor->drop(); selectedSceneNode = (ISceneNode*)linha; drawIrrlichtScene(); } } }
void Cena::insertEsfera(IrrNode* node) { if(smgr) { getDimEsfera* w = new getDimEsfera(0); w->show(); w->exec(); double raio = w->getDimension(); Pos3df p = w->getPosition(); node->criaEsfera(smgr, p, raio); drawIrrlichtScene(); delete w; } }
void Cena::insertCilindro(IrrNode* node) { if(smgr) { getDimCilindro*w = new getDimCilindro(); w->show(); w->exec(); Dim3df dim = w->getDimension(); Pos3df p = w->getPosition(); node->criaCilindro(smgr, p, dim); drawIrrlichtScene(); delete w; } }
void Cena::mousePressEvent( QMouseEvent* event ) { if (smgr) { selection(); mouseXi = device->getCursorControl()->getPosition().X; mouseYi = device->getCursorControl()->getPosition().Y; if(selectedSceneNode){ xi = selectedSceneNode->getPosition().X; yi = selectedSceneNode->getPosition().Y; zi = selectedSceneNode->getPosition().Z; } sendMouseEventToIrrlicht(event, true); drawIrrlichtScene(); } event->ignore(); }
void Cena::mouseMoveEvent(QMouseEvent *event) { if(smgr) { if(MoveSceneNode!=0 && key_m_on && gizmo_X!=0 && gizmo_Y!=0 && gizmo_Z!=0 ) { dx = device->getCursorControl()->getPosition().X - mouseXi; dy = device->getCursorControl()->getPosition().Y - mouseYi; if(key_x_on) { if(camera_01){ MoveSceneNode->setPosition(Vector3df( xi + 0.1*dx, MoveSceneNode->getPosition().Y, MoveSceneNode->getPosition().Z )); emit send_x_changed(); } else if(camera_04) MoveSceneNode->setPosition(Vector3df( xi + 0.1*(-dx), MoveSceneNode->getPosition().Y, MoveSceneNode->getPosition().Z )); else if(camera_05) MoveSceneNode->setPosition(Vector3df( xi + 0.1*(-dy), MoveSceneNode->getPosition().Y, MoveSceneNode->getPosition().Z )); else if(camera_06) MoveSceneNode->setPosition(Vector3df( xi + 0.1*(-dy), MoveSceneNode->getPosition().Y, MoveSceneNode->getPosition().Z )); gizmo_X->setPosition(MoveSceneNode->getPosition()); gizmo_X->setVisible(true); gizmo_Y->setPosition(MoveSceneNode->getPosition()); gizmo_Y->setVisible(true); gizmo_Z->setPosition(MoveSceneNode->getPosition()); gizmo_Z->setVisible(true); drawIrrlichtScene(); } else if(key_y_on) { if(camera_05||camera_06){ dy = 0; } MoveSceneNode->setPosition(Vector3df( MoveSceneNode->getPosition().X, yi - 0.1*dy, MoveSceneNode->getPosition().Z )); gizmo_X->setPosition(MoveSceneNode->getPosition()); gizmo_X->setVisible(true); gizmo_Y->setPosition(MoveSceneNode->getPosition()); gizmo_Y->setVisible(true); gizmo_Z->setPosition(MoveSceneNode->getPosition()); gizmo_Z->setVisible(true); drawIrrlichtScene(); } else if(key_z_on) { if(camera_05) MoveSceneNode->setPosition(Vector3df( MoveSceneNode->getPosition().X, MoveSceneNode->getPosition().Y, zi + 0.1*(-dx))); else if(camera_06) MoveSceneNode->setPosition(Vector3df( MoveSceneNode->getPosition().X, MoveSceneNode->getPosition().Y, zi + 0.1*(dx))); else if(camera_02) MoveSceneNode->setPosition(Vector3df( MoveSceneNode->getPosition().X, MoveSceneNode->getPosition().Y, zi + 0.1*(dx))); else if(camera_03) MoveSceneNode->setPosition(Vector3df( MoveSceneNode->getPosition().X, MoveSceneNode->getPosition().Y, zi + 0.1*(-dx))); gizmo_X->setPosition(MoveSceneNode->getPosition()); gizmo_X->setVisible(true); gizmo_Y->setPosition(MoveSceneNode->getPosition()); gizmo_Y->setVisible(true); gizmo_Z->setPosition(MoveSceneNode->getPosition()); gizmo_Z->setVisible(true); drawIrrlichtScene(); } } } event->ignore(); }
//--------------------------------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(); }
void IrrWidget::updateIrrlicht() { //this slot is for calling this private method from the outside //more stuffs will be done here to improuve the rendering loop performences drawIrrlichtScene(); }
void IrrWidget::paintEvent(QPaintEvent* event){ if(verboseOutput){ qDebug() << "IrrWidget::paintEvent()"; } drawIrrlichtScene(); }
void IrrQWidget::paintEvent( QPaintEvent *event ){ if ( idevice != 0 ){ QWidget::paintEvent(event); drawIrrlichtScene(); } }