Fixed movement on a "player" cube. Very simple system atm

This commit is contained in:
stiffly
2015-12-11 15:00:57 +01:00
parent c2435fda2d
commit 4da33ff4ec
2 changed files with 44 additions and 17 deletions
+10 -1
View File
@@ -10,6 +10,14 @@
#include "Core/EKeyDown.h"
#include "Core/EKeyUp.h"
struct KeyInput
{
bool Forward = false;
bool Left = false;
bool Back = false;
bool Right = false;
};
class PlayerSystem : public System
{
public:
@@ -21,8 +29,9 @@ public:
virtual void Update(World* world, ComponentWrapper& player, double dt) override;
private:
float m_Speed;
float m_Speed = 5;
glm::vec3 m_Direction;
KeyInput input;
EventRelay<PlayerSystem, Events::KeyDown> m_EKeyDown;
bool OnKeyDown(const Events::KeyDown &event);
+34 -16
View File
@@ -8,6 +8,24 @@ void PlayerSystem::Initialize()
void PlayerSystem::Update(World * world, ComponentWrapper & player, double dt)
{
if (input.Forward) {
m_Direction.z = -1;
}
else if (input.Back) {
m_Direction.z = 1;
}
else {
m_Direction.z = 0;
}
if (input.Left) {
m_Direction.x = -1;
}
else if (input.Right) {
m_Direction.x = 1;
}
else {
m_Direction.x = 0;
}
m_EventBroker->Process<PlayerSystem>();
ComponentWrapper& transform = world->GetComponent(player.EntityID, "Transform");
(glm::vec3&)player["Velocity"] = m_Speed * float(dt) * m_Direction;
@@ -16,34 +34,34 @@ void PlayerSystem::Update(World * world, ComponentWrapper & player, double dt)
bool PlayerSystem::OnKeyDown(const Events::KeyDown & event)
{
if (event.KeyCode == GLFW_KEY_UP) {
m_Direction.z == -1;
if (event.KeyCode == GLFW_KEY_W) {
input.Forward = true;
}
if (event.KeyCode == GLFW_KEY_LEFT) {
m_Direction.x == -1;
if (event.KeyCode == GLFW_KEY_A) {
input.Left = true;
}
if (event.KeyCode == GLFW_KEY_DOWN) {
m_Direction.z == 1;
if (event.KeyCode == GLFW_KEY_S) {
input.Back = true;
}
if (event.KeyCode == GLFW_KEY_RIGHT) {
m_Direction.x == 1;
if (event.KeyCode == GLFW_KEY_D) {
input.Right = true;
}
return true;
}
bool PlayerSystem::OnKeyUp(const Events::KeyUp & event)
{
if (event.KeyCode == GLFW_KEY_UP) {
m_Direction.z == 0;
if (event.KeyCode == GLFW_KEY_W) {
input.Forward = false;
}
if (event.KeyCode == GLFW_KEY_LEFT) {
m_Direction.x == 0;
if (event.KeyCode == GLFW_KEY_A) {
input.Left = false;
}
if (event.KeyCode == GLFW_KEY_DOWN) {
m_Direction.z == 0;
if (event.KeyCode == GLFW_KEY_S) {
input.Back = false;
}
if (event.KeyCode == GLFW_KEY_RIGHT) {
m_Direction.x == 0;
if (event.KeyCode == GLFW_KEY_D) {
input.Right = false;
}
return false;
}