From 12315f4d0e0ae993805f141f64cb8c73c5297311 Mon Sep 17 00:00:00 2001 From: Hans Lambermont Date: Sat, 12 Oct 2002 11:37:38 +0000 Subject: Initial revision --- source/gameengine/Ketsji/KX_IpoActuator.h | 141 ++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 source/gameengine/Ketsji/KX_IpoActuator.h (limited to 'source/gameengine/Ketsji/KX_IpoActuator.h') diff --git a/source/gameengine/Ketsji/KX_IpoActuator.h b/source/gameengine/Ketsji/KX_IpoActuator.h new file mode 100644 index 00000000000..134de3817b4 --- /dev/null +++ b/source/gameengine/Ketsji/KX_IpoActuator.h @@ -0,0 +1,141 @@ +/** + * Do an object ipo + * + * $Id$ + * + * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. The Blender + * Foundation also sells licenses for use in proprietary software under + * the Blender License. See http://www.blender.org/BL/ for information + * about this. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL/BL DUAL LICENSE BLOCK ***** + */ + +#ifndef __KX_IPOACTUATOR +#define __KX_IPOACTUATOR + +#include "SCA_IActuator.h" + +class KX_IpoActuator : public SCA_IActuator +{ + Py_Header; + + bool m_bNegativeEvent; + + /** Begin frame of the ipo. */ + float m_starttime; + + /** End frame of the ipo. */ + float m_endtime; + + /** Include children in the transforms? */ + bool m_recurse; + + /** Current active frame of the ipo. */ + float m_localtime; + + /** play backwards or forwards? (positive means forward). */ + float m_direction; + + /** Name of the property (only used in from_prop mode). */ + STR_String m_propname; + + /** Interpret the ipo as a force? */ + bool m_ipo_as_force; + + /** Apply a force-ipo locally? */ + bool m_force_ipo_local; + +public: + enum IpoActType + { + KX_ACT_IPO_NODEF = 0, + KX_ACT_IPO_PLAY, + KX_ACT_IPO_PINGPONG, + KX_ACT_IPO_FLIPPER, + KX_ACT_IPO_LOOPSTOP, + KX_ACT_IPO_LOOPEND, + KX_ACT_IPO_KEY2KEY, + KX_ACT_IPO_FROM_PROP, + KX_ACT_IPO_MAX + }; + + static STR_String S_KX_ACT_IPO_PLAY_STRING; + static STR_String S_KX_ACT_IPO_PINGPONG_STRING; + static STR_String S_KX_ACT_IPO_FLIPPER_STRING; + static STR_String S_KX_ACT_IPO_LOOPSTOP_STRING; + static STR_String S_KX_ACT_IPO_LOOPEND_STRING; + static STR_String S_KX_ACT_IPO_KEY2KEY_STRING; + static STR_String S_KX_ACT_IPO_FROM_PROP_STRING; + + IpoActType string2mode(char* modename); + + IpoActType m_type; + + KX_IpoActuator(SCA_IObject* gameobj, + const STR_String& propname, + float starttime, + float endtime, + bool recurse, + int acttype, + bool ipo_as_force, + bool force_ipo_local, + PyTypeObject* T=&Type); + virtual ~KX_IpoActuator() {}; + + virtual CValue* GetReplica() { + KX_IpoActuator* replica = new KX_IpoActuator(*this);//m_float,GetName()); + replica->ProcessReplica(); + // this will copy properties and so on... + CValue::AddDataToReplica(replica); + return replica; + }; + + void SetStart(float starttime); + void SetEnd(float endtime); + virtual bool Update(double curtime,double deltatime); + + /* --------------------------------------------------------------------- */ + /* Python interface ---------------------------------------------------- */ + /* --------------------------------------------------------------------- */ + + virtual PyObject* _getattr(char *attr); + //KX_PYMETHOD_DOC + KX_PYMETHOD_DOC(KX_IpoActuator,Set); + KX_PYMETHOD_DOC(KX_IpoActuator,SetProperty); +/* KX_PYMETHOD_DOC(KX_IpoActuator,SetKey2Key); */ + KX_PYMETHOD_DOC(KX_IpoActuator,SetStart); + KX_PYMETHOD_DOC(KX_IpoActuator,GetStart); + KX_PYMETHOD_DOC(KX_IpoActuator,SetEnd); + KX_PYMETHOD_DOC(KX_IpoActuator,GetEnd); + KX_PYMETHOD_DOC(KX_IpoActuator,SetIpoAsForce); + KX_PYMETHOD_DOC(KX_IpoActuator,GetIpoAsForce); + KX_PYMETHOD_DOC(KX_IpoActuator,SetType); + KX_PYMETHOD_DOC(KX_IpoActuator,GetType); + KX_PYMETHOD_DOC(KX_IpoActuator,SetForceIpoActsLocal); + KX_PYMETHOD_DOC(KX_IpoActuator,GetForceIpoActsLocal); + +}; + +#endif //__KX_IPOACTUATOR -- cgit v1.2.3