Changed Python _getattr/_setattr methods to use const STR_String& instead of char...
[blender.git] / source / gameengine / Ketsji / KX_SCA_AddObjectActuator.h
1 //
2 // Add object to the game world on action of this actuator. A copy is made
3 // of a referenced object. The copy inherits some properties from the owner
4 // of this actuator.
5 //
6 // $Id$
7 //
8 // ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
9 //
10 // This program is free software; you can redistribute it and/or
11 // modify it under the terms of the GNU General Public License
12 // as published by the Free Software Foundation; either version 2
13 // of the License, or (at your option) any later version. The Blender
14 // Foundation also sells licenses for use in proprietary software under
15 // the Blender License.  See http://www.blender.org/BL/ for information
16 // about this.
17 //
18 // This program is distributed in the hope that it will be useful,
19 // but WITHOUT ANY WARRANTY; without even the implied warranty of
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 // GNU General Public License for more details.
22 //
23 // You should have received a copy of the GNU General Public License
24 // along with this program; if not, write to the Free Software Foundation,
25 // Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
26 //
27 // The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
28 // All rights reserved.
29 //
30 // The Original Code is: all of this file.
31 //
32 // Contributor(s): none yet.
33 //
34 // ***** END GPL/BL DUAL LICENSE BLOCK *****
35 //
36 // Previously existed as:
37 // \source\gameengine\GameLogic\SCA_AddObjectActuator.h
38 // Please look here for revision history.
39
40 #ifndef __KX_SCA_AddObjectActuator
41 #define __KX_SCA_AddObjectActuator
42
43 /* Actuator tree */
44 #include "SCA_IActuator.h"
45 #include "SCA_LogicManager.h"
46
47 #include "MT_Vector3.h"
48
49 class SCA_IScene;
50
51 class KX_SCA_AddObjectActuator : public SCA_IActuator
52 {
53         Py_Header;
54
55         /// Time field: lifetime of the new object
56         int     m_timeProp;
57
58         /// Original object reference (object to replicate)     
59         CValue* m_OriginalObject;
60
61         /// Object will be added to the following scene
62         SCA_IScene*     m_scene;
63
64         /// Linear velocity upon creation of the object. 
65         MT_Vector3  m_linear_velocity;
66
67         /// Apply the velocity locally 
68         bool m_localFlag;
69         
70         SCA_IObject*    m_lastCreatedObject;
71         
72 public:
73
74         /** 
75          * This class also has the default constructors
76          * available. Use with care!
77          */
78
79         KX_SCA_AddObjectActuator(
80                 SCA_IObject *gameobj,
81                 CValue* original,
82                 int time,
83                 SCA_IScene* scene,
84                 const MT_Vector3& linvel,
85                 bool local,
86                 PyTypeObject* T=&Type
87         );
88
89         ~KX_SCA_AddObjectActuator(void);
90
91                 CValue* 
92         GetReplica(
93         ) ;
94
95                 bool 
96         Update(
97                 double curtime,
98                 double deltatime
99         );
100
101         virtual PyObject*  
102         _getattr(
103                 const STR_String& attr
104         );
105
106                 SCA_IObject*    
107         GetLastCreatedObject(
108         ) const ;
109
110         /* 1. setObject */
111         KX_PYMETHOD_DOC(KX_SCA_AddObjectActuator,SetObject);
112         /* 2. setTime */
113         KX_PYMETHOD_DOC(KX_SCA_AddObjectActuator,SetTime);
114         /* 3. getTime */
115         KX_PYMETHOD_DOC(KX_SCA_AddObjectActuator,GetTime);
116         /* 4. getObject */
117         KX_PYMETHOD_DOC(KX_SCA_AddObjectActuator,GetObject);
118         /* 5. getLinearVelocity */
119         KX_PYMETHOD_DOC(KX_SCA_AddObjectActuator,GetLinearVelocity);
120         /* 6. setLinearVelocity */
121         KX_PYMETHOD_DOC(KX_SCA_AddObjectActuator,SetLinearVelocity);
122         /* 7. getLastCreatedObject */
123         KX_PYMETHOD_DOC(KX_SCA_AddObjectActuator,GetLastCreatedObject);
124
125         
126 }; /* end of class KX_SCA_AddObjectActuator : public KX_EditObjectActuator */
127
128 #endif
129