[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53396] trunk/blender: BGE: Adding a jumpCount to KX_CharacterWrapper.
Mitchell Stokes
mogurijin at gmail.com
Sat Dec 29 11:22:23 CET 2012
Revision: 53396
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53396
Author: moguri
Date: 2012-12-29 10:22:19 +0000 (Sat, 29 Dec 2012)
Log Message:
-----------
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.
Modified Paths:
--------------
trunk/blender/doc/python_api/rst/bge.types.rst
trunk/blender/source/gameengine/Ketsji/KX_CharacterWrapper.cpp
trunk/blender/source/gameengine/Ketsji/KX_CharacterWrapper.h
trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.h
trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
trunk/blender/source/gameengine/Physics/common/PHY_ICharacter.h
Modified: trunk/blender/doc/python_api/rst/bge.types.rst
===================================================================
--- trunk/blender/doc/python_api/rst/bge.types.rst 2012-12-29 09:44:19 UTC (rev 53395)
+++ trunk/blender/doc/python_api/rst/bge.types.rst 2012-12-29 10:22:19 UTC (rev 53396)
@@ -3755,6 +3755,12 @@
:type: int
+ .. attribute:: jumpCount
+
+ The current jump count. 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.
+
+ :type: int
+
.. method:: jump()
The character jumps based on it's jump speed.
Modified: trunk/blender/source/gameengine/Ketsji/KX_CharacterWrapper.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_CharacterWrapper.cpp 2012-12-29 09:44:19 UTC (rev 53395)
+++ trunk/blender/source/gameengine/Ketsji/KX_CharacterWrapper.cpp 2012-12-29 10:22:19 UTC (rev 53396)
@@ -46,6 +46,7 @@
KX_PYATTRIBUTE_RO_FUNCTION("onGround", KX_CharacterWrapper, pyattr_get_onground),
KX_PYATTRIBUTE_RW_FUNCTION("gravity", KX_CharacterWrapper, pyattr_get_gravity, pyattr_set_gravity),
KX_PYATTRIBUTE_RW_FUNCTION("maxJumps", KX_CharacterWrapper, pyattr_get_max_jumps, pyattr_set_max_jumps),
+ KX_PYATTRIBUTE_RO_FUNCTION("jumpCount", KX_CharacterWrapper, pyattr_get_jump_count),
{ NULL } //Sentinel
};
@@ -99,6 +100,14 @@
self->m_character->SetMaxJumps((int)param);
return PY_SET_ATTR_SUCCESS;
}
+
+PyObject *KX_CharacterWrapper::pyattr_get_jump_count(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_CharacterWrapper* self = static_cast<KX_CharacterWrapper*>(self_v);
+
+ return PyLong_FromLong(self->m_character->GetJumpCount());
+}
+
PyMethodDef KX_CharacterWrapper::Methods[] = {
KX_PYMETHODTABLE_NOARGS(KX_CharacterWrapper, jump),
{NULL,NULL} //Sentinel
Modified: trunk/blender/source/gameengine/Ketsji/KX_CharacterWrapper.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_CharacterWrapper.h 2012-12-29 09:44:19 UTC (rev 53395)
+++ trunk/blender/source/gameengine/Ketsji/KX_CharacterWrapper.h 2012-12-29 10:22:19 UTC (rev 53396)
@@ -28,6 +28,7 @@
static int pyattr_set_gravity(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
static PyObject* pyattr_get_max_jumps(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static int pyattr_set_max_jumps(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_jump_count(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
#endif // WITH_PYTHON
private:
Modified: trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
===================================================================
--- trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp 2012-12-29 09:44:19 UTC (rev 53395)
+++ trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp 2012-12-29 10:22:19 UTC (rev 53396)
@@ -92,6 +92,11 @@
m_maxJumps = maxJumps;
}
+int BlenderBulletCharacterController::getJumpCount() const
+{
+ return m_jumps;
+}
+
bool BlenderBulletCharacterController::canJump() const
{
return onGround() || m_jumps < m_maxJumps;
Modified: trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.h
===================================================================
--- trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.h 2012-12-29 09:44:19 UTC (rev 53395)
+++ trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.h 2012-12-29 10:22:19 UTC (rev 53396)
@@ -412,6 +412,8 @@
void setMaxJumps(int maxJumps);
+ int getJumpCount() const;
+
virtual bool canJump() const;
virtual void jump();
Modified: trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
===================================================================
--- trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp 2012-12-29 09:44:19 UTC (rev 53395)
+++ trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp 2012-12-29 10:22:19 UTC (rev 53396)
@@ -305,6 +305,11 @@
{
m_controller->setMaxJumps(maxJumps);
}
+
+ virtual int GetJumpCount()
+ {
+ return m_controller->getJumpCount();
+ }
};
class CcdOverlapFilterCallBack : public btOverlapFilterCallback
Modified: trunk/blender/source/gameengine/Physics/common/PHY_ICharacter.h
===================================================================
--- trunk/blender/source/gameengine/Physics/common/PHY_ICharacter.h 2012-12-29 09:44:19 UTC (rev 53395)
+++ trunk/blender/source/gameengine/Physics/common/PHY_ICharacter.h 2012-12-29 10:22:19 UTC (rev 53396)
@@ -25,6 +25,8 @@
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
More information about the Bf-blender-cvs
mailing list