void Camera::Update() { if(Input::keys[Input::KEY_W]) { cameraPosition -= moveSpeed * forwardVector; UpdateCameraVectors(); } if(Input::keys[Input::KEY_S]) { cameraPosition += moveSpeed * forwardVector; UpdateCameraVectors(); } if(Input::keys[Input::KEY_A]) { cameraRotation.y += rotationSpeed; UpdateCameraVectors(); } if(Input::keys[Input::KEY_D]) { cameraRotation.y -= rotationSpeed; UpdateCameraVectors(); } if(Input::keys[Input::KEY_E]) { cameraPosition.y += .1f; } if(Input::keys[Input::KEY_C] && cameraPosition.y > 1.0) { cameraPosition.y -= .1f; } viewMatrix = glm::lookAt(cameraPosition, cameraPosition-cameraForward, worldUp); }
Camera::Camera(float fov, int width, int height, float zNear, float zFar) { projectionMatrix = glm::perspective(fov, (float)width/(float)height, zNear, zFar); cameraRotation = glm::vec3(0.0); cameraPosition = glm::vec3(0.0, 1.0, 3.0); worldUp = glm::vec3(0.0, 1.0, 0.0); UpdateCameraVectors(); viewMatrix = glm::lookAt(cameraPosition, cameraPosition-cameraForward, worldUp); moveSpeed = .005f; rotationSpeed = 0.05f; }
void Camera::MoveCameraPosition(Camera_Movement direction, GLfloat dt) { GLfloat velocity = this->cameraProperties.translationSpeed * dt; if (direction == FORWARD) this->cameraProperties.position += this->cameraProperties.front * velocity; if (direction == BACKWARD) this->cameraProperties.position -= this->cameraProperties.front * velocity; if (direction == LEFT) this->cameraProperties.position -= this->cameraProperties.right * velocity; if (direction == RIGHT) this->cameraProperties.position += this->cameraProperties.right * velocity; UpdateCameraVectors(); }
void Camera::ChangeViewAngle(GLfloat xOffset, GLfloat yOffset, GLboolean constrainPitch) { xOffset *= this->cameraProperties.angleSensitivity; yOffset *= this->cameraProperties.angleSensitivity; this->cameraProperties.yaw += xOffset; this->cameraProperties.pitch += yOffset; if (constrainPitch) { if (this->cameraProperties.pitch > 89.0f) { this->cameraProperties.pitch = 89.0f; } if (this->cameraProperties.pitch < -89.0f) { this->cameraProperties.pitch = -89.0f; } } UpdateCameraVectors(); }
Camera::Camera() { UpdateCameraVectors(); }