fixed spacing in the headers to get rid of some warnings and some other
[blender.git] / source / gameengine / Ketsji / KX_CameraActuator.h
1 /**
2  * KX_CameraActuator.h
3  *
4  * $Id$
5  *
6  * ***** BEGIN GPL/BL DUAL 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. The Blender
12  * Foundation also sells licenses for use in proprietary software under
13  * the Blender License.  See http://www.blender.org/BL/ for information
14  * about this.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software Foundation,
23  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24  *
25  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
26  * All rights reserved.
27  *
28  * The Original Code is: all of this file.
29  *
30  * Contributor(s): none yet.
31  *
32  * ***** END GPL/BL DUAL LICENSE BLOCK *****
33  */
34
35 #ifndef __KX_CAMERAACTUATOR
36 #define __KX_CAMERAACTUATOR
37
38 #include "SCA_IActuator.h"
39 #include "MT_Scalar.h"
40
41
42 /**
43  * The camera actuator does a Robbie Muller prespective for you. This is a 
44  * weird set of rules that positions the camera sort of behind the object,
45  * tracking, while avoiding any objects between the 'ideal' position and the
46  * actor being tracked.
47  */
48
49
50 class KX_CameraActuator : public SCA_IActuator
51 {
52
53 private :
54         Py_Header;
55         
56         /** Object that will be tracked. */
57         const CValue *m_ob;
58
59         /** height (float), */
60         const MT_Scalar m_height;
61         
62         /** min (float), */
63         const MT_Scalar m_minHeight;
64         
65         /** max (float), */
66         const MT_Scalar m_maxHeight;
67         
68         /** xy toggle (pick one): true == x, false == y */
69         bool m_x;
70
71         /* get the KX_IGameObject with this name */
72         CValue *findObject(char *obName);
73
74         /* parse x or y to a toggle pick */
75         bool string2axischoice(const char *axisString);
76         
77  public:
78         static STR_String X_AXIS_STRING;
79         static STR_String Y_AXIS_STRING;
80         
81         /**
82          * Set the bool toggle to true to use x lock, false for y lock
83          */
84         KX_CameraActuator(
85
86                 SCA_IObject *gameobj,
87                 const CValue *ob,
88                 MT_Scalar hght,
89                 MT_Scalar minhght,
90                 MT_Scalar maxhght,
91                 bool xytog,
92                 PyTypeObject* T=&Type
93
94         );
95
96
97         ~KX_CameraActuator();
98
99
100
101         /** Methods Inherited from  CValue */
102
103
104         CValue* GetReplica();
105         
106
107         /** Methods inherited from SCA_IActuator */
108
109
110         bool Update(
111
112                 double curtime,
113
114                 double deltatime
115
116         );
117
118
119         /* --------------------------------------------------------------------- */
120         /* Python interface ---------------------------------------------------- */
121         /* --------------------------------------------------------------------- */
122
123         virtual PyObject*  _getattr(char *attr);
124
125         
126
127 };
128
129 #endif //__KX_CAMERAACTUATOR
130