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
|
||||
|
||||
.. attribute:: shift_x
|
||||
|
||||
The camera's horizontal shift.
|
||||
|
||||
:type: float
|
||||
|
||||
.. attribute:: shift_y
|
||||
|
||||
The camera's vertical shift.
|
||||
|
||||
:type: float
|
||||
|
||||
.. attribute:: perspective
|
||||
|
||||
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("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("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),
|
||||
|
||||
@ -862,6 +864,45 @@ int KX_Camera::pyattr_set_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, P
|
||||
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)
|
||||
{
|
||||
|
@ -310,6 +310,10 @@ public:
|
||||
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 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 int pyattr_set_use_viewport(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
|
||||
|
Loading…
Reference in New Issue
Block a user