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