Beispiel #1
0
void IrrQWidget::mousePressEvent( QMouseEvent* event ){
    if (idevice != 0){
            sendMouseEventToIrrlicht(event, true);
            drawIrrlichtScene();
    }
    event->ignore();
}
Beispiel #2
0
void IrrQWidget::mouseReleaseEvent( QMouseEvent* event){
    if (idevice != 0){
            sendMouseEventToIrrlicht(event, false);
            drawIrrlichtScene();
    }
    event->ignore();
}
Beispiel #3
0
void Cena::mouseReleaseEvent( QMouseEvent* event )
{
    if (smgr) {
        sendMouseEventToIrrlicht(event, false);
        duplicateNode_mouse_key = false;
        drawIrrlichtScene();
    }
    event->ignore();
}
Beispiel #4
0
void Cena::gizmo(){
    if(smgr)
    {
        IrrNode* node = new IrrNode();
        node->criaGizmo(smgr, &gizmo_X, &gizmo_Y, &gizmo_Z);
        drawIrrlichtScene();
        delete node;
    }
}
Beispiel #5
0
void Cena::cenaIrrlicht()
{
    if (smgr) {
        collMan = smgr->getSceneCollisionManager();
        cenaCameras();
        cenaIluminacao();
        criaRegiaoAnalise();
        gizmo();
        drawIrrlichtScene();
    }
}
Beispiel #6
0
//-----------------------------------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;
    }
}
Beispiel #7
0
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();
          }
    }
}
Beispiel #8
0
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();
        }
    }
}
Beispiel #9
0
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();
        }
    }
}
Beispiel #10
0
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();
        }
    }
}
Beispiel #11
0
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;
    }
}
Beispiel #12
0
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;
    }
}
Beispiel #13
0
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();
}
Beispiel #14
0
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();
}
Beispiel #15
0
//--------------------------------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();
}
Beispiel #16
0
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();
}
Beispiel #17
0
void IrrWidget::paintEvent(QPaintEvent* event){
    if(verboseOutput){
        qDebug() << "IrrWidget::paintEvent()";
    }
    drawIrrlichtScene();
}
Beispiel #18
0
void IrrQWidget::paintEvent( QPaintEvent *event ){
    if ( idevice != 0 ){
        QWidget::paintEvent(event);
        drawIrrlichtScene();
    }
}