diff options
author | Mitchell Stokes <mogurijin@gmail.com> | 2012-12-29 14:22:19 +0400 |
---|---|---|
committer | Mitchell Stokes <mogurijin@gmail.com> | 2012-12-29 14:22:19 +0400 |
commit | 18f134304c0c6181668a0a8c22289fcaeb472432 (patch) | |
tree | 25cba63a2d5b7ccad6e0a8be90c580cf987ed879 /source/gameengine/Physics | |
parent | 7d6ea8cddf326332679255c4b3dfe89cd4617cc2 (diff) |
BGE: Adding a jumpCount to KX_CharacterWrapper. This can be used to have different logic for a single jump versus a double jump. For example, a different animation for the second jump.
Diffstat (limited to 'source/gameengine/Physics')
4 files changed, 14 insertions, 0 deletions
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index 66c6d1aa251..cf96f22a345 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -92,6 +92,11 @@ void BlenderBulletCharacterController::setMaxJumps(int maxJumps) m_maxJumps = maxJumps; } +int BlenderBulletCharacterController::getJumpCount() const +{ + return m_jumps; +} + bool BlenderBulletCharacterController::canJump() const { return onGround() || m_jumps < m_maxJumps; diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.h b/source/gameengine/Physics/Bullet/CcdPhysicsController.h index 91b2e558521..b151c2f6b59 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.h +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.h @@ -412,6 +412,8 @@ public: void setMaxJumps(int maxJumps); + int getJumpCount() const; + virtual bool canJump() const; virtual void jump(); diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp index f1224babcf7..cadba97023e 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp @@ -305,6 +305,11 @@ public: { m_controller->setMaxJumps(maxJumps); } + + virtual int GetJumpCount() + { + return m_controller->getJumpCount(); + } }; class CcdOverlapFilterCallBack : public btOverlapFilterCallback diff --git a/source/gameengine/Physics/common/PHY_ICharacter.h b/source/gameengine/Physics/common/PHY_ICharacter.h index 92c00949c4d..63f6c0bd18a 100644 --- a/source/gameengine/Physics/common/PHY_ICharacter.h +++ b/source/gameengine/Physics/common/PHY_ICharacter.h @@ -25,6 +25,8 @@ public: virtual int GetMaxJumps()= 0; virtual void SetMaxJumps(int maxJumps)= 0; + virtual int GetJumpCount()= 0; + #ifdef WITH_CXX_GUARDEDALLOC MEM_CXX_CLASS_ALLOC_FUNCS("GE:PHY_ICharacter") #endif |