Cleaned up PlayerSystem. Sets velocity to 0 every frame.
This commit is contained in:
@@ -6,45 +6,16 @@
|
|||||||
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "Core/System.h"
|
#include "Core/System.h"
|
||||||
#include "Core/EventBroker.h"
|
|
||||||
#include "Core/EKeyDown.h"
|
|
||||||
#include "Core/EKeyUp.h"
|
|
||||||
#include "ECreatePlayer.h"
|
|
||||||
|
|
||||||
struct KeyInput
|
|
||||||
{
|
|
||||||
bool Forward = false;
|
|
||||||
bool Left = false;
|
|
||||||
bool Back = false;
|
|
||||||
bool Right = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
class PlayerSystem : public PureSystem
|
class PlayerSystem : public PureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PlayerSystem(EventBroker* eventBroker)
|
PlayerSystem(EventBroker* eventBroker)
|
||||||
: PureSystem(eventBroker, "Player")
|
: PureSystem(eventBroker, "Player")
|
||||||
{
|
{ }
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EKeyDown, &PlayerSystem::OnKeyDown);
|
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EKeyUp, &PlayerSystem::OnKeyUp);
|
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_ECreatePlayer, &PlayerSystem::OnCreatePlayer);
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void UpdateComponent(World* world, ComponentWrapper& player, double dt) override;
|
virtual void UpdateComponent(World* world, ComponentWrapper& player, double dt) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
float m_Speed = 5;
|
float m_Speed = 5;
|
||||||
glm::vec3 m_Direction;
|
|
||||||
KeyInput input;
|
|
||||||
bool ShouldCreatePlayer = false;
|
|
||||||
|
|
||||||
void CreatePlayer(World * world, unsigned int& entityID);
|
|
||||||
EventRelay<PlayerSystem, Events::KeyDown> m_EKeyDown;
|
|
||||||
bool OnKeyDown(const Events::KeyDown &event);
|
|
||||||
EventRelay<PlayerSystem, Events::KeyUp> m_EKeyUp;
|
|
||||||
bool OnKeyUp(const Events::KeyUp &event);
|
|
||||||
EventRelay<PlayerSystem, Events::CreatePlayer> m_ECreatePlayer;
|
|
||||||
bool OnCreatePlayer(const Events::CreatePlayer &event);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
void PlayerSystem::UpdateComponent(World * world, ComponentWrapper & player, double dt)
|
void PlayerSystem::UpdateComponent(World * world, ComponentWrapper & player, double dt)
|
||||||
{
|
{
|
||||||
|
(glm::vec3)player["Velocity"] = glm::vec3(0.f);
|
||||||
if (player["Forward"]) {
|
if (player["Forward"]) {
|
||||||
((glm::vec3&)player["Velocity"]).z = m_Speed * float(dt) * -1;
|
((glm::vec3&)player["Velocity"]).z = m_Speed * float(dt) * -1;
|
||||||
}
|
}
|
||||||
@@ -14,66 +15,7 @@ void PlayerSystem::UpdateComponent(World * world, ComponentWrapper & player, dou
|
|||||||
if (player["Right"]) {
|
if (player["Right"]) {
|
||||||
((glm::vec3&)player["Velocity"]).x = m_Speed * float(dt);
|
((glm::vec3&)player["Velocity"]).x = m_Speed * float(dt);
|
||||||
}
|
}
|
||||||
|
|
||||||
ComponentWrapper& transform = world->GetComponent(player.EntityID, "Transform");
|
ComponentWrapper& transform = world->GetComponent(player.EntityID, "Transform");
|
||||||
(glm::vec3&)transform["Position"] += (glm::vec3)player["Velocity"];
|
(glm::vec3&)transform["Position"] += (glm::vec3)player["Velocity"];
|
||||||
|
|
||||||
//m_EventBroker->Process<PlayerSystem>();
|
|
||||||
|
|
||||||
//// TODO Jag tror inte vi kan göra det vi vill i updaten.
|
|
||||||
//// om man lägger till parametrar och tar bort overriden så blir det kanske inte så kul?
|
|
||||||
//// aja, lycka till!
|
|
||||||
//if (ShouldCreatePlayer) {
|
|
||||||
// int entityID = world->CreateEntity();
|
|
||||||
// ComponentWrapper transform = world->AttachComponent(entityID, "Transform");
|
|
||||||
// transform["Position"] = glm::vec3(-1.5f, 0.f, 0.f);
|
|
||||||
// ComponentWrapper model = world->AttachComponent(entityID, "Model");
|
|
||||||
// model["Resource"] = "Models/Core/UnitSphere.obj";//modelPath; // You fix this :)
|
|
||||||
// model["Color"] = glm::vec4(rand()%255 / 255.f, rand()%255 / 255.f, rand() %255 / 255.f, 1.f);
|
|
||||||
// ShouldCreatePlayer = false;
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerSystem::CreatePlayer(World * world, unsigned int& entityID)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool PlayerSystem::OnKeyDown(const Events::KeyDown & event)
|
|
||||||
{
|
|
||||||
if (event.KeyCode == GLFW_KEY_W) {
|
|
||||||
input.Forward = true;
|
|
||||||
}
|
|
||||||
if (event.KeyCode == GLFW_KEY_A) {
|
|
||||||
input.Left = true;
|
|
||||||
}
|
|
||||||
if (event.KeyCode == GLFW_KEY_S) {
|
|
||||||
input.Back = true;
|
|
||||||
}
|
|
||||||
if (event.KeyCode == GLFW_KEY_D) {
|
|
||||||
input.Right = true;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool PlayerSystem::OnKeyUp(const Events::KeyUp & event)
|
|
||||||
{
|
|
||||||
if (event.KeyCode == GLFW_KEY_W) {
|
|
||||||
input.Forward = false;
|
|
||||||
}
|
|
||||||
if (event.KeyCode == GLFW_KEY_A) {
|
|
||||||
input.Left = false;
|
|
||||||
}
|
|
||||||
if (event.KeyCode == GLFW_KEY_S) {
|
|
||||||
input.Back = false;
|
|
||||||
}
|
|
||||||
if (event.KeyCode == GLFW_KEY_D) {
|
|
||||||
input.Right = false;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool PlayerSystem::OnCreatePlayer(const Events::CreatePlayer & event)
|
|
||||||
{
|
|
||||||
ShouldCreatePlayer = true;
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user