CSC8502_Advanced_Graphics_For_Games / nclgl / Camera.cpp
Camera.cpp
Raw
#include "Camera.h"
#include "Window.h"
#include <algorithm>

void Camera::UpdateCamera(float dt)
{
	pitch -= (Window::GetMouse()->GetRelativePosition().y);
	yaw -= (Window::GetMouse()->GetRelativePosition().x) ;

	pitch = std::min(pitch, 90.f);
	pitch = std::max(pitch, -90.f);

	if (yaw < 0) {
		yaw += 360.0f;
	}
	if (yaw > 360.0f) {
		yaw -= 360.0f;
	}

	Matrix4 rotation = Matrix4::Rotation(yaw, Vector3(0, 1, 0));

	Vector3 forward = rotation * Vector3(0, 0, -1);
	Vector3 right = rotation * Vector3(1, 0, 0);



	//if (Window::GetKeyboard()->KeyDown(KEYBOARD_W)  && (Window::GetKeyboard()->KeyDown(KEYBOARD_E))) {
	//	position += forward * (speed * 10000);
	//}

	if (Window::GetKeyboard() -> KeyDown(KEYBOARD_W)) {
		 position += forward * speed;	
	}
	 if (Window::GetKeyboard() -> KeyDown(KEYBOARD_S)) {
		 position -= forward * speed;
	}
	 if (Window::GetKeyboard() -> KeyDown(KEYBOARD_A)) {
		 position -= right * speed;
	}
	 if (Window::GetKeyboard() -> KeyDown(KEYBOARD_D)) {
		 position += right * speed;	
	}

	 if (Window::GetKeyboard() -> KeyDown(KEYBOARD_SHIFT)) {
		  position.y += speed;
		 
	 }
	 if (Window::GetKeyboard()->KeyDown(KEYBOARD_SPACE)) {
		 position.y -= speed;
	 }

	 if (Window::GetKeyboard()->KeyDown(KEYBOARD_SPACE)) {
		 position.y -= speed;
	 }

	 if (Window::GetKeyboard()->KeyDown(KEYBOARD_PLUS)) {
		speed += 10;
	 }

	 if (Window::GetKeyboard()->KeyDown(KEYBOARD_MINUS)) {
		speed -= 10;
	 }
	 

}

Matrix4 Camera::BuildViewMatrix()
{
	return Matrix4::Rotation(-pitch, Vector3(1, 0, 0)) *
		Matrix4::Rotation(-yaw, Vector3(0, 1, 0)) *
		Matrix4::Translation(-position);
}