Changes to player, and mesh renderer INCOMPLETE
This commit is contained in:
84
input.txt
Normal file
84
input.txt
Normal file
@@ -0,0 +1,84 @@
|
||||
#pragma once
|
||||
|
||||
#include <IInputComponent.h>
|
||||
#include <iostream>
|
||||
#include <InputEnums.h>
|
||||
|
||||
class Player;
|
||||
|
||||
|
||||
class deadPlayerInputComponent : public IInputComponent
|
||||
{
|
||||
Player& PlayerCharacter;
|
||||
float lastX = 1600 / 2.0f;
|
||||
float lastY = 900 / 2.0f;
|
||||
bool bFirstMouse = true;
|
||||
|
||||
public:
|
||||
deadPlayerInputComponent(GLFWwindow* Window, Player& PlayerCharacter)
|
||||
: IInputComponent(Window),
|
||||
PlayerCharacter(PlayerCharacter)
|
||||
{
|
||||
glfwSetWindowUserPointer(Window, this);
|
||||
glfwSetCursorPosCallback(Window, ProcessMouse);
|
||||
}
|
||||
|
||||
void Update(float DeltaTime) override
|
||||
{
|
||||
ProcessKeyboard(DeltaTime);
|
||||
}
|
||||
|
||||
void ProcessKeyboard(float DeltaTime)
|
||||
{
|
||||
if (glfwGetKey(Window, GLFW_KEY_ESCAPE) == GLFW_PRESS) {
|
||||
//glfwSetWindowShouldClose(Window, true);
|
||||
glfwSetInputMode(Window, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
|
||||
}
|
||||
;
|
||||
if (glfwGetKey(Window, GLFW_KEY_W) == GLFW_PRESS)
|
||||
PlayerCharacter.ProcessKeyboard(FORWARD, DeltaTime);
|
||||
if (glfwGetKey(Window, GLFW_KEY_S) == GLFW_PRESS)
|
||||
PlayerCharacter.ProcessKeyboard(BACKWARD, DeltaTime);
|
||||
if (glfwGetKey(Window, GLFW_KEY_A) == GLFW_PRESS)
|
||||
PlayerCharacter.ProcessKeyboard(LEFT, DeltaTime);
|
||||
if (glfwGetKey(Window, GLFW_KEY_D) == GLFW_PRESS)
|
||||
PlayerCharacter.ProcessKeyboard(RIGHT, DeltaTime);
|
||||
}
|
||||
|
||||
static void ProcessMouse(GLFWwindow* Window, double xposIn, double yposIn)
|
||||
{
|
||||
deadPlayerInputComponent* instance = static_cast<deadPlayerInputComponent*>(glfwGetWindowUserPointer(Window));
|
||||
if (!instance)
|
||||
{
|
||||
std::cout << "Player Input Component not found" << std::endl;
|
||||
return;
|
||||
}
|
||||
if (glfwGetMouseButton(Window, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS)
|
||||
{
|
||||
glfwSetInputMode(Window, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
|
||||
instance->bFirstMouse = true;
|
||||
return;
|
||||
}
|
||||
|
||||
glfwSetInputMode(Window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
|
||||
//std::cout << "Mouse callback" << std::endl;
|
||||
float xpos = static_cast<float>(xposIn);
|
||||
float ypos = static_cast<float>(yposIn);
|
||||
|
||||
if (instance->bFirstMouse)
|
||||
{
|
||||
instance->lastX = xpos;
|
||||
instance->lastY = ypos;
|
||||
instance->bFirstMouse = false;
|
||||
}
|
||||
|
||||
float xoffset = xpos - instance->lastX;
|
||||
float yoffset = instance->lastY - ypos;
|
||||
|
||||
instance->lastX = xpos;
|
||||
instance->lastY = ypos;
|
||||
|
||||
instance->PlayerCharacter.ProcessMouseMovement(xoffset, yoffset);
|
||||
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user