[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52059] trunk/blender: BGE: Committing patch [#32697] "New BGE gravity API" by HG1.

Mitchell Stokes mogurijin at gmail.com
Sat Nov 10 04:11:23 CET 2012


Revision: 52059
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52059
Author:   moguri
Date:     2012-11-10 03:11:18 +0000 (Sat, 10 Nov 2012)
Log Message:
-----------
BGE: Committing patch [#32697] "New BGE gravity API" by HG1.

This patch adds a gravity attribute to KX_Scene.

Modified Paths:
--------------
    trunk/blender/doc/python_api/rst/bge.types.rst
    trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp
    trunk/blender/source/gameengine/Ketsji/KX_Scene.h
    trunk/blender/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp
    trunk/blender/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
    trunk/blender/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h

Modified: trunk/blender/doc/python_api/rst/bge.types.rst
===================================================================
--- trunk/blender/doc/python_api/rst/bge.types.rst	2012-11-10 03:05:08 UTC (rev 52058)
+++ trunk/blender/doc/python_api/rst/bge.types.rst	2012-11-10 03:11:18 UTC (rev 52059)
@@ -3113,6 +3113,12 @@
 
       :type: list
 
+   .. attribute:: gravity
+
+      The scene gravity using the world x, y and z axis.
+
+      :type: list [fx, fy, fz]
+
    .. method:: addObject(object, other, time=0)
 
       Adds an object to the scene like the Add Object Actuator would.

Modified: trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp	2012-11-10 03:05:08 UTC (rev 52058)
+++ trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp	2012-11-10 03:11:18 UTC (rev 52059)
@@ -55,7 +55,7 @@
 #include "SCA_BasicEventManager.h"
 #include "KX_Camera.h"
 #include "SCA_JoystickManager.h"
-
+#include "KX_PyMath.h"
 #include "RAS_MeshObject.h"
 
 #include "RAS_IRasterizer.h"
@@ -1706,6 +1706,17 @@
 	GetPhysicsEnvironment()->setGravity(gravity[0],gravity[1],gravity[2]);
 }
 
+MT_Vector3 KX_Scene::GetGravity()
+{
+	PHY__Vector3 gravity;
+	MT_Vector3 vec;
+
+	GetPhysicsEnvironment()->getGravity(gravity);
+	vec = gravity.m_vec;
+
+	return vec;
+}
+
 void KX_Scene::SetSceneConverter(class KX_BlenderSceneConverter* sceneConverter)
 {
 	m_sceneConverter = sceneConverter;
@@ -2270,6 +2281,25 @@
 	return PY_SET_ATTR_SUCCESS;
 }
 
+PyObject *KX_Scene::pyattr_get_gravity(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+	KX_Scene* self = static_cast<KX_Scene*>(self_v);
+
+	return PyObjectFrom(self->GetGravity());
+}
+
+int KX_Scene::pyattr_set_gravity(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+	KX_Scene* self = static_cast<KX_Scene*>(self_v);
+
+	MT_Vector3 vec;
+	if (!PyVecTo(value, vec))
+		return PY_SET_ATTR_FAIL;
+
+	self->SetGravity(vec);
+	return PY_SET_ATTR_SUCCESS;
+}
+
 PyAttributeDef KX_Scene::Attributes[] = {
 	KX_PYATTRIBUTE_RO_FUNCTION("name",				KX_Scene, pyattr_get_name),
 	KX_PYATTRIBUTE_RO_FUNCTION("objects",			KX_Scene, pyattr_get_objects),
@@ -2280,6 +2310,7 @@
 	KX_PYATTRIBUTE_RW_FUNCTION("active_camera",		KX_Scene, pyattr_get_active_camera, pyattr_set_active_camera),
 	KX_PYATTRIBUTE_RW_FUNCTION("pre_draw",			KX_Scene, pyattr_get_drawing_callback_pre, pyattr_set_drawing_callback_pre),
 	KX_PYATTRIBUTE_RW_FUNCTION("post_draw",			KX_Scene, pyattr_get_drawing_callback_post, pyattr_set_drawing_callback_post),
+	KX_PYATTRIBUTE_RW_FUNCTION("gravity",			KX_Scene, pyattr_get_gravity, pyattr_set_gravity),
 	KX_PYATTRIBUTE_BOOL_RO("suspended",				KX_Scene, m_suspend),
 	KX_PYATTRIBUTE_BOOL_RO("activity_culling",		KX_Scene, m_activity_culling),
 	KX_PYATTRIBUTE_FLOAT_RW("activity_culling_radius", 0.5f, FLT_MAX, KX_Scene, m_activity_box_radius),

Modified: trunk/blender/source/gameengine/Ketsji/KX_Scene.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_Scene.h	2012-11-10 03:05:08 UTC (rev 52058)
+++ trunk/blender/source/gameengine/Ketsji/KX_Scene.h	2012-11-10 03:11:18 UTC (rev 52059)
@@ -573,6 +573,7 @@
 	void SetPhysicsEnvironment(class PHY_IPhysicsEnvironment*	physEnv);
 
 	void	SetGravity(const MT_Vector3& gravity);
+	MT_Vector3 GetGravity();
 
 	short GetAnimationFPS();
 	
@@ -616,6 +617,8 @@
 	static int			pyattr_set_drawing_callback_pre(void *selv_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
 	static PyObject*	pyattr_get_drawing_callback_post(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
 	static int			pyattr_set_drawing_callback_post(void *selv_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+	static PyObject*	pyattr_get_gravity(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+	static int			pyattr_set_gravity(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
 
 	virtual PyObject *py_repr(void) { return PyUnicode_From_STR_String(GetName()); }
 	

Modified: trunk/blender/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp
===================================================================
--- trunk/blender/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp	2012-11-10 03:05:08 UTC (rev 52058)
+++ trunk/blender/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp	2012-11-10 03:11:18 UTC (rev 52059)
@@ -85,12 +85,13 @@
 {
 }
 
+void DummyPhysicsEnvironment::getGravity(PHY__Vector3& grav)
+{
+}
 
 
 
 
-
-
 int			DummyPhysicsEnvironment::createConstraint(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsController* ctrl2,PHY_ConstraintType type,
 		float pivotX,float pivotY,float pivotZ,float axisX,float axisY,float axisZ,
 			float axis1X,float axis1Y,float axis1Z,

Modified: trunk/blender/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
===================================================================
--- trunk/blender/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h	2012-11-10 03:05:08 UTC (rev 52058)
+++ trunk/blender/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h	2012-11-10 03:11:18 UTC (rev 52059)
@@ -56,6 +56,7 @@
 	virtual	float		getFixedTimeStep();
 
 	virtual	void		setGravity(float x,float y,float z);
+	virtual	void		getGravity(PHY__Vector3& grav);
 
 	virtual int			createConstraint(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsController* ctrl2,PHY_ConstraintType type,
 			float pivotX,float pivotY,float pivotZ,

Modified: trunk/blender/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
===================================================================
--- trunk/blender/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h	2012-11-10 03:05:08 UTC (rev 52058)
+++ trunk/blender/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h	2012-11-10 03:11:18 UTC (rev 52059)
@@ -143,6 +143,7 @@
 		virtual void		setUseEpa(bool epa) {}
 
 		virtual	void		setGravity(float x,float y,float z)=0;
+		virtual	void		getGravity(PHY__Vector3& grav) = 0;
 
 		virtual int			createConstraint(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsController* ctrl2,PHY_ConstraintType type,
 			float pivotX,float pivotY,float pivotZ,




More information about the Bf-blender-cvs mailing list