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-12-29 04:33:15 +0300
committerKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>2004-12-29 04:33:15 +0300
commitc82614be2eb04dcca48d705e013ffa86058bceaf (patch)
tree2a29da40ce5a7212c3980073c1aaf36105b5ab40 /source/gameengine
parent52c53bc2c9be8c367b94c3a5d7f55b4ff4fa316b (diff)
Python methods for camera actuators (thanks snailrose)
Diffstat (limited to 'source/gameengine')
-rw-r--r--source/gameengine/Ketsji/KX_CameraActuator.cpp160
-rw-r--r--source/gameengine/Ketsji/KX_CameraActuator.h32
-rw-r--r--source/gameengine/PyDoc/KX_CameraActuator.py77
3 files changed, 260 insertions, 9 deletions
diff --git a/source/gameengine/Ketsji/KX_CameraActuator.cpp b/source/gameengine/Ketsji/KX_CameraActuator.cpp
index 4952c1050a7..328352b70a2 100644
--- a/source/gameengine/Ketsji/KX_CameraActuator.cpp
+++ b/source/gameengine/Ketsji/KX_CameraActuator.cpp
@@ -52,7 +52,7 @@ STR_String KX_CameraActuator::Y_AXIS_STRING = "y";
KX_CameraActuator::KX_CameraActuator(
SCA_IObject* gameobj,
- const CValue *obj,
+ CValue *obj,
MT_Scalar hght,
MT_Scalar minhght,
MT_Scalar maxhght,
@@ -66,7 +66,6 @@ KX_CameraActuator::KX_CameraActuator(
m_maxHeight (maxhght),
m_x (xytog)
{
- // nothing to do
}
KX_CameraActuator::~KX_CameraActuator()
@@ -359,12 +358,169 @@ PyParentObject KX_CameraActuator::Parents[] = {
};
PyMethodDef KX_CameraActuator::Methods[] = {
+ {"setObject",(PyCFunction) KX_CameraActuator::sPySetObject, METH_VARARGS, SetObject_doc},
+ {"getObject",(PyCFunction) KX_CameraActuator::sPyGetObject, METH_NOARGS, GetObject_doc},
+ {"setMin" ,(PyCFunction) KX_CameraActuator::sPySetMin, METH_VARARGS, SetMin_doc},
+ {"getMin" ,(PyCFunction) KX_CameraActuator::sPyGetMin, METH_NOARGS, GetMin_doc},
+ {"setMax" ,(PyCFunction) KX_CameraActuator::sPySetMax, METH_VARARGS, SetMax_doc},
+ {"getMax" ,(PyCFunction) KX_CameraActuator::sPyGetMax, METH_NOARGS, GetMax_doc},
+ {"setHeight",(PyCFunction) KX_CameraActuator::sPySetHeight, METH_VARARGS, SetHeight_doc},
+ {"getHeight",(PyCFunction) KX_CameraActuator::sPyGetHeight, METH_NOARGS, GetHeight_doc},
+ {"setXY" ,(PyCFunction) KX_CameraActuator::sPySetXY, METH_VARARGS, SetXY_doc},
+ {"getXY" ,(PyCFunction) KX_CameraActuator::sPyGetXY, METH_VARARGS, GetXY_doc},
{NULL,NULL,NULL,NULL} //Sentinel
};
PyObject* KX_CameraActuator::_getattr(const STR_String& attr) {
_getattr_up(SCA_IActuator);
}
+/* get obj ---------------------------------------------------------- */
+char KX_CameraActuator::GetObject_doc[] =
+"getObject\n"
+"\tReturns the object this sensor reacts to.\n";
+PyObject* KX_CameraActuator::PyGetObject(PyObject* self,
+ PyObject* args,
+ PyObject* kwds)
+{
+ return PyString_FromString(m_ob->GetName());
+}
+/* set obj ---------------------------------------------------------- */
+char KX_CameraActuator::SetObject_doc[] =
+"setObject\n"
+"\tSets the object this sensor reacts to.\n";
+PyObject* KX_CameraActuator::PySetObject(PyObject* self,
+ PyObject* args,
+ PyObject* kwds)
+{
+
+ PyObject* gameobj;
+ if (PyArg_ParseTuple(args, "O!", &KX_GameObject::Type, &gameobj))
+ {
+ m_ob = (CValue*)gameobj;
+ Py_Return;
+ }
+ PyErr_Clear();
+
+ char* objectname;
+ if (PyArg_ParseTuple(args, "s", &objectname))
+ {
+ CValue *object = (CValue*)SCA_ILogicBrick::m_sCurrentLogicManager->GetGameObjectByName(STR_String(objectname));
+ if(object)
+ {
+ m_ob = object;
+ Py_Return;
+ }
+ }
+
+ return NULL;
+}
+/* get min ---------------------------------------------------------- */
+char KX_CameraActuator::GetMin_doc[] =
+"getMin\n"
+"\tReturns the minimum value set in the Min: field.\n";
+PyObject* KX_CameraActuator::PyGetMin(PyObject* self,
+ PyObject* args,
+ PyObject* kwds)
+{
+ return PyFloat_FromDouble(m_minHeight);
+}
+/* set min ---------------------------------------------------------- */
+char KX_CameraActuator::SetMin_doc[] =
+"setMin\n"
+"\tSets the minimum value.\n";
+PyObject* KX_CameraActuator::PySetMin(PyObject* self,
+ PyObject* args,
+ PyObject* kwds)
+{
+ float min;
+ if(PyArg_ParseTuple(args,"f", &min))
+ {
+ m_minHeight = min;
+ Py_Return;
+ }
+ return NULL;
+}
+/* get min ---------------------------------------------------------- */
+char KX_CameraActuator::GetMax_doc[] =
+"getMax\n"
+"\tReturns the maximum value set in the Max: field.\n";
+PyObject* KX_CameraActuator::PyGetMax(PyObject* self,
+ PyObject* args,
+ PyObject* kwds)
+{
+ return PyFloat_FromDouble(m_maxHeight);
+}
+/* set min ---------------------------------------------------------- */
+char KX_CameraActuator::SetMax_doc[] =
+"setMax\n"
+"\tSets the maximum value.\n";
+PyObject* KX_CameraActuator::PySetMax(PyObject* self,
+ PyObject* args,
+ PyObject* kwds)
+{
+ float max;
+ if(PyArg_ParseTuple(args,"f", &max))
+ {
+ m_maxHeight = max;
+ Py_Return;
+ }
+ return NULL;
+}
+/* get height ---------------------------------------------------------- */
+char KX_CameraActuator::GetHeight_doc[] =
+"getHeight\n"
+"\tReturns the height value set in the height: field.\n";
+PyObject* KX_CameraActuator::PyGetHeight(PyObject* self,
+ PyObject* args,
+ PyObject* kwds)
+{
+ return PyFloat_FromDouble(m_height);
+}
+/* set height ---------------------------------------------------------- */
+char KX_CameraActuator::SetHeight_doc[] =
+"setHeight\n"
+"\tSets the height value.\n";
+PyObject* KX_CameraActuator::PySetHeight(PyObject* self,
+ PyObject* args,
+ PyObject* kwds)
+{
+ float height;
+ if(PyArg_ParseTuple(args,"f", &height))
+ {
+ m_height = height;
+ Py_Return;
+ }
+ return NULL;
+}
+/* set XY ---------------------------------------------------------- */
+char KX_CameraActuator::SetXY_doc[] =
+"setXY\n"
+"\tSets axis the camera tries to get behind.\n"
+"\t1=x, 0=y\n";
+PyObject* KX_CameraActuator::PySetXY(PyObject* self,
+ PyObject* args,
+ PyObject* kwds)
+{
+ int value;
+ if(PyArg_ParseTuple(args,"i", &value))
+ {
+ m_x = value != 0;
+ Py_Return;
+ }
+ return NULL;
+}
+
+/* get XY -------------------------------------------------------------*/
+char KX_CameraActuator::GetXY_doc[] =
+"getXY\n"
+"\tGets the axis the camera tries to get behind.\n"
+"\tTrue = X, False = Y\n";
+PyObject* KX_CameraActuator::PyGetXY(PyObject* self,
+ PyObject* args,
+ PyObject* kwds)
+{
+ return PyInt_FromLong(m_x);
+}
/* eof */
diff --git a/source/gameengine/Ketsji/KX_CameraActuator.h b/source/gameengine/Ketsji/KX_CameraActuator.h
index 68bc91694e7..27d8a77b28d 100644
--- a/source/gameengine/Ketsji/KX_CameraActuator.h
+++ b/source/gameengine/Ketsji/KX_CameraActuator.h
@@ -37,6 +37,7 @@
#include "SCA_IActuator.h"
#include "MT_Scalar.h"
+#include "SCA_LogicManager.h"
/**
* The camera actuator does a Robbie Muller prespective for you. This is a
@@ -51,16 +52,23 @@ class KX_CameraActuator : public SCA_IActuator
Py_Header;
private :
/** Object that will be tracked. */
- const CValue *m_ob;
+ CValue *m_ob;
/** height (float), */
- const MT_Scalar m_height;
+ //const MT_Scalar m_height;
+ /** min (float), */
+ //const MT_Scalar m_minHeight;
+ /** max (float), */
+ //const MT_Scalar m_maxHeight;
+
+ /** height (float), */
+ MT_Scalar m_height;
/** min (float), */
- const MT_Scalar m_minHeight;
+ MT_Scalar m_minHeight;
/** max (float), */
- const MT_Scalar m_maxHeight;
+ MT_Scalar m_maxHeight;
/** xy toggle (pick one): true == x, false == y */
bool m_x;
@@ -81,7 +89,8 @@ private :
KX_CameraActuator(
SCA_IObject *gameobj,
- const CValue *ob,
+ //const CValue *ob,
+ CValue *ob,
MT_Scalar hght,
MT_Scalar minhght,
MT_Scalar maxhght,
@@ -111,8 +120,19 @@ private :
/* --------------------------------------------------------------------- */
virtual PyObject* _getattr(const STR_String& attr);
-
+ /* set object to look at */
+ KX_PYMETHOD_DOC(KX_CameraActuator,SetObject);
+ /* get current object */
+ KX_PYMETHOD_DOC(KX_CameraActuator,GetObject);
+ KX_PYMETHOD_DOC(KX_CameraActuator,SetMin);
+ KX_PYMETHOD_DOC(KX_CameraActuator,GetMin);
+ KX_PYMETHOD_DOC(KX_CameraActuator,SetMax);
+ KX_PYMETHOD_DOC(KX_CameraActuator,GetMax);
+ KX_PYMETHOD_DOC(KX_CameraActuator,SetHeight);
+ KX_PYMETHOD_DOC(KX_CameraActuator,GetHeight);
+ KX_PYMETHOD_DOC(KX_CameraActuator,SetXY);
+ KX_PYMETHOD_DOC(KX_CameraActuator,GetXY);
};
diff --git a/source/gameengine/PyDoc/KX_CameraActuator.py b/source/gameengine/PyDoc/KX_CameraActuator.py
index 236befdb1f6..032fc7338ac 100644
--- a/source/gameengine/PyDoc/KX_CameraActuator.py
+++ b/source/gameengine/PyDoc/KX_CameraActuator.py
@@ -6,6 +6,81 @@ class KX_CameraActuator(SCA_IActuator):
"""
Applies changes to a camera.
- This actuator has no python methods.
+ @author: snail
"""
+ def getObject():
+ """
+ Returns the name of the object this actuator tracks.
+
+ rtype: string
+ """
+
+ def setObject(target):
+ """
+ Sets the object this actuator tracks.
+
+ @param target: the object to track.
+ @type target: string or L{KX_GameObject}
+ """
+
+ def getMin():
+ """
+ Returns the minimum distance to target maintained by the actuator.
+
+ @rtype: float
+ """
+
+ def setMin(distance):
+ """
+ Sets the minimum distance to the target object maintained by the
+ actuator.
+
+ @param distance: The minimum distance to maintain.
+ @type distance: float
+ """
+
+ def getMax():
+ """
+ Gets the maximum distance to stay from the target object.
+
+ @rtype: float
+ """
+
+ def setMax(distance):
+ """
+ Sets the maximum distance to stay from the target object.
+
+ @param distance: The maximum distance to maintain.
+ @type distance: float
+ """
+
+ def getHeight():
+ """
+ Returns the height to stay above the target object.
+
+ @rtype: float
+ """
+
+ def setHeight(height):
+ """
+ Sets the height to stay above the target object.
+
+ @type height: float
+ @param height: The height to stay above the target object.
+ """
+
+ def setXY(xaxis):
+ """
+ Sets the axis to get behind.
+
+ @param xaxis: False to track Y axis, True to track X axis.
+ @type xaxis: boolean
+ """
+ def getXY():
+ """
+ Returns the axis this actuator is tracking.
+
+ @return: True if tracking X axis, False if tracking Y axis.
+ @rtype: boolean
+ """