Initial revision
[blender.git] / source / gameengine / GameLogic / SCA_IActuator.cpp
1 /**
2  * $Id$
3  * ***** BEGIN GPL/BL DUAL 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. The Blender
9  * Foundation also sells licenses for use in proprietary software under
10  * the Blender License.  See http://www.blender.org/BL/ for information
11  * about this.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21  *
22  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
23  * All rights reserved.
24  *
25  * The Original Code is: all of this file.
26  *
27  * Contributor(s): none yet.
28  *
29  * ***** END GPL/BL DUAL LICENSE BLOCK *****
30  */
31
32 #include "SCA_IActuator.h"
33
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 bool SCA_IActuator::Update(double curtime,double deltatime)
65 {
66         return true;
67 }
68
69
70
71 bool SCA_IActuator::IsNegativeEvent() const
72 {
73         bool bPositiveEvent(false);
74         bool bNegativeEvent(false);
75
76         for (vector<CValue*>::const_iterator i=m_events.begin(); i!=m_events.end();++i)
77         {
78                 if ((*i)->GetNumber() == 0.0f)
79                 {
80                         bNegativeEvent = true;
81                 } else {
82                         bPositiveEvent = true;
83                 }
84         }
85
86         // if at least 1 positive event, return false
87         
88         return !bPositiveEvent && bNegativeEvent;
89 }
90
91
92
93 void SCA_IActuator::ProcessReplica()
94 {
95         m_events.clear();
96 }
97
98
99
100 SCA_IActuator::~SCA_IActuator()
101 {
102         RemoveAllEvents();
103 }
104