Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>2004-07-20 16:07:06 +0400
committerKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>2004-07-20 16:07:06 +0400
commitb6e0899607aa1b55da590bfb233e7c186a0bc6c3 (patch)
tree9d91b5a9126ffa2a0b4b7aa4a82d296241f3fe74 /source/gameengine/Ketsji/KX_Camera.cpp
parent7b3b3ae432f692ed32f57aa70bdab5b89a05be21 (diff)
Added support for cameras in Blender's Ortho mode.
Diffstat (limited to 'source/gameengine/Ketsji/KX_Camera.cpp')
-rw-r--r--source/gameengine/Ketsji/KX_Camera.cpp31
1 files changed, 13 insertions, 18 deletions
diff --git a/source/gameengine/Ketsji/KX_Camera.cpp b/source/gameengine/Ketsji/KX_Camera.cpp
index d32ea269d3a..0b12ddfe0d1 100644
--- a/source/gameengine/Ketsji/KX_Camera.cpp
+++ b/source/gameengine/Ketsji/KX_Camera.cpp
@@ -49,7 +49,7 @@ KX_Camera::KX_Camera(void* sgReplicationInfo,
m_camdata(camdata),
m_dirty(true),
m_normalised(false),
- m_frustum_culling(frustum_culling),
+ m_frustum_culling(frustum_culling && camdata.m_perspective),
m_set_projection_matrix(false),
m_set_frustum_centre(false)
{
@@ -70,12 +70,7 @@ KX_Camera::~KX_Camera()
MT_Transform KX_Camera::GetWorldToCamera() const
{
MT_Transform camtrans;
- MT_Transform trans;
-
- trans.setBasis(NodeGetWorldOrientation());
- trans.setOrigin(NodeGetWorldPosition());
-
- camtrans.invert(trans);
+ camtrans.invert(MT_Transform(NodeGetWorldPosition(), NodeGetWorldOrientation()));
return camtrans;
}
@@ -84,11 +79,7 @@ MT_Transform KX_Camera::GetWorldToCamera() const
MT_Transform KX_Camera::GetCameraToWorld() const
{
- MT_Transform trans;
- trans.setBasis(NodeGetWorldOrientation());
- trans.setOrigin(NodeGetWorldPosition());
-
- return trans;
+ return MT_Transform(NodeGetWorldPosition(), NodeGetWorldOrientation());
}
@@ -116,11 +107,7 @@ const MT_Point3 KX_Camera::GetCameraLocation() const
/* I want the camera orientation as well. */
const MT_Quaternion KX_Camera::GetCameraOrientation() const
{
- MT_Transform trans;
- trans.setBasis(NodeGetWorldOrientation());
- trans.setOrigin(NodeGetWorldPosition());
-
- return trans.getRotation();
+ return NodeGetWorldOrientation().getRotation();
}
@@ -208,7 +195,7 @@ void KX_Camera::ExtractClipPlanes()
if (!m_dirty)
return;
- MT_Matrix4x4 m = m_projection_matrix * GetWorldToCamera();
+ MT_Matrix4x4 m = m_projection_matrix * m_modelview_matrix;
// Left clip plane
m_planes[0] = m[3] + m[0];
// Right clip plane
@@ -434,6 +421,8 @@ PyObject* KX_Camera::_getattr(const STR_String& attr)
return PyFloat_FromDouble(GetCameraFar()); /* new ref */
if (attr == "frustum_culling")
return PyInt_FromLong(m_frustum_culling); /* new ref */
+ if (attr == "perspective")
+ return PyInt_FromLong(m_camdata.m_perspective); /* new ref */
if (attr == "projection_matrix")
return PyObjectFrom(GetProjectionMatrix()); /* new ref */
if (attr == "modelview_matrix")
@@ -455,6 +444,12 @@ int KX_Camera::_setattr(const STR_String &attr, PyObject *pyvalue)
m_frustum_culling = PyInt_AsLong(pyvalue);
return 0;
}
+
+ if (attr == "perspective")
+ {
+ m_camdata.m_perspective = PyInt_AsLong(pyvalue);
+ return 0;
+ }
}
if (PyFloat_Check(pyvalue))