whitespace edits
[blender-staging.git] / source / gameengine / Ketsji / KX_TrackToActuator.h
1 // $Id$
2 //
3 // ***** BEGIN GPL LICENSE BLOCK *****
4 //
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 //
19 // The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
20 // All rights reserved.
21 //
22 // The Original Code is: all of this file.
23 //
24 // Contributor(s): none yet.
25 //
26 // ***** END GPL LICENSE BLOCK *****
27 //
28
29 /** \file KX_TrackToActuator.h
30  *  \ingroup ketsji
31  */
32
33 #ifndef __KX_TrackToActuator
34 #define __KX_TrackToActuator
35
36 #include "SCA_IActuator.h"
37 #include "SCA_IObject.h"
38 #include "MT_Matrix3x3.h"
39 #include "KX_GameObject.h"
40
41
42 class KX_TrackToActuator : public SCA_IActuator
43 {
44         Py_Header;
45         // Object reference. Actually, we use the object's 'life'
46         SCA_IObject*    m_object;
47         // 3d toggle
48         bool m_allow3D;
49         // time field
50         int m_time;
51         int     m_trackTime;
52         int     m_trackflag;
53         int m_upflag;
54         
55         MT_Matrix3x3 m_parentlocalmat;
56         KX_GameObject* m_parentobj;
57
58   public:
59         KX_TrackToActuator(SCA_IObject* gameobj, SCA_IObject *ob, int time,
60                            bool threedee,int trackflag,int upflag);
61         virtual ~KX_TrackToActuator();
62         virtual CValue* GetReplica() {
63                 KX_TrackToActuator* replica = new KX_TrackToActuator(*this);
64                 replica->ProcessReplica();
65                 return replica;
66         };
67
68         virtual void ProcessReplica();
69         virtual bool UnlinkObject(SCA_IObject* clientobj);
70         virtual void Relink(CTR_Map<CTR_HashedPtr, void*> *obj_map);
71         virtual bool Update(double curtime, bool frame);
72
73 #ifdef WITH_PYTHON
74
75         /* Python part */
76
77         /* These are used to get and set m_ob */
78         static PyObject* pyattr_get_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
79         static int pyattr_set_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
80         
81 #endif // WITH_PYTHON
82
83 }; /* end of class KX_TrackToActuator : public KX_EditObjectActuator */
84
85 #endif
86