Merge pull request #62 from teamfisk/DoubleJump

You can now DoubleJump!
This commit is contained in:
2016-02-02 15:31:03 +01:00
2 changed files with 17 additions and 6 deletions
@@ -15,7 +15,11 @@ public:
virtual const glm::vec3 Rotation() const { return m_Rotation; } virtual const glm::vec3 Rotation() const { return m_Rotation; }
virtual bool Jumping() const { return m_Jumping; } virtual bool Jumping() const { return m_Jumping; }
virtual bool Crouching() const { return m_Crouching; } virtual bool Crouching() const { return m_Crouching; }
virtual bool DoubleJumping() const { return m_DoubleJumping; }
virtual void SetDoubleJumping(bool isDoubleJumping) {
m_DoubleJumping = isDoubleJumping;
}
void LockMouse(); void LockMouse();
void UnlockMouse(); void UnlockMouse();
virtual bool OnCommand(const Events::InputCommand& e) override; virtual bool OnCommand(const Events::InputCommand& e) override;
@@ -27,8 +31,9 @@ protected:
glm::vec3 m_Rotation; glm::vec3 m_Rotation;
glm::vec3 m_Movement; glm::vec3 m_Movement;
bool m_Jumping = false; bool m_Jumping = false;
bool m_DoubleJumping = false;
bool m_Crouching = false; bool m_Crouching = false;
EventRelay<EventContext, Events::LockMouse> m_ELockMouse; EventRelay<EventContext, Events::LockMouse> m_ELockMouse;
bool OnLockMouse(const Events::LockMouse& e); bool OnLockMouse(const Events::LockMouse& e);
EventRelay<EventContext, Events::UnlockMouse> m_EUnlockMouse; EventRelay<EventContext, Events::UnlockMouse> m_EUnlockMouse;
@@ -36,7 +41,7 @@ protected:
}; };
template <typename EventContext> template <typename EventContext>
FirstPersonInputController<EventContext>::FirstPersonInputController(EventBroker* eventBroker, int playerID) FirstPersonInputController<EventContext>::FirstPersonInputController(EventBroker* eventBroker, int playerID)
: InputController(eventBroker) : InputController(eventBroker)
, m_PlayerID(playerID) , m_PlayerID(playerID)
{ {
@@ -113,14 +118,14 @@ bool FirstPersonInputController<EventContext>::OnCommand(const Events::InputComm
template <typename EventContext> template <typename EventContext>
bool FirstPersonInputController<EventContext>::OnUnlockMouse(const Events::UnlockMouse& e) bool FirstPersonInputController<EventContext>::OnUnlockMouse(const Events::UnlockMouse& e)
{ {
m_MouseLocked = false; m_MouseLocked = false;
return true; return true;
} }
template <typename EventContext> template <typename EventContext>
bool FirstPersonInputController<EventContext>::OnLockMouse(const Events::LockMouse& e) bool FirstPersonInputController<EventContext>::OnLockMouse(const Events::LockMouse& e)
{ {
m_MouseLocked = true; m_MouseLocked = true;
return true; return true;
} }
+7 -1
View File
@@ -76,7 +76,13 @@ void PlayerMovementSystem::Update(double dt)
ImGui::Text("velocity: (%f, %f, %f) |%f|", velocity.x, velocity.y, velocity.z, glm::length(velocity)); ImGui::Text("velocity: (%f, %f, %f) |%f|", velocity.x, velocity.y, velocity.z, glm::length(velocity));
} }
if (controller->Jumping() && !controller->Crouching() && velocity.y == 0.f) { if (controller->Jumping() && !controller->Crouching() && (velocity.y == 0.f || !controller->DoubleJumping())) {
if (velocity.y == 0.f) {
controller->SetDoubleJumping(false);
}
else {
controller->SetDoubleJumping(true);
}
velocity.y += 4.f; velocity.y += 4.f;
} }