forked from bartvdbraak/blender
Game Engine: Camera Lens Shift: support to change it during game
This commit is contained in:
parent
145d3540b3
commit
fdb474fc8a
@ -51,6 +51,18 @@ base class --- :class:`KX_GameObject`
|
|||||||
|
|
||||||
:type: float
|
:type: float
|
||||||
|
|
||||||
|
.. attribute:: shift_x
|
||||||
|
|
||||||
|
The camera's horizontal shift.
|
||||||
|
|
||||||
|
:type: float
|
||||||
|
|
||||||
|
.. attribute:: shift_y
|
||||||
|
|
||||||
|
The camera's vertical shift.
|
||||||
|
|
||||||
|
:type: float
|
||||||
|
|
||||||
.. attribute:: perspective
|
.. attribute:: perspective
|
||||||
|
|
||||||
True if this camera has a perspective transform, False for an orthographic projection.
|
True if this camera has a perspective transform, False for an orthographic projection.
|
||||||
|
@ -545,6 +545,8 @@ PyAttributeDef KX_Camera::Attributes[] = {
|
|||||||
KX_PYATTRIBUTE_RW_FUNCTION("ortho_scale", KX_Camera, pyattr_get_ortho_scale, pyattr_set_ortho_scale),
|
KX_PYATTRIBUTE_RW_FUNCTION("ortho_scale", KX_Camera, pyattr_get_ortho_scale, pyattr_set_ortho_scale),
|
||||||
KX_PYATTRIBUTE_RW_FUNCTION("near", KX_Camera, pyattr_get_near, pyattr_set_near),
|
KX_PYATTRIBUTE_RW_FUNCTION("near", KX_Camera, pyattr_get_near, pyattr_set_near),
|
||||||
KX_PYATTRIBUTE_RW_FUNCTION("far", KX_Camera, pyattr_get_far, pyattr_set_far),
|
KX_PYATTRIBUTE_RW_FUNCTION("far", KX_Camera, pyattr_get_far, pyattr_set_far),
|
||||||
|
KX_PYATTRIBUTE_RW_FUNCTION("shift_x", KX_Camera, pyattr_get_shift_x, pyattr_set_shift_x),
|
||||||
|
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("useViewport", KX_Camera, pyattr_get_use_viewport, pyattr_set_use_viewport),
|
||||||
|
|
||||||
@ -862,6 +864,45 @@ int KX_Camera::pyattr_set_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, P
|
|||||||
return PY_SET_ATTR_SUCCESS;
|
return PY_SET_ATTR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PyObject *KX_Camera::pyattr_get_shift_x(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||||
|
{
|
||||||
|
KX_Camera* self = static_cast<KX_Camera*>(self_v);
|
||||||
|
return PyFloat_FromDouble(self->m_camdata.m_shift_x);
|
||||||
|
}
|
||||||
|
|
||||||
|
int KX_Camera::pyattr_set_shift_x(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
|
||||||
|
{
|
||||||
|
KX_Camera* self = static_cast<KX_Camera*>(self_v);
|
||||||
|
float param = PyFloat_AsDouble(value);
|
||||||
|
if (param == -1) {
|
||||||
|
PyErr_SetString(PyExc_AttributeError, "camera.shift_x = float: KX_Camera, expected a float greater than zero");
|
||||||
|
return PY_SET_ATTR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
self->m_camdata.m_shift_x = param;
|
||||||
|
self->m_set_projection_matrix = false;
|
||||||
|
return PY_SET_ATTR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
PyObject *KX_Camera::pyattr_get_shift_y(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||||
|
{
|
||||||
|
KX_Camera* self = static_cast<KX_Camera*>(self_v);
|
||||||
|
return PyFloat_FromDouble(self->m_camdata.m_shift_y);
|
||||||
|
}
|
||||||
|
|
||||||
|
int KX_Camera::pyattr_set_shift_y(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
|
||||||
|
{
|
||||||
|
KX_Camera* self = static_cast<KX_Camera*>(self_v);
|
||||||
|
float param = PyFloat_AsDouble(value);
|
||||||
|
if (param == -1) {
|
||||||
|
PyErr_SetString(PyExc_AttributeError, "camera.shift_y = float: KX_Camera, expected a float greater than zero");
|
||||||
|
return PY_SET_ATTR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
self->m_camdata.m_shift_y = param;
|
||||||
|
self->m_set_projection_matrix = false;
|
||||||
|
return PY_SET_ATTR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
PyObject *KX_Camera::pyattr_get_use_viewport(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
PyObject *KX_Camera::pyattr_get_use_viewport(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
|
||||||
{
|
{
|
||||||
|
@ -310,6 +310,10 @@ public:
|
|||||||
static int pyattr_set_near(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
|
static int pyattr_set_near(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
|
||||||
static PyObject* pyattr_get_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
static PyObject* pyattr_get_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||||
static int pyattr_set_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
|
static int pyattr_set_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
|
||||||
|
static PyObject* pyattr_get_shift_x(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||||
|
static int pyattr_set_shift_x(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
|
||||||
|
static PyObject* pyattr_get_shift_y(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||||
|
static int pyattr_set_shift_y(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
|
||||||
|
|
||||||
static PyObject* pyattr_get_use_viewport(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
static PyObject* pyattr_get_use_viewport(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
|
||||||
static int pyattr_set_use_viewport(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
|
static int pyattr_set_use_viewport(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
|
||||||
|
Loading…
Reference in New Issue
Block a user