Initial revision
[blender.git] / source / gameengine / GameLogic / SCA_PropertyActuator.h
1 /**
2  * SCA_PropertyActuator.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_PROPERTYACTUATOR
36 #define __KX_PROPERTYACTUATOR
37
38 #include "SCA_IActuator.h"
39
40 class SCA_PropertyActuator : public SCA_IActuator
41 {
42         Py_Header;
43         
44         enum KX_ACT_PROP_MODE {
45                 KX_ACT_PROP_NODEF = 0,
46                 KX_ACT_PROP_ASSIGN,
47                 KX_ACT_PROP_ADD,
48                 KX_ACT_PROP_COPY,
49                 KX_ACT_PROP_MAX
50         };
51         
52         /**check whether this value is valid */
53         bool isValid(KX_ACT_PROP_MODE mode);
54         
55         int                     m_type;
56         STR_String      m_propname;
57         STR_String      m_exprtxt;
58         CValue*         m_sourceObj; // for copy property actuator
59
60 public:
61
62
63
64         SCA_PropertyActuator(
65
66                 SCA_IObject* gameobj,
67
68                 CValue* sourceObj,
69
70                 const STR_String& propname,
71
72                 const STR_String& expr,
73
74                 int acttype,
75
76                 PyTypeObject* T=&Type
77
78         );
79
80
81         ~SCA_PropertyActuator();
82
83
84                 CValue* 
85
86         GetReplica(
87
88         );
89
90
91                 bool 
92
93         Update(
94
95                 double curtime,
96
97                 double deltatime
98
99         );
100
101         /* --------------------------------------------------------------------- */
102         /* Python interface ---------------------------------------------------- */
103         /* --------------------------------------------------------------------- */
104
105         PyObject*  _getattr(char *attr);
106
107         // python wrapped methods
108         KX_PYMETHOD_DOC(SCA_PropertyActuator,SetProperty);
109         KX_PYMETHOD_DOC(SCA_PropertyActuator,GetProperty);
110         KX_PYMETHOD_DOC(SCA_PropertyActuator,SetValue);
111         KX_PYMETHOD_DOC(SCA_PropertyActuator,GetValue);
112         
113         /* 5. - ... setObject, getObject, setProp2, getProp2, setMode, getMode*/
114         
115 };
116 #endif //__KX_PROPERTYACTUATOR_DOC