void OpenGLWidget::mouseMoveEvent(QMouseEvent * mouseEvent) { // Ignore events that return mouse to center. if(mouseEvent->pos() == QPoint(this->width() / 2, this->height() / 2)) { return; } const int xDelta = mouseEvent->x() - (this->width() / 2); const int yDelta = mouseEvent->y() - (this->height() / 2); static const float sensitivity = 0.25f; m_yawRotation += xDelta * sensitivity; m_pitchRotation -= yDelta * sensitivity; if(m_pitchRotation < -89.0f) { m_pitchRotation = -89.0f; } if(m_pitchRotation > 89.0f) { m_pitchRotation = 89.0f; } const float yawRad = m_yawRotation * 3.14 / 180; const float pitchRad = m_pitchRotation * 3.14 / 180; m_cameraFront.setX(std::cos(pitchRad) * std::cos(yawRad)); m_cameraFront.setY(std::sin(pitchRad)); m_cameraFront.setZ(std::cos(pitchRad) * std::sin(yawRad)); QCursor cursor = this->cursor(); cursor.setPos(mapToGlobal(QPoint(this->width() / 2, this->height() / 2))); setCursor(cursor); }
void Preview::mouseMoveEvent( QMouseEvent* e ) { e; QCursor c = cursor(); QPoint mapFromGlobal = this->mapFromGlobal( c.pos() ); if ( GetAsyncKeyState( VK_LBUTTON ) < 0 && mapFromGlobal.x() >= 0 && mapFromGlobal.x() <= width() && mapFromGlobal.y() >= 0 && mapFromGlobal.y() <= height() && MouseInput::globalMouseInput.oldMousePosition != glm::vec2( c.pos().x() , c.pos().y() ) ) { if ( !MouseInput::globalMouseInput.getDeltaTracking() )MouseInput::globalMouseInput.setDeltaTracking( true ); glm::vec2 oldPos = MouseInput::globalMouseInput.oldMousePosition; MouseInput::globalMouseInput.updateMousePosition( glm::vec2( c.pos().x() , c.pos().y() ) ); c.setPos( QPoint( oldPos.x , oldPos.y ) ); c.setShape( Qt::BlankCursor ); } else if ( MouseInput::globalMouseInput.oldMousePosition != glm::vec2( c.pos().x() , c.pos().y() ) ) { c.setShape( Qt::ArrowCursor ); if ( MouseInput::globalMouseInput.getDeltaTracking() )MouseInput::globalMouseInput.setDeltaTracking( false ); MouseInput::globalMouseInput.oldMousePosition = glm::vec2( c.pos().x() , c.pos().y() ); MouseInput::globalMouseInput.updateMousePosition( glm::vec2( c.pos().x() , c.pos().y() ) ); } clearFocus(); setCursor( c ); setFocus(); }
//Tekla bat sakatzean sortzen den ekintza void Mandomugitu::keyPressEvent( QKeyEvent * event ) { // X eta Y ardatzetako posizioa bertan gordeko dira int posx,posy; QCursor pos; //X eta Y ardatzeko posizioa lortzeko x() eta y() funtzioak erabiltzeko objektuaren erazagupena QPoint posiz; //rfcomm0 portua ireki FILE * portua = fopen ("/dev/rfcomm0", "w"); //fputc funtzioan char motakoak bidali behar direnez posx eta posy aldagaien 'karaktere' motako aldagaiak char cposx,cposy; //idatzitako teklaren kodea jasotzen da const int botoi = event->key(); //Tekla bakoitzaren kodearekin konparatzen da, eta koinziditzen badute, letra hori bidaltzen zaio pololuri switch (botoi) { //A letraren kodea,Wiimote-ko A botoia sakatzen dagoen bitartean kurtsorearen posizioak bidaliko zaizkio robotaren programari case Qt::Key_A : //posiz objektuan pos() funtzioak itzultzen dituen pantailako uneko x eta y balioak gordeko dira posiz = QCursor::pos(); //Pantailak har dezakeen X eta Y posiziorik altuena 1365 eta 767 direnez da,eta balio hauek handiegiak direnez 13,65 eta 7,67 balioarengatik zatituko da //Horrela posx eta posy-k izango duten baliorik handiena 100 izango da //posx aldagaiean posiz objektuko x posizioa esleituko da posx = posiz.x()/13.65; //posy aldagaiean posiz objektuko y posizioa esleituko da posy = posiz.y()/7.67; //Robotaren programari bidaliko zaion 'a' tekla esleitzen da tekla = 'a'; //fputc erabili ahal izateko egiten den (char) castinga cposx eta cposy-en esleituz cposx =(char)posx; cposy =(char)posy; //'a' tekla bidaliko zaio robotaren programari Wiimote-ko 'A' botoia sakatu dela jakinarazteko fputc(tekla, portua); //Kurtsorearen uneko x eta y posizioak bidaliko zaizkio robotaren programari RFCOMM0 portutik fputc(cposy, portua); fputc(cposx, portua); break; //B tekla bidaliko zaio robotak frenatzea nahi dugunean case Qt::Key_B : tekla = 'b'; fputc(tekla, portua); break; //Pantailaren posizioa kalibratzen da case Qt::Key_1: pos.setPos(683,384); break; } fclose(portua); }
void Preview::initializeGL() { CommonGraphicsCommands::initializeGlobalGraphics(); GameObjectManager::globalGameObjectManager.initialize(); std::string err; ShaderInfo* shader = GraphicsShaderManager::globalShaderManager.createShaderInfo( FileReader( "assets/shaders/VertexShader.glsl" ).c_str() , FileReader( "assets/shaders/FragmentShader.glsl" ).c_str() , &err ); std::cout << err.c_str() << std::endl; renderable = GraphicsRenderingManager::globalRenderingManager.addRenderable(); renderable->geometryInfo = 0; renderable->shaderInfo = shader; renderable->culling = CT_BACK; renderable->depthTestEnabled = true; renderable->sharedUniforms = &GraphicsSharedUniformManager::globalSharedUniformManager; renderable->initialize( 10 , 1 ); colorTexture = GraphicsTextureManager::globalTextureManager.addTexture( 0 , 0 , 0 , 0 ); renderable->addTexture( colorTexture ); GameObject* previewModel = GameObjectManager::globalGameObjectManager.addGameObject(); previewModel->addComponent( renderable ); animation = new AnimationRenderingInfo; previewModel->addComponent( animation ); Camera* camera = GraphicsCameraManager::globalCameraManager.addCamera(); camera->direction = glm::normalize( glm::vec3( -1 , 0 , -1 ) ); camera->initializeRenderManagers(); camera->nearestObject = 0.01f; camera->addRenderList( &GraphicsRenderingManager::globalRenderingManager ); fpsInput = new FirstPersonCameraInput; fpsInput->moveSensitivity = 1; fpsInput->rotationSensitivity = 0.1f; GameObject* cameraMan = GameObjectManager::globalGameObjectManager.addGameObject(); cameraMan->translate = glm::vec3( 6 , 5 , 15 ); cameraMan->addComponent( camera ); cameraMan->addComponent( fpsInput ); MouseInput::globalMouseInput.updateOldMousePosition = false; setMouseTracking( true ); QCursor c = cursor(); c.setPos( mapToGlobal( QPoint( width() / 2 , height() / 2 ) ) ); c.setShape( Qt::BlankCursor ); setCursor( c ); MouseInput::globalMouseInput.updateMousePosition( glm::vec2( width() / 2 , height() / 2 ) ); timer = new QTimer(); connect( timer , SIGNAL( timeout() ) , this , SLOT( update() ) ); timer->start( 0 ); }
void GameView::mousePressEvent(QMouseEvent*) { if (m_editor->isGameMode()) { setFocus(); setMouseTracking(true); grabMouse(); grabKeyboard(); QCursor c = cursor(); c.setPos(mapToGlobal(QPoint(width() / 2, height() / 2))); c.setShape(Qt::BlankCursor); setCursor(c); m_editor->getEngine().getInputSystem().enable(true); m_isInputHandling = true; } }
//Play botoia sakatzen bada sortzen den ekintza void Mandomugitu::on_hasiButton_clicked() { //RFCOMM0 portua ireki FILE * portua = fopen ("/dev/rfcomm0", "w"); QMessageBox infoBox; //Kurtsorearen posizioa aldatzeko erabiliko den objektua QCursor pos; infoBox.information(this,"Kalibratua","Wii-ko mandoa ondo kalibratua dago, aurrera!"); tekla='h'; hasiBai = true; stopBai = false; //Kurtsorea pantailaren erdian kokatuko da pos.setPos(683,384); //Robotaren programari bidaltzeko zaio h tekla adierazteko robotaren mugimendu funtzionamentua prest dagoela fputc(tekla,portua); fclose(portua); }
void GameView::mouseMoveEvent(QMouseEvent* event) { if (!m_isInputHandling) { return; } int half_width = width() / 2; int half_height = height() / 2; if (event->x() != half_width || event->y() != half_height) { auto& input_system = m_editor->getEngine().getInputSystem(); input_system.injectMouseXMove(event->x() - half_width); input_system.injectMouseYMove(event->y() - half_height); QCursor c = cursor(); c.setPos(mapToGlobal(QPoint(half_width, half_height))); c.setShape(Qt::BlankCursor); setCursor(c); } }
void MouseGotoPixelEditor::moveCursor(int column, int row) { QCursor cursor; cursor.setPos(column, row); }