resolved conflict state with HEAD r14096
[blender.git] / source / gameengine / SceneGraph / SG_Controller.h
1 /**
2  * Implementationclass to derive controllers from
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 __SG_CONTROLLER_H
36 #define __SG_CONTROLLER_H
37
38 #include "SG_IObject.h"
39
40 /**
41  * A scenegraph controller
42  */
43 class SG_Controller 
44 {
45 public:
46         SG_Controller(
47         ) :
48                 m_pObject(NULL) {
49         }
50
51         virtual 
52         ~SG_Controller(
53         ) {};
54
55         virtual 
56                 bool    
57         Update(
58                 double time
59         )=0;
60
61         virtual 
62                 void 
63         SetObject (
64                 SG_IObject* object
65         );
66
67                 void
68         ClearObject(
69         );
70
71         virtual 
72                 void    
73         SetSimulatedTime(
74                 double time
75         )=0;
76
77         virtual 
78                 SG_Controller*  
79         GetReplica(
80                 class SG_Node* destnode
81         )=0;
82
83         /**
84          * Hacky way of passing options to specific controllers
85          * @param option An integer identifying the option.
86          * @param value  The value of this option.
87          * @attention This has been placed here to give sca-elements 
88          * @attention some control over the controllers. This is 
89          * @attention necessary because the identity of the controller
90          * @attention is lost on the way here.
91          */
92         virtual
93                 void
94         SetOption(
95                 int option,
96                 int value
97         )=0;
98
99         /**
100          * Option-identifiers: SG_CONTR_<controller-type>_<option>. 
101          * Options only apply to a specific controller type. The 
102          * semantics are defined by whoever uses the setting.
103          */
104         enum SG_Controller_option {
105                 SG_CONTR_NODEF = 0,
106                 SG_CONTR_IPO_IPO_AS_FORCE,
107                 SG_CONTR_IPO_FORCES_ACT_LOCAL,
108                 SG_CONTR_CAMIPO_LENS,
109                 SG_CONTR_CAMIPO_CLIPEND,
110                 SG_CONTR_CAMIPO_CLIPSTART,
111                 SG_CONTR_MAX
112         };
113
114 protected:
115         SG_IObject*             m_pObject;
116
117 };
118
119 #endif //__SG_CONTROLLER_H
120