diff options
Diffstat (limited to 'source/gameengine/Ketsji/KX_Camera.cpp')
-rw-r--r-- | source/gameengine/Ketsji/KX_Camera.cpp | 48 |
1 files changed, 45 insertions, 3 deletions
diff --git a/source/gameengine/Ketsji/KX_Camera.cpp b/source/gameengine/Ketsji/KX_Camera.cpp index 86dbd06871f..53b3e348a36 100644 --- a/source/gameengine/Ketsji/KX_Camera.cpp +++ b/source/gameengine/Ketsji/KX_Camera.cpp @@ -29,7 +29,8 @@ */ #include "KX_Camera.h" - +#include "KX_Scene.h" +#include "KX_PythonInit.h" #include "KX_Python.h" #include "KX_PyMath.h" #ifdef HAVE_CONFIG_H @@ -54,7 +55,9 @@ KX_Camera::KX_Camera(void* sgReplicationInfo, m_name = "cam"; m_projection_matrix.setIdentity(); m_modelview_matrix.setIdentity(); - SetProperty("camera",new CIntValue(1)); + CValue* val = new CIntValue(1); + SetProperty("camera",val); + val->Release(); } @@ -63,7 +66,22 @@ KX_Camera::~KX_Camera() } +CValue* KX_Camera::GetReplica() +{ + KX_Camera* replica = new KX_Camera(*this); + + // this will copy properties and so on... + CValue::AddDataToReplica(replica); + ProcessReplica(replica); + + return replica; +} +void KX_Camera::ProcessReplica(KX_Camera* replica) +{ + KX_GameObject::ProcessReplica(replica); +} + MT_Transform KX_Camera::GetWorldToCamera() const { MT_Transform camtrans; @@ -186,6 +204,11 @@ float KX_Camera::GetCameraFar() const return m_camdata.m_clipend; } +float KX_Camera::GetFocalLength() const +{ + return m_camdata.m_focallength; +} + RAS_CameraData* KX_Camera::GetCameraData() @@ -388,6 +411,7 @@ PyMethodDef KX_Camera::Methods[] = { KX_PYMETHODTABLE(KX_Camera, setProjectionMatrix), KX_PYMETHODTABLE(KX_Camera, enableViewport), KX_PYMETHODTABLE(KX_Camera, setViewport), + KX_PYMETHODTABLE(KX_Camera, setOnTop), {NULL,NULL} //Sentinel }; @@ -564,7 +588,7 @@ KX_PYMETHODDEF_DOC(KX_Camera, sphereInsideFrustum, PyErr_SetString(PyExc_TypeError, "sphereInsideFrustum: Expected arguments: (center, radius)"); - Py_Return; + return NULL; } KX_PYMETHODDEF_DOC(KX_Camera, boxInsideFrustum, @@ -742,6 +766,10 @@ KX_PYMETHODDEF_DOC(KX_Camera, enableViewport, else EnableViewport(false); } + else { + return NULL; + } + Py_Return; } @@ -753,6 +781,20 @@ KX_PYMETHODDEF_DOC(KX_Camera, setViewport, if (PyArg_ParseTuple(args,"iiii",&left, &bottom, &right, &top)) { SetViewport(left, bottom, right, top); + } else { + return NULL; } Py_Return; } + +KX_PYMETHODDEF_DOC(KX_Camera, setOnTop, +"setOnTop()\n" +"Sets this camera's viewport on top\n") +{ + class KX_Scene* scene; + + scene = KX_GetActiveScene(); + MT_assert(scene); + scene->SetCameraOnTop(this); + Py_Return; +} |