In NaN times I suggested a python function to get the subject of a
[blender.git] / source / gameengine / Ketsji / KXNetwork / KX_NetworkMessageSensor.h
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL/BL DUAL 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. The Blender
10  * Foundation also sells licenses for use in proprietary software under
11  * the Blender License.  See http://www.blender.org/BL/ for information
12  * about this.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22  *
23  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
24  * All rights reserved.
25  *
26  * The Original Code is: all of this file.
27  *
28  * Contributor(s): none yet.
29  *
30  * ***** END GPL/BL DUAL LICENSE BLOCK *****
31  * Ketsji Logic Extenstion: Network Message Sensor class
32  */
33 #ifndef __KX_NETWORKMESSAGE_SENSOR_H
34 #define __KX_NETWORKMESSAGE_SENSOR_H
35
36 #include "SCA_ISensor.h"
37
38 class KX_NetworkEventManager;
39 class NG_NetworkScene;
40
41 class KX_NetworkMessageSensor : public SCA_ISensor
42 {
43         // note: Py_Header MUST BE the first listed here
44         Py_Header;
45         KX_NetworkEventManager *m_Networkeventmgr;
46         NG_NetworkScene        *m_NetworkScene;
47
48         // The subject we filter on.
49         STR_String m_subject;
50
51         // The number of messages caught since the last frame.
52         int m_frame_message_count;
53
54         bool m_IsUp;
55
56         class CListValue* m_BodyList;
57         class CListValue* m_SubjectList;
58 public:
59         KX_NetworkMessageSensor(
60                 KX_NetworkEventManager* eventmgr,       // our eventmanager
61                 NG_NetworkScene *NetworkScene,          // our scene
62                 SCA_IObject* gameobj,                           // the sensor controlling object
63                 const STR_String &subject,
64                 PyTypeObject* T=&Type
65         );
66         virtual ~KX_NetworkMessageSensor();
67
68         virtual CValue* GetReplica();
69         virtual bool Evaluate(CValue* event);
70         virtual bool IsPositiveTrigger();
71         void EndFrame();
72         
73         /* ------------------------------------------------------------- */
74         /* Python interface -------------------------------------------- */
75         /* ------------------------------------------------------------- */
76
77         virtual PyObject*  _getattr(char *attr);
78
79         KX_PYMETHOD_DOC(KX_NetworkMessageSensor, SetSubjectFilterText);
80         KX_PYMETHOD_DOC(KX_NetworkMessageSensor, GetFrameMessageCount);
81         KX_PYMETHOD_DOC(KX_NetworkMessageSensor, GetBodies);
82         KX_PYMETHOD_DOC(KX_NetworkMessageSensor, GetSubject);
83         KX_PYMETHOD_DOC(KX_NetworkMessageSensor, GetSubjects);
84
85
86 };
87
88 #endif //__KX_NETWORKMESSAGE_SENSOR_H
89