svn merge ^/trunk/blender -r48658:48674
[blender.git] / source / gameengine / GameLogic / SCA_PropertySensor.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 SCA_PropertySensor.h
29  *  \ingroup gamelogic
30  *  \brief Property sensor
31  */
32
33 #ifndef __SCA_PROPERTYSENSOR_H__
34 #define __SCA_PROPERTYSENSOR_H__
35
36 #include "SCA_ISensor.h"
37
38 class SCA_PropertySensor : public SCA_ISensor
39 {
40         Py_Header
41         //class CExpression*    m_rightexpr;
42         int                             m_checktype;
43         STR_String              m_checkpropval;
44         STR_String              m_checkpropmaxval;
45         STR_String              m_checkpropname;
46         STR_String              m_previoustext;
47         bool                    m_lastresult;
48         bool                    m_recentresult;
49
50  protected:
51
52 public:
53         enum KX_PROPSENSOR_TYPE {
54                 KX_PROPSENSOR_NODEF = 0,
55                 KX_PROPSENSOR_EQUAL,
56                 KX_PROPSENSOR_NOTEQUAL,
57                 KX_PROPSENSOR_INTERVAL,
58                 KX_PROPSENSOR_CHANGED,
59                 KX_PROPSENSOR_EXPRESSION,
60                 KX_PROPSENSOR_MAX
61         };
62
63         const STR_String S_KX_PROPSENSOR_EQ_STRING;
64         
65         SCA_PropertySensor(class SCA_EventManager* eventmgr,
66                                           SCA_IObject* gameobj,
67                                           const STR_String& propname,
68                                           const STR_String& propval,
69                                           const STR_String& propmaxval,
70                                           KX_PROPSENSOR_TYPE checktype);
71
72         virtual ~SCA_PropertySensor();
73         virtual CValue* GetReplica();
74         virtual void Init();
75         bool    CheckPropertyCondition();
76
77         virtual bool Evaluate();
78         virtual bool    IsPositiveTrigger();
79         virtual CValue*         FindIdentifier(const STR_String& identifiername);
80
81 #ifdef WITH_PYTHON
82
83         /* --------------------------------------------------------------------- */
84         /* Python interface ---------------------------------------------------- */
85         /* --------------------------------------------------------------------- */
86
87         /**
88          * Test whether this is a sensible value (type check)
89          */
90         static int validValueForProperty(void* self, const PyAttributeDef*);
91
92 #endif
93 };
94
95 #endif
96