diff options
author | Kester Maddock <Christopher.Maddock.1@uni.massey.ac.nz> | 2004-09-19 05:33:08 +0400 |
---|---|---|
committer | Kester Maddock <Christopher.Maddock.1@uni.massey.ac.nz> | 2004-09-19 05:33:08 +0400 |
commit | fd5f3e13d2f86f0f344422c773df85d0c3e6df32 (patch) | |
tree | 8f55d1124aa01fcdfb847dedd1396e941060dae5 /source/gameengine/Ketsji | |
parent | d70197262b3bf22388673b5b8fc96af969875d50 (diff) |
Convert and use actuators with no target object set.
Certain actuators (Add Object/Replace Mesh/Scene/Track To) used to always require a target, or they would not influence the scene. If the actuator target is always set from Python, this could be annoying.
Diffstat (limited to 'source/gameengine/Ketsji')
4 files changed, 25 insertions, 7 deletions
diff --git a/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp b/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp index feaf24f5e5b..d972d880070 100644 --- a/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp +++ b/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp @@ -263,6 +263,9 @@ PyObject* KX_SCA_AddObjectActuator::PyGetObject(PyObject* self, PyObject* args, PyObject* kwds) { + if (!m_OriginalObject) + Py_Return; + return PyString_FromString(m_OriginalObject->GetName()); } diff --git a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp index f26e9873863..84e12ac86af 100644 --- a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp +++ b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp @@ -116,7 +116,7 @@ PyObject* KX_SCA_ReplaceMeshActuator::PySetMesh(PyObject* self, void* mesh = SCA_ILogicBrick::m_sCurrentLogicManager->GetMeshByName(STR_String(meshname)); - if (m_mesh) { + if (mesh) { m_mesh= (class RAS_MeshObject*)mesh; Py_Return; } @@ -129,6 +129,9 @@ KX_PYMETHODDEF_DOC(KX_SCA_ReplaceMeshActuator, getMesh, "Returns the name of the mesh to be substituted.\n" ) { + if (!m_mesh) + Py_Return; + return PyString_FromString(const_cast<char *>(m_mesh->GetName().ReadPtr())); } diff --git a/source/gameengine/Ketsji/KX_SceneActuator.cpp b/source/gameengine/Ketsji/KX_SceneActuator.cpp index 3ef49680f1f..ddd0672b2fe 100644 --- a/source/gameengine/Ketsji/KX_SceneActuator.cpp +++ b/source/gameengine/Ketsji/KX_SceneActuator.cpp @@ -100,6 +100,21 @@ bool KX_SceneActuator::Update(double curtime,double deltatime) m_KetsjiEngine->ReplaceScene(m_scene->GetName(),m_scene->GetName()); break; } + case KX_SCENE_SET_CAMERA: + if (m_camera) + { + m_scene->SetActiveCamera(m_camera); + } + break; + default: + break; + } + + if (!m_nextSceneName.Length()) + return false; + + switch (m_mode) + { case KX_SCENE_SET_SCENE: { m_KetsjiEngine->ReplaceScene(m_scene->GetName(),m_nextSceneName); @@ -132,12 +147,6 @@ bool KX_SceneActuator::Update(double curtime,double deltatime) m_KetsjiEngine->ResumeScene(m_nextSceneName); break; } - case KX_SCENE_SET_CAMERA: - if (m_camera) - { - m_scene->SetActiveCamera(m_camera); - } - break; default: ; /* do nothing? this is an internal error !!! */ } diff --git a/source/gameengine/Ketsji/KX_TrackToActuator.cpp b/source/gameengine/Ketsji/KX_TrackToActuator.cpp index 7a0d0ad630f..6880ac5d683 100644 --- a/source/gameengine/Ketsji/KX_TrackToActuator.cpp +++ b/source/gameengine/Ketsji/KX_TrackToActuator.cpp @@ -427,6 +427,9 @@ char KX_TrackToActuator::GetObject_doc[] = "\tReturns the object to track with the parent of this actuator.\n"; PyObject* KX_TrackToActuator::PyGetObject(PyObject* self, PyObject* args, PyObject* kwds) { + if (!m_object) + Py_Return; + return PyString_FromString(m_object->GetName()); } |