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:
Diffstat (limited to 'source/gameengine/Ketsji/KX_Camera.cpp')
-rw-r--r--source/gameengine/Ketsji/KX_Camera.cpp106
1 files changed, 53 insertions, 53 deletions
diff --git a/source/gameengine/Ketsji/KX_Camera.cpp b/source/gameengine/Ketsji/KX_Camera.cpp
index 89aea80bb67..93f1621255d 100644
--- a/source/gameengine/Ketsji/KX_Camera.cpp
+++ b/source/gameengine/Ketsji/KX_Camera.cpp
@@ -30,7 +30,7 @@
* \ingroup ketsji
*/
-
+
#include "glew-mx.h"
#include "KX_Camera.h"
#include "KX_Scene.h"
@@ -76,10 +76,10 @@ KX_Camera::~KX_Camera()
CValue* KX_Camera::GetReplica()
{
KX_Camera* replica = new KX_Camera(*this);
-
+
// this will copy properties and so on...
replica->ProcessReplica();
-
+
return replica;
}
@@ -91,15 +91,15 @@ void KX_Camera::ProcessReplica()
}
MT_Transform KX_Camera::GetWorldToCamera() const
-{
+{
MT_Transform camtrans;
camtrans.invert(MT_Transform(NodeGetWorldPosition(), NodeGetWorldOrientation()));
-
+
return camtrans;
}
-
+
MT_Transform KX_Camera::GetCameraToWorld() const
{
return MT_Transform(NodeGetWorldPosition(), NodeGetWorldOrientation());
@@ -121,7 +121,7 @@ const MT_Point3 KX_Camera::GetCameraLocation() const
/* .... I want it in world coords */
//MT_Transform trans;
//trans.setBasis(NodeGetWorldOrientation());
-
+
return NodeGetWorldPosition();
}
@@ -261,7 +261,7 @@ float KX_Camera::GetFocalLength() const
RAS_CameraData* KX_Camera::GetCameraData()
{
- return &m_camdata;
+ return &m_camdata;
}
void KX_Camera::ExtractClipPlanes()
@@ -282,7 +282,7 @@ void KX_Camera::ExtractClipPlanes()
m_planes[4] = m[3] + m[2];
// Far clip plane
m_planes[5] = m[3] - m[2];
-
+
m_dirty = false;
m_normalized = false;
}
@@ -291,14 +291,14 @@ void KX_Camera::NormalizeClipPlanes()
{
if (m_normalized)
return;
-
+
for (unsigned int p = 0; p < 6; p++)
{
MT_Scalar factor = sqrtf(m_planes[p][0]*m_planes[p][0] + m_planes[p][1]*m_planes[p][1] + m_planes[p][2]*m_planes[p][2]);
if (!MT_fuzzyZero(factor))
m_planes[p] /= factor;
}
-
+
m_normalized = true;
}
@@ -382,15 +382,15 @@ void KX_Camera::ExtractFrustumSphere()
// orthographic projection
// The most extreme points on the near and far plane. (normalized device coords)
MT_Vector4 hnear(1.0f, 1.0f, 1.0f, 1.0f), hfar(-1.0f, -1.0f, -1.0f, 1.0f);
-
+
// Transform to hom camera local space
hnear = clip_camcs_matrix*hnear;
hfar = clip_camcs_matrix*hfar;
-
+
// Tranform to 3d camera local space.
MT_Point3 nearpoint(hnear[0]/hnear[3], hnear[1]/hnear[3], hnear[2]/hnear[3]);
MT_Point3 farpoint(hfar[0]/hfar[3], hfar[1]/hfar[3], hfar[2]/hfar[3]);
-
+
// just use mediant point
m_frustum_center = (farpoint + nearpoint)*0.5f;
m_frustum_radius = m_frustum_center.distance(farpoint);
@@ -398,14 +398,14 @@ void KX_Camera::ExtractFrustumSphere()
// Transform to world space.
m_frustum_center = GetCameraToWorld()(m_frustum_center);
m_frustum_radius /= fabsf(NodeGetWorldScaling()[NodeGetWorldScaling().closestAxis()]);
-
+
m_set_frustum_center = true;
}
bool KX_Camera::PointInsideFrustum(const MT_Point3& x)
{
ExtractClipPlanes();
-
+
for ( unsigned int i = 0; i < 6 ; i++ )
{
if (m_planes[i][0] * x[0] + m_planes[i][1] * x[1] + m_planes[i][2] * x[2] + m_planes[i][3] < 0.0f)
@@ -417,7 +417,7 @@ bool KX_Camera::PointInsideFrustum(const MT_Point3& x)
int KX_Camera::BoxInsideFrustum(const MT_Point3 *box)
{
ExtractClipPlanes();
-
+
unsigned int insideCount = 0;
// 6 view frustum planes
for ( unsigned int p = 0; p < 6 ; p++ )
@@ -429,7 +429,7 @@ int KX_Camera::BoxInsideFrustum(const MT_Point3 *box)
if (m_planes[p][0] * box[v][0] + m_planes[p][1] * box[v][1] + m_planes[p][2] * box[v][2] + m_planes[p][3] < 0.0f)
behindCount++;
}
-
+
// 8 points behind this plane
if (behindCount == 8)
return OUTSIDE;
@@ -438,11 +438,11 @@ int KX_Camera::BoxInsideFrustum(const MT_Point3 *box)
if (!behindCount)
insideCount++;
}
-
+
// All box vertices are on the front side of all frustum planes.
if (insideCount == 6)
return INSIDE;
-
+
return INTERSECT;
}
@@ -455,7 +455,7 @@ int KX_Camera::SphereInsideFrustum(const MT_Point3& center, const MT_Scalar &rad
unsigned int p;
ExtractClipPlanes();
NormalizeClipPlanes();
-
+
MT_Scalar distance;
int intersect = INSIDE;
// distance: <-------- OUTSIDE -----|----- INTERSECT -----0----- INTERSECT -----|----- INSIDE -------->
@@ -468,7 +468,7 @@ int KX_Camera::SphereInsideFrustum(const MT_Point3& center, const MT_Scalar &rad
else if (distance < -radius)
return OUTSIDE;
}
-
+
return intersect;
}
@@ -476,7 +476,7 @@ bool KX_Camera::GetFrustumCulling() const
{
return m_frustum_culling;
}
-
+
void KX_Camera::EnableViewport(bool viewport)
{
InvalidateProjectionMatrix(false); // We need to reset projection matrix
@@ -536,10 +536,10 @@ PyMethodDef KX_Camera::Methods[] = {
};
PyAttributeDef KX_Camera::Attributes[] = {
-
+
KX_PYATTRIBUTE_BOOL_RW("frustum_culling", KX_Camera, m_frustum_culling),
KX_PYATTRIBUTE_RW_FUNCTION("perspective", KX_Camera, pyattr_get_perspective, pyattr_set_perspective),
-
+
KX_PYATTRIBUTE_RW_FUNCTION("lens", KX_Camera, pyattr_get_lens, pyattr_set_lens),
KX_PYATTRIBUTE_RW_FUNCTION("fov", KX_Camera, pyattr_get_fov, pyattr_set_fov),
KX_PYATTRIBUTE_RW_FUNCTION("ortho_scale", KX_Camera, pyattr_get_ortho_scale, pyattr_set_ortho_scale),
@@ -549,17 +549,17 @@ PyAttributeDef KX_Camera::Attributes[] = {
KX_PYATTRIBUTE_RW_FUNCTION("shift_y", KX_Camera, pyattr_get_shift_y, pyattr_set_shift_y),
KX_PYATTRIBUTE_RW_FUNCTION("useViewport", KX_Camera, pyattr_get_use_viewport, pyattr_set_use_viewport),
-
+
KX_PYATTRIBUTE_RW_FUNCTION("projection_matrix", KX_Camera, pyattr_get_projection_matrix, pyattr_set_projection_matrix),
KX_PYATTRIBUTE_RO_FUNCTION("modelview_matrix", KX_Camera, pyattr_get_modelview_matrix),
KX_PYATTRIBUTE_RO_FUNCTION("camera_to_world", KX_Camera, pyattr_get_camera_to_world),
KX_PYATTRIBUTE_RO_FUNCTION("world_to_camera", KX_Camera, pyattr_get_world_to_camera),
-
+
/* Grrr, functions for constants? */
KX_PYATTRIBUTE_RO_FUNCTION("INSIDE", KX_Camera, pyattr_get_INSIDE),
KX_PYATTRIBUTE_RO_FUNCTION("OUTSIDE", KX_Camera, pyattr_get_OUTSIDE),
KX_PYATTRIBUTE_RO_FUNCTION("INTERSECT", KX_Camera, pyattr_get_INTERSECT),
-
+
{ NULL } //Sentinel
};
@@ -621,7 +621,7 @@ KX_PYMETHODDEF_DOC_VARARGS(KX_Camera, sphereInsideFrustum,
}
PyErr_SetString(PyExc_TypeError, "camera.sphereInsideFrustum(center, radius): KX_Camera, expected arguments: (center, radius)");
-
+
return NULL;
}
@@ -656,7 +656,7 @@ KX_PYMETHODDEF_DOC_O(KX_Camera, boxInsideFrustum,
PyErr_Format(PyExc_TypeError, "camera.boxInsideFrustum(box): KX_Camera, expected eight (8) points, got %d", num_points);
return NULL;
}
-
+
MT_Point3 box[8];
for (unsigned int p = 0; p < 8 ; p++)
{
@@ -666,7 +666,7 @@ KX_PYMETHODDEF_DOC_O(KX_Camera, boxInsideFrustum,
if (error)
return NULL;
}
-
+
return PyLong_FromLong(BoxInsideFrustum(box)); /* new ref */
}
@@ -691,7 +691,7 @@ KX_PYMETHODDEF_DOC_O(KX_Camera, pointInsideFrustum,
{
return PyLong_FromLong(PointInsideFrustum(point)); /* new ref */
}
-
+
PyErr_SetString(PyExc_TypeError, "camera.pointInsideFrustum(point): KX_Camera, expected point argument.");
return NULL;
}
@@ -721,7 +721,7 @@ KX_PYMETHODDEF_DOC_VARARGS(KX_Camera, setViewport,
int left, bottom, right, top;
if (!PyArg_ParseTuple(args,"iiii:setViewport",&left, &bottom, &right, &top))
return NULL;
-
+
SetViewport(left, bottom, right, top);
Py_RETURN_NONE;
}
@@ -749,7 +749,7 @@ int KX_Camera::pyattr_set_perspective(void *self_v, const KX_PYATTRIBUTE_DEF *at
PyErr_SetString(PyExc_AttributeError, "camera.perspective = bool: KX_Camera, expected True/False or 0/1");
return PY_SET_ATTR_FAIL;
}
-
+
self->m_camdata.m_perspective= param;
self->InvalidateProjectionMatrix();
return PY_SET_ATTR_SUCCESS;
@@ -769,7 +769,7 @@ int KX_Camera::pyattr_set_lens(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef,
PyErr_SetString(PyExc_AttributeError, "camera.lens = float: KX_Camera, expected a float greater than zero");
return PY_SET_ATTR_FAIL;
}
-
+
self->m_camdata.m_lens= param;
self->m_set_projection_matrix = false;
return PY_SET_ATTR_SUCCESS;
@@ -798,7 +798,7 @@ int KX_Camera::pyattr_set_fov(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, P
fov *= MT_RADS_PER_DEG;
float width = self->m_camdata.m_sensor_x;
float lens = width / (2.0f * tanf(0.5f * fov));
-
+
self->m_camdata.m_lens= lens;
self->m_set_projection_matrix = false;
return PY_SET_ATTR_SUCCESS;
@@ -818,7 +818,7 @@ int KX_Camera::pyattr_set_ortho_scale(void *self_v, const KX_PYATTRIBUTE_DEF *at
PyErr_SetString(PyExc_AttributeError, "camera.ortho_scale = float: KX_Camera, expected a float greater than zero");
return PY_SET_ATTR_FAIL;
}
-
+
self->m_camdata.m_scale= param;
self->m_set_projection_matrix = false;
return PY_SET_ATTR_SUCCESS;
@@ -838,7 +838,7 @@ int KX_Camera::pyattr_set_near(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef,
PyErr_SetString(PyExc_AttributeError, "camera.near = float: KX_Camera, expected a float greater than zero");
return PY_SET_ATTR_FAIL;
}
-
+
self->m_camdata.m_clipstart= param;
self->m_set_projection_matrix = false;
return PY_SET_ATTR_SUCCESS;
@@ -858,7 +858,7 @@ int KX_Camera::pyattr_set_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, P
PyErr_SetString(PyExc_AttributeError, "camera.far = float: KX_Camera, expected a float greater than zero");
return PY_SET_ATTR_FAIL;
}
-
+
self->m_camdata.m_clipend= param;
self->m_set_projection_matrix = false;
return PY_SET_ATTR_SUCCESS;
@@ -926,16 +926,16 @@ int KX_Camera::pyattr_set_use_viewport(void *self_v, const KX_PYATTRIBUTE_DEF *a
PyObject *KX_Camera::pyattr_get_projection_matrix(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
KX_Camera* self = static_cast<KX_Camera*>(self_v);
- return PyObjectFrom(self->GetProjectionMatrix());
+ return PyObjectFrom(self->GetProjectionMatrix());
}
int KX_Camera::pyattr_set_projection_matrix(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
{
KX_Camera* self = static_cast<KX_Camera*>(self_v);
MT_Matrix4x4 mat;
- if (!PyMatTo(value, mat))
+ if (!PyMatTo(value, mat))
return PY_SET_ATTR_FAIL;
-
+
self->SetProjectionMatrix(mat);
return PY_SET_ATTR_SUCCESS;
}
@@ -955,7 +955,7 @@ PyObject *KX_Camera::pyattr_get_camera_to_world(void *self_v, const KX_PYATTRIBU
PyObject *KX_Camera::pyattr_get_world_to_camera(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
KX_Camera* self = static_cast<KX_Camera*>(self_v);
- return PyObjectFrom(self->GetWorldToCamera());
+ return PyObjectFrom(self->GetWorldToCamera());
}
@@ -974,10 +974,10 @@ bool ConvertPythonToCamera(PyObject *value, KX_Camera **object, bool py_none_ok,
*object = NULL;
return false;
}
-
+
if (value==Py_None) {
*object = NULL;
-
+
if (py_none_ok) {
return true;
} else {
@@ -985,11 +985,11 @@ bool ConvertPythonToCamera(PyObject *value, KX_Camera **object, bool py_none_ok,
return false;
}
}
-
+
if (PyUnicode_Check(value)) {
STR_String value_str = _PyUnicode_AsString(value);
*object = KX_GetActiveScene()->FindCamera(value_str);
-
+
if (*object) {
return true;
} else {
@@ -999,27 +999,27 @@ bool ConvertPythonToCamera(PyObject *value, KX_Camera **object, bool py_none_ok,
return false;
}
}
-
+
if (PyObject_TypeCheck(value, &KX_Camera::Type)) {
*object = static_cast<KX_Camera*>BGE_PROXY_REF(value);
-
+
/* sets the error */
if (*object==NULL) {
PyErr_Format(PyExc_SystemError, "%s, " BGE_PROXY_ERROR_MSG, error_prefix);
return false;
}
-
+
return true;
}
-
+
*object = NULL;
-
+
if (py_none_ok) {
PyErr_Format(PyExc_TypeError, "%s, expect a KX_Camera, a string or None", error_prefix);
} else {
PyErr_Format(PyExc_TypeError, "%s, expect a KX_Camera or a string", error_prefix);
}
-
+
return false;
}