[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