doxygen: prevent GPL license block from being parsed as doxygen comment.
[blender.git] / source / gameengine / Ketsji / KX_CameraActuator.h
1 /*
2  * KX_CameraActuator.h
3  *
4  * $Id$
5  *
6  * ***** BEGIN GPL LICENSE BLOCK *****
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21  *
22  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
23  * All rights reserved.
24  *
25  * The Original Code is: all of this file.
26  *
27  * Contributor(s): none yet.
28  *
29  * ***** END GPL LICENSE BLOCK *****
30  */
31
32 /** \file KX_CameraActuator.h
33  *  \ingroup ketsji
34  */
35
36 #ifndef __KX_CAMERAACTUATOR
37 #define __KX_CAMERAACTUATOR
38
39 #include "SCA_IActuator.h"
40 #include "MT_Scalar.h"
41 #include "SCA_LogicManager.h"
42
43 /**
44  * The camera actuator does a Robbie Muller prespective for you. This is a 
45  * weird set of rules that positions the camera sort of behind the object,
46  * tracking, while avoiding any objects between the 'ideal' position and the
47  * actor being tracked.
48  */
49
50
51 class KX_CameraActuator : public SCA_IActuator
52 {
53         Py_Header;
54 private :
55         /** Object that will be tracked. */
56         SCA_IObject *m_ob;
57
58         /** height (float), */
59         //const MT_Scalar m_height;
60         /** min (float), */
61         //const MT_Scalar m_minHeight;
62         /** max (float), */
63         //const MT_Scalar m_maxHeight;
64         
65         /** height (float), */
66         float m_height;
67         
68         /** min (float), */
69         float m_minHeight;
70         
71         /** max (float), */
72         float m_maxHeight;
73         
74         /** xy toggle (pick one): true == x, false == y */
75         bool m_x;
76
77         /* get the KX_IGameObject with this name */
78         CValue *findObject(char *obName);
79
80         /* parse x or y to a toggle pick */
81         bool string2axischoice(const char *axisString);
82         
83  public:
84         static STR_String X_AXIS_STRING;
85         static STR_String Y_AXIS_STRING;
86         
87         /**
88          * Set the bool toggle to true to use x lock, false for y lock
89          */
90         KX_CameraActuator(
91
92                 SCA_IObject *gameobj,
93                 //const CValue *ob,
94                 SCA_IObject *ob,
95                 float hght,
96                 float minhght,
97                 float maxhght,
98                 bool xytog
99         );
100
101
102         ~KX_CameraActuator();
103
104
105
106         /** Methods Inherited from  CValue */
107         CValue* GetReplica();
108         virtual void ProcessReplica();
109         
110
111         /** Methods inherited from SCA_IActuator */
112         virtual bool Update(
113                 double curtime,
114                 bool frame
115         );
116         virtual bool    UnlinkObject(SCA_IObject* clientobj);
117
118         /** Methods inherited from SCA_ILogicBrick */
119         virtual void    Relink(GEN_Map<GEN_HashedPtr, void*> *obj_map);
120
121 #ifdef WITH_PYTHON
122
123         /* --------------------------------------------------------------------- */
124         /* Python interface ---------------------------------------------------- */
125         /* --------------------------------------------------------------------- */
126
127         /* set object to look at */
128         static PyObject*        pyattr_get_object(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
129         static int                      pyattr_set_object(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
130
131 #endif // WITH_PYTHON
132
133 };
134
135 #endif //__KX_CAMERAACTUATOR
136