Index: source/gameengine/Ketsji/KX_Scene.cpp =================================================================== --- source/gameengine/Ketsji/KX_Scene.cpp (revision 26726) +++ source/gameengine/Ketsji/KX_Scene.cpp (working copy) @@ -2099,6 +2099,31 @@ return PY_SET_ATTR_SUCCESS; } +PyObject* KX_Scene::pyattr_get_suspended(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef) +{ + KX_Scene* self= static_cast(self_v); + return PyBool_FromLong(self->m_suspend); +} + + +int KX_Scene::pyattr_set_suspended(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value) +{ + KX_Scene* self= static_cast(self_v); + int param = PyObject_IsTrue( value ); + if (param == -1) { + PyErr_SetString(PyExc_AttributeError, "scene.suspended = bool: KX_Scene, expected True or False"); + return PY_SET_ATTR_FAIL; + } + + if (param == 1) { + KX_GetActiveEngine()->SuspendScene(self->m_sceneName); + } + else { + KX_GetActiveEngine()->ResumeScene(self->m_sceneName); + } + 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), @@ -2109,7 +2134,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_BOOL_RO("suspended", KX_Scene, m_suspend), + KX_PYATTRIBUTE_RW_FUNCTION("suspended", KX_Scene, pyattr_get_suspended, pyattr_set_suspended), 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), KX_PYATTRIBUTE_BOOL_RO("dbvt_culling", KX_Scene, m_dbvt_culling), Index: source/gameengine/Ketsji/KX_Scene.h =================================================================== --- source/gameengine/Ketsji/KX_Scene.h (revision 26726) +++ source/gameengine/Ketsji/KX_Scene.h (working copy) @@ -558,6 +558,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_suspended(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); + static int pyattr_set_suspended(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); virtual PyObject* py_repr(void) { return PyUnicode_FromString(GetName().ReadPtr()); } Index: source/gameengine/PyDoc/GameTypes.py =================================================================== --- source/gameengine/PyDoc/GameTypes.py (revision 26726) +++ source/gameengine/PyDoc/GameTypes.py (working copy) @@ -3828,9 +3828,9 @@ @ivar active_camera: The current active camera. note: this can be set directly from python to avoid using the L{KX_SceneActuator}. @type active_camera: L{KX_Camera} - @ivar suspended: True if the scene is suspended, (read-only). + @ivar suspended: True if the scene is suspended. @type suspended: boolean - @ivar activity_culling: True if the scene is activity culling + @ivar activity_culling: True if the scene is activity culling. @type activity_culling: boolean @ivar activity_culling_radius: The distance outside which to do activity culling. Measured in manhattan distance. @type activity_culling_radius: float