Я адаптирую некоторый скелетный код, чтобы узнать, как работает OpenGL, и в SphericalCameraManipulator.cpp
, который позволяет мне поворачивать и наклонять камеру, удерживая правую кнопку мыши:
void SphericalCameraManipulator::handleMouseMotion(int x, int y)
{
//Motion
float xMotion = (float)x - previousMousePosition[0];
float yMotion = (float)y - previousMousePosition[1];
if(reset)
{
xMotion = yMotion = 0.0;
reset = false;
}
this->previousMousePosition[0] = (float)x;
this->previousMousePosition[1] = (float)y;
//Right Button Action
if(this->currentButton == GLUT_RIGHT_BUTTON && this->currentState == GLUT_DOWN)
{
this->pan -= xMotion*this->panTiltMouseStep ;
this->tilt += yMotion*this->panTiltMouseStep ;
}
//Enforce Ranges
this->enforceRanges();
}
Я удалил левуюдействие мыши, поскольку я не хочу, чтобы она управляла камерой, и теперь она выполняет команду в основном теле кода.
//Left Button Action
if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
{
... //game action
}
Моя проблема в том, что когда я щелкаю левой кнопкой мыши, нажатие правой мыши отменяется, и я должен отпустить и нажать правую мышь, чтобы продолжить управление камерой.
Есть ли способ предотвратить это?Это прерывает ход игры.Я использую GLUT