rename and negate DISABLE_PYTHON --> WITH_PYTHON
[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 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.
14 //
15 // This program is distributed in the hope that it will be useful,
16 // but WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 // GNU General Public License for more details.
19 //
20 // You should have received a copy of the GNU General Public License
21 // along with this program; if not, write to the Free Software Foundation,
22 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23 //
24 // The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
25 // All rights reserved.
26 //
27 // The Original Code is: all of this file.
28 //
29 // Contributor(s): none yet.
30 //
31 // ***** END GPL LICENSE BLOCK *****
32 //
33 // Previously existed as:
34 // \source\gameengine\GameLogic\SCA_AddObjectActuator.h
35 // Please look here for revision history.
36
37 #ifndef __KX_SCA_AddObjectActuator
38 #define __KX_SCA_AddObjectActuator
39
40 /* Actuator tree */
41 #include "SCA_IActuator.h"
42 #include "SCA_LogicManager.h"
43
44 #include "MT_Vector3.h"
45
46
47
48 class SCA_IScene;
49
50 class KX_SCA_AddObjectActuator : public SCA_IActuator
51 {
52         Py_Header;
53
54         /// Time field: lifetime of the new object
55         int     m_timeProp;
56
57         /// Original object reference (object to replicate)     
58         SCA_IObject*    m_OriginalObject;
59
60         /// Object will be added to the following scene
61         SCA_IScene*     m_scene;
62
63         /// Linear velocity upon creation of the object. 
64         float  m_linear_velocity[3];
65         /// Apply the velocity locally 
66         bool m_localLinvFlag;
67         
68         /// Angular velocity upon creation of the object. 
69         float  m_angular_velocity[3];
70         /// Apply the velocity locally 
71         bool m_localAngvFlag; 
72         
73         
74         
75         
76         SCA_IObject*    m_lastCreatedObject;
77         
78 public:
79
80         /** 
81          * This class also has the default constructors
82          * available. Use with care!
83          */
84
85         KX_SCA_AddObjectActuator(
86                 SCA_IObject *gameobj,
87                 SCA_IObject *original,
88                 int time,
89                 SCA_IScene* scene,
90                 const float *linvel,
91                 bool linv_local,
92                 const float *angvel,
93                 bool angv_local
94         );
95
96         ~KX_SCA_AddObjectActuator(void);
97
98                 CValue* 
99         GetReplica(
100         ) ;
101
102         virtual void 
103         ProcessReplica();
104
105         virtual void Replace_IScene(SCA_IScene *val)
106         {
107                 m_scene= val;
108         };
109
110         virtual bool 
111         UnlinkObject(SCA_IObject* clientobj);
112
113         virtual void 
114         Relink(GEN_Map<GEN_HashedPtr, void*> *obj_map);
115
116         virtual bool 
117         Update();
118
119                 SCA_IObject*    
120         GetLastCreatedObject(
121         ) const ;
122
123         void    InstantAddObject();
124
125 #ifdef WITH_PYTHON
126
127         KX_PYMETHOD_DOC_NOARGS(KX_SCA_AddObjectActuator,InstantAddObject);
128
129         static PyObject* pyattr_get_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
130         static int pyattr_set_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
131         static PyObject* pyattr_get_objectLastCreated(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
132         
133 #endif // WITH_PYTHON
134
135 }; /* end of class KX_SCA_AddObjectActuator : public KX_EditObjectActuator */
136
137 #endif
138