removing files that should not be in blender2.5, added (by mistake?) r19226
[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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, 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 class SCA_IScene;
47
48 class KX_SCA_AddObjectActuator : public SCA_IActuator
49 {
50         Py_Header;
51
52         /// Time field: lifetime of the new object
53         int     m_timeProp;
54
55         /// Original object reference (object to replicate)     
56         SCA_IObject*    m_OriginalObject;
57
58         /// Object will be added to the following scene
59         SCA_IScene*     m_scene;
60
61         /// Linear velocity upon creation of the object. 
62         float  m_linear_velocity[3];
63         /// Apply the velocity locally 
64         bool m_localLinvFlag;
65         
66         /// Angular velocity upon creation of the object. 
67         float  m_angular_velocity[3];
68         /// Apply the velocity locally 
69         bool m_localAngvFlag; 
70         
71         
72         
73         
74         SCA_IObject*    m_lastCreatedObject;
75         
76 public:
77
78         /** 
79          * This class also has the default constructors
80          * available. Use with care!
81          */
82
83         KX_SCA_AddObjectActuator(
84                 SCA_IObject *gameobj,
85                 SCA_IObject *original,
86                 int time,
87                 SCA_IScene* scene,
88                 const float *linvel,
89                 bool linv_local,
90                 const float *angvel,
91                 bool angv_local,
92                 PyTypeObject* T=&Type
93         );
94
95         ~KX_SCA_AddObjectActuator(void);
96
97                 CValue* 
98         GetReplica(
99         ) ;
100
101         virtual void 
102         ProcessReplica();
103
104         virtual bool 
105         UnlinkObject(SCA_IObject* clientobj);
106
107         virtual void 
108         Relink(GEN_Map<GEN_HashedPtr, void*> *obj_map);
109
110         virtual bool 
111         Update();
112
113         virtual PyObject* py_getattro(PyObject *attr);
114         virtual PyObject* py_getattro_dict();
115         virtual int py_setattro(PyObject *attr, PyObject* value);
116
117                 SCA_IObject*    
118         GetLastCreatedObject(
119         ) const ;
120
121         void    InstantAddObject();
122
123         /* 1. setObject */
124         KX_PYMETHOD_DOC_O(KX_SCA_AddObjectActuator,SetObject);
125         /* 2. setTime */
126         KX_PYMETHOD_DOC_O(KX_SCA_AddObjectActuator,SetTime);
127         /* 3. getTime */
128         KX_PYMETHOD_DOC_NOARGS(KX_SCA_AddObjectActuator,GetTime);
129         /* 4. getObject */
130         KX_PYMETHOD_DOC_VARARGS(KX_SCA_AddObjectActuator,GetObject);
131         /* 5. getLinearVelocity */
132         KX_PYMETHOD_DOC_NOARGS(KX_SCA_AddObjectActuator,GetLinearVelocity);
133         /* 6. setLinearVelocity */
134         KX_PYMETHOD_DOC_VARARGS(KX_SCA_AddObjectActuator,SetLinearVelocity);
135         /* 7. getAngularVelocity */
136         KX_PYMETHOD_DOC_NOARGS(KX_SCA_AddObjectActuator,GetAngularVelocity);
137         /* 8. setAngularVelocity */
138         KX_PYMETHOD_DOC_VARARGS(KX_SCA_AddObjectActuator,SetAngularVelocity);
139         /* 9. getLastCreatedObject */
140         KX_PYMETHOD_DOC_NOARGS(KX_SCA_AddObjectActuator,GetLastCreatedObject);
141         /* 10. instantAddObject*/
142         KX_PYMETHOD_DOC_NOARGS(KX_SCA_AddObjectActuator,InstantAddObject);
143
144         static PyObject* pyattr_get_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
145         static int pyattr_set_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
146         static PyObject* pyattr_get_objectLastCreated(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
147         
148 }; /* end of class KX_SCA_AddObjectActuator : public KX_EditObjectActuator */
149
150 #endif
151