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/Converter/BL_ShapeActionActuator.cpp')
-rw-r--r--source/gameengine/Converter/BL_ShapeActionActuator.cpp396
1 files changed, 10 insertions, 386 deletions
diff --git a/source/gameengine/Converter/BL_ShapeActionActuator.cpp b/source/gameengine/Converter/BL_ShapeActionActuator.cpp
index 4af9a6c83a9..81ce9ff6154 100644
--- a/source/gameengine/Converter/BL_ShapeActionActuator.cpp
+++ b/source/gameengine/Converter/BL_ShapeActionActuator.cpp
@@ -40,6 +40,7 @@
#include "STR_HashedString.h"
#include "DNA_nla_types.h"
#include "DNA_action_types.h"
+#include "DNA_anim_types.h"
#include "DNA_scene_types.h"
#include "BKE_action.h"
#include "DNA_armature_types.h"
@@ -51,6 +52,10 @@
#include "FloatValue.h"
#include "PyObjectPlus.h"
+extern "C" {
+ #include "BKE_animsys.h"
+}
+
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
@@ -370,8 +375,11 @@ bool BL_ShapeActionActuator::Update(double curtime, bool frame)
m_blendstart = curtime;
}
// only interested in shape channel
- // XXX extract_ipochannels_from_action(&tchanbase, &key->id, m_action, "Shape", m_localtime);
-
+
+ // in 2.4x was // extract_ipochannels_from_action(&tchanbase, &key->id, m_action, "Shape", m_localtime);
+ BKE_animsys_evaluate_animdata(&key->id, key->adt, m_localtime, ADT_RECALC_ANIM);
+
+ // XXX - in 2.5 theres no way to do this. possibly not that important to support - Campbell
if (0) { // XXX !execute_ipochannels(&tchanbase)) {
// no update, this is possible if action does not match the keys, stop the action
keepgoing = false;
@@ -434,26 +442,6 @@ PyTypeObject BL_ShapeActionActuator::Type = {
PyMethodDef BL_ShapeActionActuator::Methods[] = {
- {"setAction", (PyCFunction) BL_ShapeActionActuator::sPySetAction, METH_VARARGS, (const char *)SetAction_doc},
- {"setStart", (PyCFunction) BL_ShapeActionActuator::sPySetStart, METH_VARARGS, (const char *)SetStart_doc},
- {"setEnd", (PyCFunction) BL_ShapeActionActuator::sPySetEnd, METH_VARARGS, (const char *)SetEnd_doc},
- {"setBlendin", (PyCFunction) BL_ShapeActionActuator::sPySetBlendin, METH_VARARGS, (const char *)SetBlendin_doc},
- {"setPriority", (PyCFunction) BL_ShapeActionActuator::sPySetPriority, METH_VARARGS, (const char *)SetPriority_doc},
- {"setFrame", (PyCFunction) BL_ShapeActionActuator::sPySetFrame, METH_VARARGS, (const char *)SetFrame_doc},
- {"setProperty", (PyCFunction) BL_ShapeActionActuator::sPySetProperty, METH_VARARGS, (const char *)SetProperty_doc},
- {"setFrameProperty", (PyCFunction) BL_ShapeActionActuator::sPySetFrameProperty, METH_VARARGS, (const char *)SetFrameProperty_doc},
- {"setBlendtime", (PyCFunction) BL_ShapeActionActuator::sPySetBlendtime, METH_VARARGS, (const char *)SetBlendtime_doc},
-
- {"getAction", (PyCFunction) BL_ShapeActionActuator::sPyGetAction, METH_NOARGS, (const char *)GetAction_doc},
- {"getStart", (PyCFunction) BL_ShapeActionActuator::sPyGetStart, METH_NOARGS, (const char *)GetStart_doc},
- {"getEnd", (PyCFunction) BL_ShapeActionActuator::sPyGetEnd, METH_NOARGS, (const char *)GetEnd_doc},
- {"getBlendin", (PyCFunction) BL_ShapeActionActuator::sPyGetBlendin, METH_NOARGS, (const char *)GetBlendin_doc},
- {"getPriority", (PyCFunction) BL_ShapeActionActuator::sPyGetPriority, METH_NOARGS, (const char *)GetPriority_doc},
- {"getFrame", (PyCFunction) BL_ShapeActionActuator::sPyGetFrame, METH_NOARGS, (const char *)GetFrame_doc},
- {"getProperty", (PyCFunction) BL_ShapeActionActuator::sPyGetProperty, METH_NOARGS, (const char *)GetProperty_doc},
- {"getFrameProperty", (PyCFunction) BL_ShapeActionActuator::sPyGetFrameProperty, METH_NOARGS, (const char *)GetFrameProperty_doc},
- {"getType", (PyCFunction) BL_ShapeActionActuator::sPyGetType, METH_NOARGS, (const char *)GetType_doc},
- {"setType", (PyCFunction) BL_ShapeActionActuator::sPySetType, METH_NOARGS, (const char *)SetType_doc},
{NULL,NULL} //Sentinel
};
@@ -471,370 +459,6 @@ PyAttributeDef BL_ShapeActionActuator::Attributes[] = {
{ NULL } //Sentinel
};
-/* setStart */
-const char BL_ShapeActionActuator::GetAction_doc[] =
-"getAction()\n"
-"\tReturns a string containing the name of the current action.\n";
-
-PyObject* BL_ShapeActionActuator::PyGetAction() {
- ShowDeprecationWarning("getAction()", "the action property");
- if (m_action){
- return PyUnicode_FromString(m_action->id.name+2);
- }
- Py_RETURN_NONE;
-}
-
-/* getProperty */
-const char BL_ShapeActionActuator::GetProperty_doc[] =
-"getProperty()\n"
-"\tReturns the name of the property to be used in FromProp mode.\n";
-
-PyObject* BL_ShapeActionActuator::PyGetProperty() {
- ShowDeprecationWarning("getProperty()", "the property property");
- PyObject *result;
-
- result = Py_BuildValue("s", (const char *)m_propname);
-
- return result;
-}
-
-/* getFrame */
-const char BL_ShapeActionActuator::GetFrame_doc[] =
-"getFrame()\n"
-"\tReturns the current frame number.\n";
-
-PyObject* BL_ShapeActionActuator::PyGetFrame() {
- ShowDeprecationWarning("getFrame()", "the frame property");
- PyObject *result;
-
- result = Py_BuildValue("f", m_localtime);
-
- return result;
-}
-
-/* getEnd */
-const char BL_ShapeActionActuator::GetEnd_doc[] =
-"getEnd()\n"
-"\tReturns the last frame of the action.\n";
-
-PyObject* BL_ShapeActionActuator::PyGetEnd() {
- ShowDeprecationWarning("getEnd()", "the end property");
- PyObject *result;
-
- result = Py_BuildValue("f", m_endframe);
-
- return result;
-}
-
-/* getStart */
-const char BL_ShapeActionActuator::GetStart_doc[] =
-"getStart()\n"
-"\tReturns the starting frame of the action.\n";
-
-PyObject* BL_ShapeActionActuator::PyGetStart() {
- ShowDeprecationWarning("getStart()", "the start property");
- PyObject *result;
-
- result = Py_BuildValue("f", m_startframe);
-
- return result;
-}
-
-/* getBlendin */
-const char BL_ShapeActionActuator::GetBlendin_doc[] =
-"getBlendin()\n"
-"\tReturns the number of interpolation animation frames to be\n"
-"\tgenerated when this actuator is triggered.\n";
-
-PyObject* BL_ShapeActionActuator::PyGetBlendin() {
- ShowDeprecationWarning("getBlendin()", "the blendin property");
- PyObject *result;
-
- result = Py_BuildValue("f", m_blendin);
-
- return result;
-}
-
-/* getPriority */
-const char BL_ShapeActionActuator::GetPriority_doc[] =
-"getPriority()\n"
-"\tReturns the priority for this actuator. Actuators with lower\n"
-"\tPriority numbers will override actuators with higher numbers.\n";
-
-PyObject* BL_ShapeActionActuator::PyGetPriority() {
- ShowDeprecationWarning("getPriority()", "the priority property");
- PyObject *result;
-
- result = Py_BuildValue("i", m_priority);
-
- return result;
-}
-
-/* setAction */
-const char BL_ShapeActionActuator::SetAction_doc[] =
-"setAction(action, (reset))\n"
-"\t - action : The name of the action to set as the current action.\n"
-"\t Should be an action with Shape channels.\n"
-"\t - reset : Optional parameter indicating whether to reset the\n"
-"\t blend timer or not. A value of 1 indicates that the\n"
-"\t timer should be reset. A value of 0 will leave it\n"
-"\t unchanged. If reset is not specified, the timer will"
-"\t be reset.\n";
-
-PyObject* BL_ShapeActionActuator::PySetAction(PyObject* args) {
- ShowDeprecationWarning("setAction()", "the action property");
- char *string;
- int reset = 1;
-
- if (PyArg_ParseTuple(args,"s|i:setAction",&string, &reset))
- {
- bAction *action;
-
- action = (bAction*)SCA_ILogicBrick::m_sCurrentLogicManager->GetActionByName(STR_String(string));
-
- if (!action){
- /* NOTE! Throw an exception or something */
- // printf ("setAction failed: Action not found\n", string);
- }
- else{
- m_action=action;
- if (reset)
- m_blendframe = 0.f;
- }
- }
- else {
- return NULL;
- }
-
- Py_RETURN_NONE;
-}
-
-/* setStart */
-const char BL_ShapeActionActuator::SetStart_doc[] =
-"setStart(start)\n"
-"\t - start : Specifies the starting frame of the animation.\n";
-
-PyObject* BL_ShapeActionActuator::PySetStart(PyObject* args) {
- ShowDeprecationWarning("setStart()", "the start property");
- float start;
-
- if (PyArg_ParseTuple(args,"f:setStart",&start))
- {
- m_startframe = start;
- }
- else {
- return NULL;
- }
-
- Py_RETURN_NONE;
-}
-
-/* setEnd */
-const char BL_ShapeActionActuator::SetEnd_doc[] =
-"setEnd(end)\n"
-"\t - end : Specifies the ending frame of the animation.\n";
-
-PyObject* BL_ShapeActionActuator::PySetEnd(PyObject* args) {
- ShowDeprecationWarning("setEnd()", "the end property");
- float end;
-
- if (PyArg_ParseTuple(args,"f:setEnd",&end))
- {
- m_endframe = end;
- }
- else {
- return NULL;
- }
-
- Py_RETURN_NONE;
-}
-
-/* setBlendin */
-const char BL_ShapeActionActuator::SetBlendin_doc[] =
-"setBlendin(blendin)\n"
-"\t - blendin : Specifies the number of frames of animation to generate\n"
-"\t when making transitions between actions.\n";
-
-PyObject* BL_ShapeActionActuator::PySetBlendin(PyObject* args) {
- ShowDeprecationWarning("setBlendin()", "the blendin property");
- float blendin;
-
- if (PyArg_ParseTuple(args,"f:setBlendin",&blendin))
- {
- m_blendin = blendin;
- }
- else {
- return NULL;
- }
-
- Py_RETURN_NONE;
-}
-
-/* setBlendtime */
-const char BL_ShapeActionActuator::SetBlendtime_doc[] =
-"setBlendtime(blendtime)\n"
-"\t - blendtime : Allows the script to directly modify the internal timer\n"
-"\t used when generating transitions between actions. This\n"
-"\t parameter must be in the range from 0.0 to 1.0.\n";
-
-PyObject* BL_ShapeActionActuator::PySetBlendtime(PyObject* args) {
- ShowDeprecationWarning("setBlendtime()", "the blendTime property");
- float blendframe;
-
- if (PyArg_ParseTuple(args,"f:setBlendtime",&blendframe))
- {
- m_blendframe = blendframe * m_blendin;
- if (m_blendframe<0.f)
- m_blendframe = 0.f;
- if (m_blendframe>m_blendin)
- m_blendframe = m_blendin;
- }
- else {
- return NULL;
- }
-
- Py_RETURN_NONE;
-}
-
-/* setPriority */
-const char BL_ShapeActionActuator::SetPriority_doc[] =
-"setPriority(priority)\n"
-"\t - priority : Specifies the new priority. Actuators will lower\n"
-"\t priority numbers will override actuators with higher\n"
-"\t numbers.\n";
-
-PyObject* BL_ShapeActionActuator::PySetPriority(PyObject* args) {
- ShowDeprecationWarning("setPriority()", "the priority property");
- int priority;
-
- if (PyArg_ParseTuple(args,"i:setPriority",&priority))
- {
- m_priority = priority;
- }
- else {
- return NULL;
- }
-
- Py_RETURN_NONE;
-}
-
-/* getProperty */
-const char BL_ShapeActionActuator::GetFrameProperty_doc[] =
-"getFrameProperty()\n"
-"\tReturns the name of the property, that is set to the current frame number.\n";
-
-PyObject* BL_ShapeActionActuator::PyGetFrameProperty() {
- ShowDeprecationWarning("getFrameProperty()", "the frameProperty property");
- PyObject *result;
-
- result = Py_BuildValue("s", (const char *)m_framepropname);
-
- return result;
-}
-
-
-/* setFrame */
-const char BL_ShapeActionActuator::SetFrame_doc[] =
-"setFrame(frame)\n"
-"\t - frame : Specifies the new current frame for the animation\n";
-
-PyObject* BL_ShapeActionActuator::PySetFrame(PyObject* args) {
- ShowDeprecationWarning("setFrame()", "the frame property");
- float frame;
-
- if (PyArg_ParseTuple(args,"f:setFrame",&frame))
- {
- m_localtime = frame;
- if (m_localtime<m_startframe)
- m_localtime=m_startframe;
- else if (m_localtime>m_endframe)
- m_localtime=m_endframe;
- }
- else {
- return NULL;
- }
-
- Py_RETURN_NONE;
-}
-
-/* setProperty */
-const char BL_ShapeActionActuator::SetProperty_doc[] =
-"setProperty(prop)\n"
-"\t - prop : A string specifying the property name to be used in\n"
-"\t FromProp playback mode.\n";
-
-PyObject* BL_ShapeActionActuator::PySetProperty(PyObject* args) {
- ShowDeprecationWarning("setProperty()", "the property property");
- char *string;
-
- if (PyArg_ParseTuple(args,"s:setProperty",&string))
- {
- m_propname = string;
- }
- else {
- return NULL;
- }
-
- Py_RETURN_NONE;
-}
-
-/* setFrameProperty */
-const char BL_ShapeActionActuator::SetFrameProperty_doc[] =
-"setFrameProperty(prop)\n"
-"\t - prop : A string specifying the property of the frame set up update.\n";
-
-PyObject* BL_ShapeActionActuator::PySetFrameProperty(PyObject* args) {
- ShowDeprecationWarning("setFrameProperty()", "the frameProperty property");
- char *string;
-
- if (PyArg_ParseTuple(args,"s:setFrameProperty",&string))
- {
- m_framepropname = string;
- }
- else {
- return NULL;
- }
-
- Py_RETURN_NONE;
-}
-
-/* getType */
-const char BL_ShapeActionActuator::GetType_doc[] =
-"getType()\n"
-"\tReturns the operation mode of the actuator.\n";
-PyObject* BL_ShapeActionActuator::PyGetType() {
- ShowDeprecationWarning("getType()", "the type property");
- return Py_BuildValue("h", m_playtype);
-}
-
-/* setType */
-const char BL_ShapeActionActuator::SetType_doc[] =
-"setType(mode)\n"
-"\t - mode: Play (0), Flipper (2), LoopStop (3), LoopEnd (4) or Property (6)\n"
-"\tSet the operation mode of the actuator.\n";
-PyObject* BL_ShapeActionActuator::PySetType(PyObject* args) {
- ShowDeprecationWarning("setType()", "the type property");
- short typeArg;
-
- if (!PyArg_ParseTuple(args, "h:setType", &typeArg)) {
- return NULL;
- }
-
- switch (typeArg) {
- case ACT_ACTION_PLAY:
- case ACT_ACTION_FLIPPER:
- case ACT_ACTION_LOOP_STOP:
- case ACT_ACTION_LOOP_END:
- case ACT_ACTION_FROM_PROP:
- m_playtype = typeArg;
- break;
- default:
- printf("Invalid type for action actuator: %d\n", typeArg); /* error */
- }
-
- Py_RETURN_NONE;
-}
-
PyObject* BL_ShapeActionActuator::pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
BL_ShapeActionActuator* self= static_cast<BL_ShapeActionActuator*>(self_v);