903413ca89bcf49aabaa5bc50e35b990b5137f4d
[blender.git] / source / gameengine / Ketsji / KX_RadarSensor.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 /** \file KX_RadarSensor.h
29  *  \ingroup ketsji
30  */
31
32 #ifndef __KX_RADARSENSOR_H__
33 #define __KX_RADARSENSOR_H__
34
35 #include "KX_NearSensor.h"
36 #include "MT_Point3.h"
37
38 /**
39  * Radar 'cone' sensor. Very similar to a near-sensor, but instead of a sphere, a cone is used.
40  */
41 class KX_RadarSensor : public KX_NearSensor
42 {
43  protected:
44         Py_Header
45                 
46         float           m_coneradius;
47
48         /**
49          * Height of the cone.
50          */
51         float           m_coneheight;
52         int                             m_axis;
53
54         /**
55          * The previous position of the origin of the cone.
56          */
57         float       m_cone_origin[3];
58
59         /**
60          * The previous direction of the cone (origin to bottom plane).
61          */
62         float       m_cone_target[3];
63         
64 public:
65
66         KX_RadarSensor(SCA_EventManager* eventmgr,
67                 KX_GameObject* gameobj,
68                         PHY_IPhysicsController* physCtrl,
69                         double coneradius,
70                         double coneheight,
71                         int     axis,
72                         double margin,
73                         double resetmargin,
74                         bool bFindMaterial,
75                         const STR_String& touchedpropname);
76         KX_RadarSensor();
77         virtual ~KX_RadarSensor();
78         virtual void SynchronizeTransform();
79         virtual CValue* GetReplica();
80
81         /* --------------------------------------------------------------------- */
82         /* Python interface ---------------------------------------------------- */
83         /* --------------------------------------------------------------------- */
84         enum RadarAxis {
85                 KX_RADAR_AXIS_POS_X = 0,
86                 KX_RADAR_AXIS_POS_Y,
87                 KX_RADAR_AXIS_POS_Z,
88                 KX_RADAR_AXIS_NEG_X,
89                 KX_RADAR_AXIS_NEG_Y,
90                 KX_RADAR_AXIS_NEG_Z
91         };
92
93         /* python */
94         virtual sensortype GetSensorType() { return ST_RADAR; }
95
96 };
97
98 #endif //__KX_RADARSENSOR_H__
99