Filling in branch from trunk
[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         virtual bool 
96         Update();
97
98         virtual PyObject*  
99         _getattr(
100                 const STR_String& attr
101         );
102
103                 SCA_IObject*    
104         GetLastCreatedObject(
105         ) const ;
106
107         void    InstantAddObject();
108
109         /* 1. setObject */
110         KX_PYMETHOD_DOC(KX_SCA_AddObjectActuator,SetObject);
111         /* 2. setTime */
112         KX_PYMETHOD_DOC(KX_SCA_AddObjectActuator,SetTime);
113         /* 3. getTime */
114         KX_PYMETHOD_DOC(KX_SCA_AddObjectActuator,GetTime);
115         /* 4. getObject */
116         KX_PYMETHOD_DOC(KX_SCA_AddObjectActuator,GetObject);
117         /* 5. getLinearVelocity */
118         KX_PYMETHOD_DOC(KX_SCA_AddObjectActuator,GetLinearVelocity);
119         /* 6. setLinearVelocity */
120         KX_PYMETHOD_DOC(KX_SCA_AddObjectActuator,SetLinearVelocity);
121         /* 7. getLastCreatedObject */
122         KX_PYMETHOD_DOC(KX_SCA_AddObjectActuator,GetLastCreatedObject);
123         /* 8. instantAddObject*/
124         KX_PYMETHOD_DOC(KX_SCA_AddObjectActuator,InstantAddObject);
125
126         
127 }; /* end of class KX_SCA_AddObjectActuator : public KX_EditObjectActuator */
128
129 #endif
130