#include "focuscontroller.h" #include "camera.h" #include void FocusController::setFocus(glm::vec3* object) { track = object; dist = glm::distance2(*track, camera->getPosition()); } void FocusController::mouseMove(int dx, int dy) { bool needUpdate = false; if(dist < 0) dist = glm::distance2(*track, camera->getPosition()); if(grabbed & 1) { camera->rotate(glm::vec2(dx*0.01f, dy*0.01f)); needUpdate = true; } if(grabbed & 4) { dist += dy*0.02f; needUpdate = true; } if(needUpdate) updateCamera(); } void FocusController::mouseWheelEvent(int scrollCount) { if(dist < 0) dist = glm::distance2(*track, camera->getPosition()); dist += scrollCount/600.0f; updateCamera(); } void FocusController::updateCamera() { glm::vec2 rot = camera->getRotation(); glm::vec3 pos = glm::vec3(std::sin(-rot.x)*std::cos(rot.y), std::sin(rot.y), std::cos(-rot.x)*std::cos(rot.y)); camera->moveTo(*track + dist*pos); }