GameObjects
Began to add GameObjects, starting with the player.
This commit is contained in:
64
Player.cpp
Normal file
64
Player.cpp
Normal file
@@ -0,0 +1,64 @@
|
||||
#include "Player.h"
|
||||
#include "Camera.h"
|
||||
#include <iostream>
|
||||
|
||||
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));
|
||||
}
|
||||
Reference in New Issue
Block a user