#include "Player.h" #include "Camera.h" #include Player::Player(glm::vec3 Position, glm::vec3 Rotation) : GameObject(Position, Rotation, glm::vec3(1.0f, 1.0f, 1.0f)), PlayerCamera(new Camera(glm::vec3(0.0f, 1.0f, 0.0f))) { PlayerCamera->Position = Position + PlayerCamera->CameraOffset; PlayerCamera->WorldUp = this->WorldUp; std::cout << "{" << Position.x << ", " << Position.y << ", " << Position.z << "}" << std::endl; std::cout << "{" << PlayerCamera->Position.x << ", " << PlayerCamera->Position.y << ", " << PlayerCamera->Position.z << "}" << std::endl; } void Player::Update() { } void Player::ProcessKeyboard(EInputDirection Direction, float Delta) { float Velocity = bIsRunning ? RunSpeed : WalkSpeed; Velocity = Velocity * Delta; if (Direction == FORWARD) Position += Front * Velocity; if (Direction == BACKWARD) Position -= Front * Velocity; if (Direction == LEFT) Position -= Right * Velocity; if (Direction == RIGHT) Position += Right * Velocity; PlayerCamera->Position = Position + PlayerCamera->CameraOffset; PlayerCamera->WorldUp = this->WorldUp; } void Player::ProcessMouseMovement(float XOffset, float YOffset, GLboolean bConstrainPitch) { XOffset *= MOUSE_SENSITIVITY; YOffset *= MOUSE_SENSITIVITY; Yaw += XOffset; PlayerCamera->Yaw = Yaw; PlayerCamera->ProcessMouseMovement(XOffset, YOffset); UpdatePlayerVectors(); } glm::mat4 Player::GetViewMatrix() const { return PlayerCamera->GetViewMatrix(); } void Player::UpdatePlayerVectors() { glm::vec3 UpdatedFront; UpdatedFront.x = cos(glm::radians(Yaw)) * cos(0); UpdatedFront.y = sin(0); UpdatedFront.z = sin(glm::radians(Yaw)) * cos(0); Front = glm::normalize(UpdatedFront); Right = glm::normalize(glm::cross(Front, WorldUp)); Up = glm::normalize(glm::cross(Right, Front)); }