diff options
author | Nick Samarin <nicks1987@bigmir.net> | 2010-06-01 02:35:22 +0400 |
---|---|---|
committer | Nick Samarin <nicks1987@bigmir.net> | 2010-06-01 02:35:22 +0400 |
commit | 05b92f0fc90b5f2cd5d933f97df20c774b42479f (patch) | |
tree | 2f3870936365c1c727e19e2a44891d323d57b0dc /source/gameengine/Ketsji/KX_SteeringActuator.h | |
parent | d7a701c2c5ffbe9313431c6367a264e54136accb (diff) |
Added new actuator type for following steering behaviors: seek, flee, path following; renamed KX_Pathfinder to KX_NavMeshObject
Diffstat (limited to 'source/gameengine/Ketsji/KX_SteeringActuator.h')
-rw-r--r-- | source/gameengine/Ketsji/KX_SteeringActuator.h | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/source/gameengine/Ketsji/KX_SteeringActuator.h b/source/gameengine/Ketsji/KX_SteeringActuator.h new file mode 100644 index 00000000000..fce2205ca6e --- /dev/null +++ b/source/gameengine/Ketsji/KX_SteeringActuator.h @@ -0,0 +1,95 @@ +/** +* Add steering behaviors +* +* +* $Id$ +* +* ***** BEGIN GPL 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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 LICENSE BLOCK ***** +*/ + +#ifndef __KX_STEERINGACTUATOR +#define __KX_STEERINGACTUATOR + +#include "SCA_IActuator.h" +#include "SCA_LogicManager.h" + +class KX_GameObject; +class KX_NavMeshObject; + +class KX_SteeringActuator : public SCA_IActuator +{ + Py_Header; + + /** Target object */ + KX_GameObject *m_target; + KX_NavMeshObject *m_navmesh; + + int m_mode; + MT_Scalar m_distance; + MT_Scalar m_movement; +public: + enum KX_STEERINGACT_MODE + { + KX_STEERING_NODEF = 0, + KX_STEERING_SEEK, + KX_STEERING_FLEE, + KX_STEERING_PATHFOLLOWING, + KX_STEERING_MAX + }; + + KX_SteeringActuator(class SCA_IObject* gameobj, + int mode, + KX_GameObject *target, + KX_GameObject *navmesh, + MT_Scalar movement, + MT_Scalar distance); + virtual ~KX_SteeringActuator(); + virtual bool Update(); + + virtual CValue* GetReplica(); + virtual void ProcessReplica(); + virtual void Relink(GEN_Map<GEN_HashedPtr, void*> *obj_map); + virtual bool UnlinkObject(SCA_IObject* clientobj); + +#ifndef DISABLE_PYTHON + + /* --------------------------------------------------------------------- */ + /* Python interface ---------------------------------------------------- */ + /* --------------------------------------------------------------------- */ + + /* These are used to get and set m_target */ + static PyObject* pyattr_get_target(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef); + static int pyattr_set_target(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); + +#endif // DISABLE_PYTHON + +}; /* end of class KX_SteeringActuator : public SCA_PropertyActuator */ + +#endif + |