Commit: 4e7ef3f5cd8cd96545c3250a93bf856174ee54e2
Author: Sybren A. Stüvel
Date:   Mon May 4 12:04:09 2015 +0800
Branches: master
https://developer.blender.org/rB4e7ef3f5cd8cd96545c3250a93bf856174ee54e2

BGE: Added 'ghost' arg to KX_GameObject.suspendDynamics() method

The implementation of this 'ghost' argument already existed in the C++
source, but wasn't exposed to Python yet.

===================================================================

M       doc/python_api/rst/bge_types/bge.types.KX_GameObject.rst
M       source/gameengine/Ketsji/KX_GameObject.cpp
M       source/gameengine/Ketsji/KX_GameObject.h

===================================================================

diff --git a/doc/python_api/rst/bge_types/bge.types.KX_GameObject.rst 
b/doc/python_api/rst/bge_types/bge.types.KX_GameObject.rst
index 7b2f68b..672df37 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_GameObject.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_GameObject.rst
@@ -84,6 +84,8 @@ base class --- :class:`SCA_IObject`
 
       :type: boolean
 
+      .. seealso:: :py:meth:`suspendDynamics` and :py:meth:`restoreDynamics` 
allow you to change the state.
+
    .. attribute:: linearDamping
 
       The object's linear damping, also known as translational damping. Can be 
set simultaneously with angular damping using the :py:meth:`setDamping` method.
@@ -671,13 +673,19 @@ base class --- :class:`SCA_IObject`
       :arg angular_damping: Angular ("rotational") damping factor.
       :type angular_damping: float ∈ [0, 1]
 
-   .. method:: suspendDynamics()
+   .. method:: suspendDynamics([ghost])
 
       Suspends physics for this object.
 
+      :arg ghost: When set to `True`, collisions with the object will be 
ignored, similar to the "ghost" checkbox in
+          Blender. When `False` (the default), the object becomes static but 
still collide with other objects.
+      :type ghost: bool
+
+      .. seealso:: :py:attr:`isSuspendDynamics` allows you to inspect whether 
the object is in a suspended state.
+
    .. method:: restoreDynamics()
 
-      Resumes physics for this object.
+      Resumes physics for this object. Also reinstates collisions; the object 
will no longer be a ghost.
 
       .. note::
 
diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp 
b/source/gameengine/Ketsji/KX_GameObject.cpp
index e464883..44d9bfa 100644
--- a/source/gameengine/Ketsji/KX_GameObject.cpp
+++ b/source/gameengine/Ketsji/KX_GameObject.cpp
@@ -1907,7 +1907,7 @@ PyMethodDef KX_GameObject::Methods[] = {
        {"getReactionForce", (PyCFunction) KX_GameObject::sPyGetReactionForce, 
METH_NOARGS},
        {"alignAxisToVect",(PyCFunction) KX_GameObject::sPyAlignAxisToVect, 
METH_VARARGS},
        {"getAxisVect",(PyCFunction) KX_GameObject::sPyGetAxisVect, METH_O},
-       {"suspendDynamics", 
(PyCFunction)KX_GameObject::sPySuspendDynamics,METH_NOARGS},
+       {"suspendDynamics", (PyCFunction)KX_GameObject::sPySuspendDynamics, 
METH_VARARGS},
        {"restoreDynamics", 
(PyCFunction)KX_GameObject::sPyRestoreDynamics,METH_NOARGS},
        {"enableRigidBody", 
(PyCFunction)KX_GameObject::sPyEnableRigidBody,METH_NOARGS},
        {"disableRigidBody", 
(PyCFunction)KX_GameObject::sPyDisableRigidBody,METH_NOARGS},
@@ -3318,10 +3318,16 @@ PyObject *KX_GameObject::PyApplyImpulse(PyObject *args)
 
 
 
-PyObject *KX_GameObject::PySuspendDynamics()
+PyObject *KX_GameObject::PySuspendDynamics(PyObject *args)
 {
+       bool ghost = false;
+
+       if (!PyArg_ParseTuple(args, "|b", &ghost))
+               return NULL;
+
        if (GetPhysicsController())
-               GetPhysicsController()->SuspendDynamics();
+               GetPhysicsController()->SuspendDynamics(ghost);
+
        Py_RETURN_NONE;
 }
 
diff --git a/source/gameengine/Ketsji/KX_GameObject.h 
b/source/gameengine/Ketsji/KX_GameObject.h
index 9b85572..9c081b4 100644
--- a/source/gameengine/Ketsji/KX_GameObject.h
+++ b/source/gameengine/Ketsji/KX_GameObject.h
@@ -1005,7 +1005,7 @@ public:
        KX_PYMETHOD_O(KX_GameObject,SetState);
        KX_PYMETHOD_VARARGS(KX_GameObject,AlignAxisToVect);
        KX_PYMETHOD_O(KX_GameObject,GetAxisVect);
-       KX_PYMETHOD_NOARGS(KX_GameObject,SuspendDynamics);
+       KX_PYMETHOD_VARARGS(KX_GameObject,SuspendDynamics);
        KX_PYMETHOD_NOARGS(KX_GameObject,RestoreDynamics);
        KX_PYMETHOD_NOARGS(KX_GameObject,EnableRigidBody);
        KX_PYMETHOD_NOARGS(KX_GameObject,DisableRigidBody);

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to