Patch to change license to GPL only, from GSR.
[blender.git] / source / gameengine / GameLogic / SCA_IActuator.cpp
1 /**
2  * $Id$
3  * ***** BEGIN GPL LICENSE BLOCK *****
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software Foundation,
17  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18  *
19  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
20  * All rights reserved.
21  *
22  * The Original Code is: all of this file.
23  *
24  * Contributor(s): none yet.
25  *
26  * ***** END GPL LICENSE BLOCK *****
27  */
28
29 #include "SCA_IActuator.h"
30
31 #ifdef HAVE_CONFIG_H
32 #include <config.h>
33 #endif
34
35 using namespace std;
36
37 SCA_IActuator::SCA_IActuator(SCA_IObject* gameobj,
38                                                          PyTypeObject* T) :
39         SCA_ILogicBrick(gameobj,T) 
40 {
41         // nothing to do
42 }
43
44
45
46 void SCA_IActuator::AddEvent(CValue* event)
47 {
48         m_events.push_back(event);
49 }
50
51
52
53 void SCA_IActuator::RemoveAllEvents()
54 {       // remove event queue!
55         for (vector<CValue*>::iterator i=m_events.begin(); !(i==m_events.end());i++)
56         {
57                 (*i)->Release();
58         }
59         m_events.clear();
60 }
61
62
63
64
65
66 bool SCA_IActuator::IsNegativeEvent() const
67 {
68         bool bPositiveEvent(false);
69         bool bNegativeEvent(false);
70
71         for (vector<CValue*>::const_iterator i=m_events.begin(); i!=m_events.end();++i)
72         {
73                 if ((*i)->GetNumber() == 0.0f)
74                 {
75                         bNegativeEvent = true;
76                 } else {
77                         bPositiveEvent = true;
78                 }
79         }
80
81         // if at least 1 positive event, return false
82         
83         return !bPositiveEvent && bNegativeEvent;
84 }
85
86 bool SCA_IActuator::Update(double curtime, bool frame)
87 {
88         if (frame)
89                 return Update();
90         
91         return true;
92 }
93
94 bool SCA_IActuator::Update()
95 {
96         assert(false && "Actuators should override an Update method.");
97         return false;
98 }
99
100 void SCA_IActuator::ProcessReplica()
101 {
102         m_events.clear();
103 }
104
105
106
107 SCA_IActuator::~SCA_IActuator()
108 {
109         RemoveAllEvents();
110 }
111