Changeset View
Changeset View
Standalone View
Standalone View
source/gameengine/GameLogic/SCA_SceneActuator.cpp
- This file was moved from source/gameengine/Ketsji/KX_SceneActuator.cpp.
| Show All 22 Lines | |||||
| * | * | ||||
| * The Original Code is: all of this file. | * The Original Code is: all of this file. | ||||
| * | * | ||||
| * Contributor(s): none yet. | * Contributor(s): none yet. | ||||
| * | * | ||||
| * ***** END GPL LICENSE BLOCK ***** | * ***** END GPL LICENSE BLOCK ***** | ||||
| */ | */ | ||||
| /** \file gameengine/Ketsji/KX_SceneActuator.cpp | /** \file gameengine/GameLogic/SCA_SceneActuator.cpp | ||||
| * \ingroup ketsji | * \ingroup gamelogic | ||||
| */ | */ | ||||
| #include "SCA_IActuator.h" | #include "SCA_IActuator.h" | ||||
| #include "KX_SceneActuator.h" | #include "SCA_SceneActuator.h" | ||||
| #include <iostream> | #include <iostream> | ||||
| #include "KX_Scene.h" | #include "KX_Scene.h" | ||||
| #include "KX_Camera.h" | #include "KX_Camera.h" | ||||
| #include "KX_KetsjiEngine.h" | #include "KX_KetsjiEngine.h" | ||||
| /* ------------------------------------------------------------------------- */ | /* ------------------------------------------------------------------------- */ | ||||
| /* Native functions */ | /* Native functions */ | ||||
| /* ------------------------------------------------------------------------- */ | /* ------------------------------------------------------------------------- */ | ||||
| KX_SceneActuator::KX_SceneActuator(SCA_IObject *gameobj, | SCA_SceneActuator::SCA_SceneActuator(SCA_IObject *gameobj, | ||||
| int mode, | int mode, | ||||
| KX_Scene *scene, | KX_Scene *scene, | ||||
| KX_KetsjiEngine* ketsjiEngine, | KX_KetsjiEngine* ketsjiEngine, | ||||
| const STR_String& nextSceneName, | const STR_String& nextSceneName, | ||||
| KX_Camera* camera) | KX_Camera* camera) | ||||
| : SCA_IActuator(gameobj, KX_ACT_SCENE) | : SCA_IActuator(gameobj, SCA_ACT_SCENE) | ||||
| { | { | ||||
| m_mode = mode; | m_mode = mode; | ||||
| m_scene = scene; | m_scene = scene; | ||||
| m_KetsjiEngine=ketsjiEngine; | m_KetsjiEngine=ketsjiEngine; | ||||
| m_camera = camera; | m_camera = camera; | ||||
| m_nextSceneName = nextSceneName; | m_nextSceneName = nextSceneName; | ||||
| if (m_camera) | if (m_camera) | ||||
| m_camera->RegisterActuator(this); | m_camera->RegisterActuator(this); | ||||
| } /* End of constructor */ | } /* End of constructor */ | ||||
| KX_SceneActuator::~KX_SceneActuator() | SCA_SceneActuator::~SCA_SceneActuator() | ||||
| { | { | ||||
| if (m_camera) | if (m_camera) | ||||
| m_camera->UnregisterActuator(this); | m_camera->UnregisterActuator(this); | ||||
| } /* end of destructor */ | } /* end of destructor */ | ||||
| CValue* KX_SceneActuator::GetReplica() | CValue* SCA_SceneActuator::GetReplica() | ||||
| { | { | ||||
| KX_SceneActuator* replica = new KX_SceneActuator(*this); | SCA_SceneActuator* replica = new SCA_SceneActuator(*this); | ||||
| replica->ProcessReplica(); | replica->ProcessReplica(); | ||||
| return replica; | return replica; | ||||
| } | } | ||||
| void KX_SceneActuator::ProcessReplica() | void SCA_SceneActuator::ProcessReplica() | ||||
| { | { | ||||
| if (m_camera) | if (m_camera) | ||||
| m_camera->RegisterActuator(this); | m_camera->RegisterActuator(this); | ||||
| SCA_IActuator::ProcessReplica(); | SCA_IActuator::ProcessReplica(); | ||||
| } | } | ||||
| bool KX_SceneActuator::UnlinkObject(SCA_IObject* clientobj) | bool SCA_SceneActuator::UnlinkObject(SCA_IObject* clientobj) | ||||
| { | { | ||||
| if (clientobj == (SCA_IObject*)m_camera) | if (clientobj == (SCA_IObject*)m_camera) | ||||
| { | { | ||||
| // this object is being deleted, we cannot continue to track it. | // this object is being deleted, we cannot continue to track it. | ||||
| m_camera = NULL; | m_camera = NULL; | ||||
| return true; | return true; | ||||
| } | } | ||||
| return false; | return false; | ||||
| } | } | ||||
| void KX_SceneActuator::Relink(CTR_Map<CTR_HashedPtr, void*> *obj_map) | void SCA_SceneActuator::Relink(CTR_Map<CTR_HashedPtr, void*> *obj_map) | ||||
| { | { | ||||
| void **h_obj = (*obj_map)[m_camera]; | void **h_obj = (*obj_map)[m_camera]; | ||||
| if (h_obj) { | if (h_obj) { | ||||
| if (m_camera) | if (m_camera) | ||||
| m_camera->UnregisterActuator(this); | m_camera->UnregisterActuator(this); | ||||
| m_camera = (KX_Camera*)(*h_obj); | m_camera = (KX_Camera*)(*h_obj); | ||||
| m_camera->RegisterActuator(this); | m_camera->RegisterActuator(this); | ||||
| } | } | ||||
| } | } | ||||
| bool KX_SceneActuator::Update() | bool SCA_SceneActuator::Update() | ||||
| { | { | ||||
| // bool result = false; /*unused*/ | // bool result = false; /*unused*/ | ||||
| bool bNegativeEvent = IsNegativeEvent(); | bool bNegativeEvent = IsNegativeEvent(); | ||||
| RemoveAllEvents(); | RemoveAllEvents(); | ||||
| if (bNegativeEvent) | if (bNegativeEvent) | ||||
| return false; // do nothing on negative events | return false; // do nothing on negative events | ||||
| ▲ Show 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | bool SCA_SceneActuator::Update() | ||||
| } | } | ||||
| return false; | return false; | ||||
| } | } | ||||
| /* returns a camera if the name is valid */ | /* returns a camera if the name is valid */ | ||||
| KX_Camera* KX_SceneActuator::FindCamera(const char *camName) | KX_Camera* SCA_SceneActuator::FindCamera(const char *camName) | ||||
| { | { | ||||
| KX_SceneList* sl = m_KetsjiEngine->CurrentScenes(); | KX_SceneList* sl = m_KetsjiEngine->CurrentScenes(); | ||||
| STR_String name = STR_String(camName); | STR_String name = STR_String(camName); | ||||
| KX_SceneList::iterator it = sl->begin(); | KX_SceneList::iterator it = sl->begin(); | ||||
| KX_Camera* cam = NULL; | KX_Camera* cam = NULL; | ||||
| while ((it != sl->end()) && (!cam)) | while ((it != sl->end()) && (!cam)) | ||||
| { | { | ||||
| cam = (*it)->FindCamera(name); | cam = (*it)->FindCamera(name); | ||||
| it++; | it++; | ||||
| } | } | ||||
| return cam; | return cam; | ||||
| } | } | ||||
| KX_Scene* KX_SceneActuator::FindScene(const char *sceneName) | KX_Scene* SCA_SceneActuator::FindScene(const char *sceneName) | ||||
| { | { | ||||
| return m_KetsjiEngine->FindScene(sceneName); | return m_KetsjiEngine->FindScene(sceneName); | ||||
| } | } | ||||
| #ifdef WITH_PYTHON | #ifdef WITH_PYTHON | ||||
| /* ------------------------------------------------------------------------- */ | /* ------------------------------------------------------------------------- */ | ||||
| /* Python functions */ | /* Python functions */ | ||||
| /* ------------------------------------------------------------------------- */ | /* ------------------------------------------------------------------------- */ | ||||
| /* Integration hooks ------------------------------------------------------- */ | /* Integration hooks ------------------------------------------------------- */ | ||||
| PyTypeObject KX_SceneActuator::Type = { | PyTypeObject SCA_SceneActuator::Type = { | ||||
| PyVarObject_HEAD_INIT(NULL, 0) | PyVarObject_HEAD_INIT(NULL, 0) | ||||
| "KX_SceneActuator", | "SCA_SceneActuator", | ||||
| sizeof(PyObjectPlus_Proxy), | sizeof(PyObjectPlus_Proxy), | ||||
| 0, | 0, | ||||
| py_base_dealloc, | py_base_dealloc, | ||||
| 0, | 0, | ||||
| 0, | 0, | ||||
| 0, | 0, | ||||
| 0, | 0, | ||||
| py_base_repr, | py_base_repr, | ||||
| 0,0,0,0,0,0,0,0,0, | 0,0,0,0,0,0,0,0,0, | ||||
| Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, | Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, | ||||
| 0,0,0,0,0,0,0, | 0,0,0,0,0,0,0, | ||||
| Methods, | Methods, | ||||
| 0, | 0, | ||||
| 0, | 0, | ||||
| &SCA_IActuator::Type, | &SCA_IActuator::Type, | ||||
| 0,0,0,0,0,0, | 0,0,0,0,0,0, | ||||
| py_base_new | py_base_new | ||||
| }; | }; | ||||
| PyMethodDef KX_SceneActuator::Methods[] = | PyMethodDef SCA_SceneActuator::Methods[] = | ||||
| { | { | ||||
| {NULL,NULL} //Sentinel | {NULL,NULL} //Sentinel | ||||
| }; | }; | ||||
| PyAttributeDef KX_SceneActuator::Attributes[] = { | PyAttributeDef SCA_SceneActuator::Attributes[] = { | ||||
| KX_PYATTRIBUTE_STRING_RW("scene",0,MAX_ID_NAME-2,true,KX_SceneActuator,m_nextSceneName), | KX_PYATTRIBUTE_STRING_RW("scene",0,MAX_ID_NAME-2,true,SCA_SceneActuator,m_nextSceneName), | ||||
| KX_PYATTRIBUTE_RW_FUNCTION("camera",KX_SceneActuator,pyattr_get_camera,pyattr_set_camera), | KX_PYATTRIBUTE_RW_FUNCTION("camera",SCA_SceneActuator,pyattr_get_camera,pyattr_set_camera), | ||||
| KX_PYATTRIBUTE_BOOL_RW("useRestart", KX_SceneActuator, m_restart), | KX_PYATTRIBUTE_BOOL_RW("useRestart", SCA_SceneActuator, m_restart), | ||||
| KX_PYATTRIBUTE_INT_RW("mode", KX_SCENE_NODEF+1, KX_SCENE_MAX-1, true, KX_SceneActuator, m_mode), | KX_PYATTRIBUTE_INT_RW("mode", KX_SCENE_NODEF+1, KX_SCENE_MAX-1, true, SCA_SceneActuator, m_mode), | ||||
| { NULL } //Sentinel | { NULL } //Sentinel | ||||
| }; | }; | ||||
| PyObject *KX_SceneActuator::pyattr_get_camera(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef) | PyObject *SCA_SceneActuator::pyattr_get_camera(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef) | ||||
| { | { | ||||
| KX_SceneActuator* actuator = static_cast<KX_SceneActuator*>(self); | SCA_SceneActuator* actuator = static_cast<SCA_SceneActuator*>(self); | ||||
| if (!actuator->m_camera) | if (!actuator->m_camera) | ||||
| Py_RETURN_NONE; | Py_RETURN_NONE; | ||||
| return actuator->m_camera->GetProxy(); | return actuator->m_camera->GetProxy(); | ||||
| } | } | ||||
| int KX_SceneActuator::pyattr_set_camera(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value) | int SCA_SceneActuator::pyattr_set_camera(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value) | ||||
| { | { | ||||
| KX_SceneActuator* actuator = static_cast<KX_SceneActuator*>(self); | SCA_SceneActuator* actuator = static_cast<SCA_SceneActuator*>(self); | ||||
| KX_Camera *camOb; | KX_Camera *camOb; | ||||
| if (!ConvertPythonToCamera(value, &camOb, true, "actu.camera = value: KX_SceneActuator")) | if (!ConvertPythonToCamera(value, &camOb, true, "actu.camera = value: SCA_SceneActuator")) | ||||
| return PY_SET_ATTR_FAIL; | return PY_SET_ATTR_FAIL; | ||||
| if (actuator->m_camera) | if (actuator->m_camera) | ||||
| actuator->m_camera->UnregisterActuator(actuator); | actuator->m_camera->UnregisterActuator(actuator); | ||||
| if (camOb==NULL) { | if (camOb==NULL) { | ||||
| actuator->m_camera= NULL; | actuator->m_camera= NULL; | ||||
| } | } | ||||
| Show All 11 Lines | |||||