diff options
9 files changed, 59 insertions, 73 deletions
diff --git a/source/gameengine/Converter/KX_ConvertActuators.cpp b/source/gameengine/Converter/KX_ConvertActuators.cpp index 1b65158e8c0..ec9a70fccb1 100644 --- a/source/gameengine/Converter/KX_ConvertActuators.cpp +++ b/source/gameengine/Converter/KX_ConvertActuators.cpp @@ -405,6 +405,8 @@ void BL_ConvertActuators(char* maggiename, tmpsoundact->SetName(bact->name); baseact = tmpsoundact; soundscene->AddObject(sndobj); + } else { + std::cout << "WARNING: Sound actuator " << bact->name << " failed to load sample." << std::endl; } } } @@ -515,41 +517,26 @@ void BL_ConvertActuators(char* maggiename, // does the 'original' for replication exists, and // is it in a non-active layer ? + CValue* originalval = NULL; if (editobact->ob && !(editobact->ob->lay & activeLayerBitInfo)) - { - CValue* originalval = converter->FindGameObject(editobact->ob); + originalval = converter->FindGameObject(editobact->ob); + + MT_Vector3 linvelvec ( KX_BLENDERTRUNC(editobact->linVelocity[0]), + KX_BLENDERTRUNC(editobact->linVelocity[1]), + KX_BLENDERTRUNC(editobact->linVelocity[2])); - if (originalval) - { - MT_Vector3 linvelvec ( KX_BLENDERTRUNC(editobact->linVelocity[0]), - KX_BLENDERTRUNC(editobact->linVelocity[1]), - KX_BLENDERTRUNC(editobact->linVelocity[2])); - KX_SCA_AddObjectActuator* tmpaddact = - new KX_SCA_AddObjectActuator( - - gameobj, - originalval, - editobact->time, - scene, - linvelvec.getValue(), - editobact->localflag!=0 - - ); + KX_SCA_AddObjectActuator* tmpaddact = + new KX_SCA_AddObjectActuator( + gameobj, + originalval, + editobact->time, + scene, + linvelvec.getValue(), + editobact->localflag!=0 + ); //editobact->ob to gameobj baseact = tmpaddact; - } - else - { - // let's pretend this never happened - exit(0); - } - } else - { - printf ("ERROR: GameObject %s has a AddObjectActuator %s without object (in 'nonactive' layer)\n", - objectname.ReadPtr(), - uniquename.ReadPtr() ); - } } break; case ACT_EDOB_END_OBJECT: @@ -561,8 +548,8 @@ void BL_ConvertActuators(char* maggiename, break; case ACT_EDOB_REPLACE_MESH: { + RAS_MeshObject *tmpmesh = NULL; if (editobact->me) - { RAS_MeshObject *tmpmesh = BL_ConvertMesh( editobact->me, blenderobject, @@ -570,31 +557,25 @@ void BL_ConvertActuators(char* maggiename, scene, converter ); - KX_SCA_ReplaceMeshActuator* tmpreplaceact - = new KX_SCA_ReplaceMeshActuator( + + KX_SCA_ReplaceMeshActuator* tmpreplaceact + = new KX_SCA_ReplaceMeshActuator( gameobj, tmpmesh, scene ); baseact = tmpreplaceact; - } - else - { - printf ("ERROR: GameObject %s ReplaceMeshActuator %s without object\n", - objectname.ReadPtr(), - uniquename.ReadPtr()); - } } break; case ACT_EDOB_TRACK_TO: { + SCA_IObject* originalval = NULL; if (editobact->ob) - { SCA_IObject* originalval = converter->FindGameObject(editobact->ob); - KX_TrackToActuator* tmptrackact - = new KX_TrackToActuator(gameobj, + KX_TrackToActuator* tmptrackact + = new KX_TrackToActuator(gameobj, originalval, editobact->time, editobact->flag, @@ -602,15 +583,6 @@ void BL_ConvertActuators(char* maggiename, blenderobject->upflag ); baseact = tmptrackact; - } - else - { - printf("ERROR: GameObject %s no object in EditObjectActuator %s\n", - objectname.ReadPtr(), - uniquename.ReadPtr() ); - - - } } } break; @@ -674,8 +646,7 @@ void BL_ConvertActuators(char* maggiename, case ACT_SCENE: { bSceneActuator *sceneact = (bSceneActuator *) bact->data; - bool scenevalid = true; - STR_String nextSceneName; + STR_String nextSceneName(""); KX_SceneActuator* tmpsceneact; int mode = KX_SceneActuator::KX_SCENE_NODEF; @@ -718,14 +689,6 @@ void BL_ConvertActuators(char* maggiename, nextSceneName = sceneact->scene->id.name + 2; // this '2' is necessary to remove prefix 'SC' } - if (!nextSceneName.Length()) - { - printf ("ERROR: GameObject %s has a SceneActuator %s (SetScene) without scene\n", - objectname.ReadPtr(), - uniquename.ReadPtr()); - scenevalid = false; - - } break; } case ACT_SCENE_CAMERA: @@ -748,16 +711,13 @@ void BL_ConvertActuators(char* maggiename, default: ; /* flag error */ } - if (scenevalid ) - { - tmpsceneact = new KX_SceneActuator(gameobj, + tmpsceneact = new KX_SceneActuator(gameobj, mode, scene, ketsjiEngine, nextSceneName, cam); baseact = tmpsceneact; - } break; } case ACT_GAME: 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()); } diff --git a/source/gameengine/PyDoc/KX_SCA_AddObjectActuator.py b/source/gameengine/PyDoc/KX_SCA_AddObjectActuator.py index ef216aed55c..7d6d1ee60df 100644 --- a/source/gameengine/PyDoc/KX_SCA_AddObjectActuator.py +++ b/source/gameengine/PyDoc/KX_SCA_AddObjectActuator.py @@ -29,6 +29,8 @@ class KX_SCA_AddObjectActuator(SCA_IActuator): """ Returns the name of the game object to be added. + Returns None if no game object has been assigned to be added. + @rtype: string """ def setTime(time): diff --git a/source/gameengine/PyDoc/KX_SCA_ReplaceMeshActuator.py b/source/gameengine/PyDoc/KX_SCA_ReplaceMeshActuator.py index 63100e40532..eb00a91a4ce 100644 --- a/source/gameengine/PyDoc/KX_SCA_ReplaceMeshActuator.py +++ b/source/gameengine/PyDoc/KX_SCA_ReplaceMeshActuator.py @@ -66,6 +66,8 @@ class KX_SCA_ReplaceMeshActuator(SCA_IActuator): """ Returns the name of the mesh that will replace the current one. + Returns None if no mesh has been scheduled to be added. + @rtype: string """ diff --git a/source/gameengine/PyDoc/KX_SceneActuator.py b/source/gameengine/PyDoc/KX_SceneActuator.py index eba899bd322..cfb40ae072f 100644 --- a/source/gameengine/PyDoc/KX_SceneActuator.py +++ b/source/gameengine/PyDoc/KX_SceneActuator.py @@ -43,6 +43,8 @@ class KX_SceneActuator(SCA_IActuator): """ Returns the name of the scene to change to/overlay/underlay/remove/suspend/resume. + Returns an empty string ("") if no scene has been set. + @rtype: string """ def getCamera(): diff --git a/source/gameengine/PyDoc/KX_TrackToActuator.py b/source/gameengine/PyDoc/KX_TrackToActuator.py index 8b93a82dada..39fb99ec2e2 100644 --- a/source/gameengine/PyDoc/KX_TrackToActuator.py +++ b/source/gameengine/PyDoc/KX_TrackToActuator.py @@ -25,6 +25,8 @@ class KX_TrackToActuator(SCA_IActuator): """ Returns the name of the object to track. + Returns None if no object has been set to track. + @rtype: string """ def setTime(time): |