void Camera::update(float elapsedTime,const Vector2f& mousePosition,bool buttonPressed) { /* if ( !gEngine->isConsoleActive() ) { */ if( GetAsyncKeyState('W') & 0x8000 ) { move(10.0f*elapsedTime); } if( GetAsyncKeyState('S') & 0x8000 ) { move(-10.0f*elapsedTime); } if( GetAsyncKeyState('A') & 0x8000 ) { strafe(-10.0f*elapsedTime); } if( GetAsyncKeyState('D') & 0x8000 ) { strafe(10.0f*elapsedTime); } if ( buttonPressed ) { // Make each pixel correspond to a quarter of a degree. float dx = DEGTORAD(0.25f*(mousePosition.x - m_LastMousePosition.x)); float dy = DEGTORAD(0.25f*(mousePosition.y - m_LastMousePosition.y)); setPitch(dy); setYAngle(dx); } m_LastMousePosition.x = mousePosition.x; m_LastMousePosition.y = mousePosition.y; //} }
/* Update */ void MediKitObject::update() { setYAngle(getYAngle() + INCREMENT_Y_ANGLE); if (!yPositionUpdated) { yPositionUpdated = true; setYPosition(getYPosition() + 1.0f); } }
void mouseMove(SDL_Event event,Data*data){ if(event.motion.state & SDL_BUTTON_LMASK){ float sensitivity = 0.01; auto orbitCamera = std::dynamic_pointer_cast<OrbitCamera>(data->cameraTransform); if(orbitCamera){ orbitCamera->setXAngle(orbitCamera->getXAngle() + event.motion.yrel*sensitivity); orbitCamera->setYAngle(orbitCamera->getYAngle() + event.motion.xrel*sensitivity); } } if(event.motion.state & SDL_BUTTON_RMASK){ float step = 0.01; auto orbitCamera = std::dynamic_pointer_cast<OrbitCamera>(data->cameraTransform); if(orbitCamera){ orbitCamera->setDistance(orbitCamera->getDistance() + event.motion.yrel*step); } } if(event.motion.state & SDL_BUTTON_MMASK){ auto orbitCamera = std::dynamic_pointer_cast<OrbitCamera>(data->cameraTransform); orbitCamera->addXPosition(+orbitCamera->getDistance()*event.motion.xrel/data->window.width*2.); orbitCamera->addYPosition(-orbitCamera->getDistance()*event.motion.yrel/data->window.width*2.); } }
void mouseMove(SDL_Event event,Data*data){ bool recompute = false; if(event.motion.state & SDL_BUTTON_LMASK){ float sensitivity = 0.01; auto orbitCamera = std::dynamic_pointer_cast<OrbitCamera>(data->cameraTransform); if(orbitCamera){ orbitCamera->setXAngle(orbitCamera->getXAngle() + event.motion.yrel*sensitivity); orbitCamera->setYAngle(orbitCamera->getYAngle() + event.motion.xrel*sensitivity); recompute = true; } } if(event.motion.state & SDL_BUTTON_RMASK){ float step = 0.1; auto orbitCamera = std::dynamic_pointer_cast<OrbitCamera>(data->cameraTransform); if(orbitCamera){ orbitCamera->setDistance(orbitCamera->getDistance() + event.motion.yrel*step); recompute = true; } recompute = true; } if(recompute) data->mvp = data->cameraProjection->getProjection()*data->cameraTransform->getView(); }
MediKitObject::MediKitObject(void) : ItemObject() { type = MEDIKIT; setYAngle(0.0f); yPositionUpdated = false; }