remove all python api functions deprecated in 2.49
[blender.git] / source / gameengine / GameLogic / SCA_IController.h
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19  *
20  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
21  * All rights reserved.
22  *
23  * The Original Code is: all of this file.
24  *
25  * Contributor(s): none yet.
26  *
27  * ***** END GPL LICENSE BLOCK *****
28  */
29 #ifndef __KX_ICONTROLLER
30 #define __KX_ICONTROLLER
31
32 #include "SCA_ILogicBrick.h"
33 #include "PyObjectPlus.h"
34
35 /*
36  * Use of SG_DList element: none
37  * Use of SG_QList element: build ordered list of activated controller on the owner object
38  *                          Head: SCA_IObject::m_activeControllers
39  */
40 class SCA_IController : public SCA_ILogicBrick
41 {
42         Py_Header;
43 protected:
44         std::vector<class SCA_ISensor*>         m_linkedsensors;
45         std::vector<class SCA_IActuator*>       m_linkedactuators;
46         unsigned int                                            m_statemask;
47         bool                                                            m_justActivated;
48         bool                                                            m_bookmark;
49 public:
50         SCA_IController(SCA_IObject* gameobj);
51         virtual ~SCA_IController();
52         virtual void Trigger(class SCA_LogicManager* logicmgr)=0;
53         void    LinkToSensor(SCA_ISensor* sensor);
54         void    LinkToActuator(SCA_IActuator*);
55         std::vector<class SCA_ISensor*>&        GetLinkedSensors();
56         std::vector<class SCA_IActuator*>&      GetLinkedActuators();
57         void    ReserveActuator(int num)
58         {
59                 m_linkedactuators.reserve(num);
60         }
61         void    UnlinkAllSensors();
62         void    UnlinkAllActuators();
63         void    UnlinkActuator(class SCA_IActuator* actua);
64         void    UnlinkSensor(class SCA_ISensor* sensor);
65         void    SetState(unsigned int state) { m_statemask = state; }
66         void    ApplyState(unsigned int state);
67         void    Deactivate()
68         {
69                 // the controller can only be part of a sensor m_newControllers list
70                 Delink();
71         }
72         bool IsJustActivated()
73         {
74                 return m_justActivated;
75         }
76         void ClrJustActivated()
77         {
78                 m_justActivated = false;
79         }
80         void SetBookmark(bool bookmark)
81         {
82                 m_bookmark = bookmark;
83         }
84         void Activate(SG_DList& head)
85         {
86                 if (QEmpty())
87                 {
88                         if (m_bookmark)
89                         {
90                                 m_gameobj->m_activeBookmarkedControllers.QAddBack(this);
91                                 head.AddFront(&m_gameobj->m_activeBookmarkedControllers);
92                         }
93                         else
94                         {
95                                 InsertActiveQList(m_gameobj->m_activeControllers);
96                                 head.AddBack(&m_gameobj->m_activeControllers);
97                         }
98                 }
99         }
100         
101         static PyObject*        pyattr_get_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
102         static PyObject*        pyattr_get_sensors(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
103         static PyObject*        pyattr_get_actuators(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
104
105 };
106
107 #endif
108