5cb62678c6b4bd05f7d4a3b970ad0c881d791ca8
[blender.git] / source / gameengine / GameLogic / SCA_IController.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_IController.h"
30 #include "SCA_LogicManager.h"
31 #include "SCA_IActuator.h"
32
33 #ifdef HAVE_CONFIG_H
34 #include <config.h>
35 #endif
36
37 SCA_IController::SCA_IController(SCA_IObject* gameobj,
38                                                                  PyTypeObject* T)
39         :
40         SCA_ILogicBrick(gameobj,T)
41 {
42 }
43         
44
45         
46 SCA_IController::~SCA_IController()
47 {
48 }
49
50
51
52 const std::vector<class SCA_ISensor*>& SCA_IController::GetLinkedSensors()
53 {
54         return m_linkedsensors;
55 }
56
57
58
59 const std::vector<class SCA_IActuator*>& SCA_IController::GetLinkedActuators()
60 {
61         return m_linkedactuators;
62 }
63
64
65
66 void SCA_IController::UnlinkAllSensors()
67 {
68         m_linkedsensors.clear();
69 }
70
71
72
73 void SCA_IController::UnlinkAllActuators()
74 {
75         m_linkedactuators.clear();
76 }
77
78
79
80 /*
81 void SCA_IController::Trigger(SCA_LogicManager* logicmgr)
82 {
83         //for (int i=0;i<m_linkedactuators.size();i++)
84         for (vector<SCA_IActuator*>::const_iterator i=m_linkedactuators.begin();
85         !(i==m_linkedactuators.end());i++)
86         {
87                 SCA_IActuator* actua = *i;//m_linkedactuators.at(i);
88                 
89                 logicmgr->AddActiveActuator(actua);
90         }
91
92 }
93 */
94
95 void SCA_IController::LinkToActuator(SCA_IActuator* actua)
96 {
97         m_linkedactuators.push_back(actua);
98 }
99
100 void    SCA_IController::UnlinkActuator(class SCA_IActuator* actua)
101 {
102         std::vector<class SCA_IActuator*>::iterator actit;
103         std::vector<class SCA_IActuator*>::iterator actfound = m_linkedactuators.end();
104         for (actit = m_linkedactuators.begin();!(actit==m_linkedactuators.end());++actit)
105         {
106                 if ((*actit) == actua)
107                         actfound = actit;
108                 
109         }
110         if (!(actfound==m_linkedactuators.end()))
111         {
112                 m_linkedactuators.erase(actfound);
113         }
114         
115 }
116
117 void SCA_IController::LinkToSensor(SCA_ISensor* sensor)
118 {
119         m_linkedsensors.push_back(sensor);
120 }