Sophie

Sophie

distrib > Mandriva > 10.2 > i586 > media > contrib > by-pkgid > 04e5d8c10ae76748689b4e7f48e0fa33 > files > 438

libogre5-devel-1.0.0-1mdk.i586.rpm

<html>
<head>
<title>OgreEventProcessor.h Source File - OGRE Documentation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<link type="text/css" rel="stylesheet" href="style.css">
</head>

<body>
<!-- Generated by Doxygen 1.3.6 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
<h1>OgreEventProcessor.h</h1><a href="OgreEventProcessor_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*</span>
00002 <span class="comment">-----------------------------------------------------------------------------</span>
00003 <span class="comment">This source file is part of OGRE</span>
00004 <span class="comment">    (Object-oriented Graphics Rendering Engine)</span>
00005 <span class="comment">For the latest info, see http://www.ogre3d.org/</span>
00006 <span class="comment"></span>
00007 <span class="comment">Copyright (c) 2000-2005 The OGRE Team</span>
00008 <span class="comment">Also see acknowledgements in Readme.html</span>
00009 <span class="comment"></span>
00010 <span class="comment">This program is free software; you can redistribute it and/or modify it under</span>
00011 <span class="comment">the terms of the GNU Lesser General Public License as published by the Free Software</span>
00012 <span class="comment">Foundation; either version 2 of the License, or (at your option) any later</span>
00013 <span class="comment">version.</span>
00014 <span class="comment"></span>
00015 <span class="comment">This program is distributed in the hope that it will be useful, but WITHOUT</span>
00016 <span class="comment">ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS</span>
00017 <span class="comment">FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</span>
00018 <span class="comment"></span>
00019 <span class="comment">You should have received a copy of the GNU Lesser General Public License along with</span>
00020 <span class="comment">this program; if not, write to the Free Software Foundation, Inc., 59 Temple</span>
00021 <span class="comment">Place - Suite 330, Boston, MA 02111-1307, USA, or go to</span>
00022 <span class="comment">http://www.gnu.org/copyleft/lesser.txt.</span>
00023 <span class="comment">-----------------------------------------------------------------------------</span>
00024 <span class="comment">*/</span>
00025 <span class="comment">/***************************************************************************</span>
00026 <span class="comment">OgreEventProcessor.h  -  </span>
00027 <span class="comment">    The EventProcessor controls getting events, storing them in a queue, and </span>
00028 <span class="comment">    dispatching events.</span>
00029 <span class="comment">    It contains an InputDevice which creates InputEvents. The events are then</span>
00030 <span class="comment">    stored FIFO in the EventQueue. </span>
00031 <span class="comment"></span>
00032 <span class="comment">    The EventProcessor is a frame listener, so each frame, it empties the entire</span>
00033 <span class="comment">    queue to the list of dispatchers.</span>
00034 <span class="comment"></span>
00035 <span class="comment">    Each dispatcher corresponds to a registered TargetManager.</span>
00036 <span class="comment"></span>
00037 <span class="comment">    The TargetManagers need to be registered with the Processor before initialise is called.</span>
00038 <span class="comment"></span>
00039 <span class="comment">    After intialise is called, the Processor will start processing events once startProcessingEvents is called.</span>
00040 <span class="comment"></span>
00041 <span class="comment">    The Processor acts like a default EventTarget, so it can process events that no dispatcher consumes.</span>
00042 <span class="comment">    You can listen default actions to the processor by e.g.</span>
00043 <span class="comment">        mProcessor-&gt;addMouseListener(defaultMouseMovement);</span>
00044 <span class="comment"></span>
00045 <span class="comment">    WARNING: The event objects are created in InputReader when they are submitted to the queue</span>
00046 <span class="comment">    , yet destroyed in the Event Processor when they are taken off the queue.</span>
00047 <span class="comment">    Deleting objects in different locations to where they are created is usually undesirable, however,</span>
00048 <span class="comment">    since the Processor, queue and InputReader are tightly coupled (only the Processor is visible to the outside)</span>
00049 <span class="comment">    this can be an exception.</span>
00050 <span class="comment">    The reason for this is for performance... The alternative, is to do 2 more event copies when sending events to the queue,</span>
00051 <span class="comment">    so the queue manages creating (copying the event from the inputReader) and deleting objects once popped - however</span>
00052 <span class="comment">    this would require the events to be copied twice.. So I have avoided this by having the same event object passed around</span>
00053 <span class="comment">    and not copied.</span>
00054 <span class="comment">-------------------</span>
00055 <span class="comment">begin                : Nov 19 2002</span>
00056 <span class="comment">copyright            : (C) 2002 by Kenny Sabir</span>
00057 <span class="comment">email                : kenny@sparksuit.com</span>
00058 <span class="comment">***************************************************************************/</span>
00059 
00060 <span class="preprocessor">#ifndef __EventProcessor_H__</span>
00061 <span class="preprocessor"></span><span class="preprocessor">#define __EventProcessor_H__</span>
00062 <span class="preprocessor"></span>
00063 <span class="preprocessor">#include &lt;list&gt;</span>
00064 <span class="preprocessor">#include "<a class="code" href="OgrePrerequisites_8h.html">OgrePrerequisites.h</a>"</span>
00065 <span class="preprocessor">#include "<a class="code" href="OgreSingleton_8h.html">OgreSingleton.h</a>"</span>
00066 <span class="preprocessor">#include "<a class="code" href="OgreFrameListener_8h.html">OgreFrameListener.h</a>"</span>
00067 <span class="preprocessor">#include "<a class="code" href="OgreMouseTarget_8h.html">OgreMouseTarget.h</a>"</span>
00068 <span class="preprocessor">#include "<a class="code" href="OgreKeyTarget_8h.html">OgreKeyTarget.h</a>"</span>
00069 <span class="preprocessor">#include "<a class="code" href="OgreMouseMotionTarget_8h.html">OgreMouseMotionTarget.h</a>"</span>
00070 
00071 <span class="keyword">namespace </span>Ogre {
<a name="l00090"></a><a class="code" href="classOgre_1_1EventProcessor.html">00090</a>     <span class="keyword">class </span><a class="code" href="OgrePlatform_8h.html#a13">_OgreExport</a> EventProcessor : <span class="keyword">public</span> <a class="code" href="classOgre_1_1FrameListener.html">FrameListener</a>, <span class="keyword">public</span> <a class="code" href="classOgre_1_1MouseTarget.html">MouseTarget</a>, <span class="keyword">public</span> <a class="code" href="classOgre_1_1MouseMotionTarget.html">MouseMotionTarget</a>, <span class="keyword">public</span> <a class="code" href="classOgre_1_1Singleton.html">Singleton</a>&lt;EventProcessor&gt;, <span class="keyword">public</span> <a class="code" href="classOgre_1_1KeyTarget.html">KeyTarget</a>
00091     {
00092     <span class="keyword">protected</span>:
<a name="l00093"></a><a class="code" href="classOgre_1_1EventProcessor.html#Ogre_1_1EventProcessorp0">00093</a>         <a class="code" href="classOgre_1_1EventQueue.html">EventQueue</a>* mEventQueue;
00098         <span class="keywordtype">void</span> cleanup();
<a name="l00099"></a><a class="code" href="classOgre_1_1EventProcessor.html#Ogre_1_1EventProcessorp1">00099</a>         <a class="code" href="classOgre_1_1InputReader.html">InputReader</a>* mInputDevice;
<a name="l00100"></a><a class="code" href="classOgre_1_1EventProcessor.html#Ogre_1_1EventProcessorx0">00100</a>         <span class="keyword">typedef</span> std::list&lt;EventDispatcher*&gt; <a class="code" href="classOgre_1_1EventProcessor.html#Ogre_1_1EventProcessorx0">DispatcherList</a>;
<a name="l00101"></a><a class="code" href="classOgre_1_1EventProcessor.html#Ogre_1_1EventProcessorx1">00101</a>         <span class="keyword">typedef</span> std::list&lt;EventTarget*&gt; <a class="code" href="classOgre_1_1EventProcessor.html#Ogre_1_1EventProcessorx1">EventTargetList</a>;
<a name="l00102"></a><a class="code" href="classOgre_1_1EventProcessor.html#Ogre_1_1EventProcessorp2">00102</a>         <a class="code" href="classOgre_1_1EventProcessor.html#Ogre_1_1EventProcessorx0">DispatcherList</a> mDispatcherList;
<a name="l00103"></a><a class="code" href="classOgre_1_1EventProcessor.html#Ogre_1_1EventProcessorp3">00103</a>         <a class="code" href="classOgre_1_1EventProcessor.html#Ogre_1_1EventProcessorx1">EventTargetList</a> mEventTargetList;
<a name="l00104"></a><a class="code" href="classOgre_1_1EventProcessor.html#Ogre_1_1EventProcessorp4">00104</a>         <span class="keywordtype">bool</span> mRegisteredAsFrameListener;
00105 
00106     <span class="keyword">public</span>:
00107         EventProcessor();
00108         <span class="keyword">virtual</span> ~EventProcessor();
00109 
00113         <span class="keywordtype">void</span> startProcessingEvents(<span class="keywordtype">bool</span> registerListener=<span class="keyword">true</span>);
00114 
00119         <span class="keywordtype">void</span> stopProcessingEvents();
00120 
00126         <span class="keywordtype">void</span> initialise(<a class="code" href="classOgre_1_1RenderWindow.html">RenderWindow</a>* ren);
00127 
00132         <span class="keywordtype">void</span> processEvent(<a class="code" href="classOgre_1_1InputEvent.html">InputEvent</a>* e);
00133 
00138         <span class="keywordtype">void</span> addCursorMoveListener(<a class="code" href="classOgre_1_1MouseMotionListener.html">MouseMotionListener</a>* c);
00139 
00144         <span class="keywordtype">void</span> removeCursorMoveListener(<a class="code" href="classOgre_1_1MouseMotionListener.html">MouseMotionListener</a>* c);
00145 
00151         <span class="keywordtype">void</span> addTargetManager(<a class="code" href="classOgre_1_1TargetManager.html">TargetManager</a>* targetManager);
00152 
00158         <span class="keywordtype">void</span> addEventTarget(<a class="code" href="classOgre_1_1EventTarget.html">EventTarget</a>* eventTarget);
00159 
00165         <span class="keywordtype">bool</span> frameStarted(<span class="keyword">const</span> <a class="code" href="structOgre_1_1FrameEvent.html">FrameEvent</a>&amp; evt);
00166 
00167         <span class="comment">// PositionTarget methods</span>
00171 <span class="comment"></span>        <a class="code" href="namespaceOgre.html#a420">Real</a> getTop() <span class="keyword">const</span>;
00172 
00176         <a class="code" href="namespaceOgre.html#a420">Real</a> getLeft() <span class="keyword">const</span>;
00177 
00181         <a class="code" href="classOgre_1_1PositionTarget.html">PositionTarget</a>* getPositionTargetParent() <span class="keyword">const</span>;
00182 
00183 
00184 
<a name="l00185"></a><a class="code" href="classOgre_1_1EventProcessor.html#Ogre_1_1EventProcessora14">00185</a>         <span class="keywordtype">bool</span> isKeyEnabled()<span class="keyword"> const</span>
00186 <span class="keyword">        </span>{ <span class="keywordflow">return</span> <span class="keyword">true</span>; }
00187 
<a name="l00188"></a><a class="code" href="classOgre_1_1EventProcessor.html#Ogre_1_1EventProcessora15">00188</a>         <span class="keyword">inline</span> <a class="code" href="classOgre_1_1InputReader.html">InputReader</a>* getInputReader()
00189         { <span class="keywordflow">return</span> mInputDevice; }
00205         <span class="keyword">static</span> EventProcessor&amp; getSingleton(<span class="keywordtype">void</span>);
00221         <span class="keyword">static</span> EventProcessor* getSingletonPtr(<span class="keywordtype">void</span>);
00222     };
00223 
00224 
00225 
00226 }
00227 
00228 
00229 <span class="preprocessor">#endif //__EventProcessor_H__</span>
</pre></div><p>
Copyright &copy; 2000-2005 by The OGRE Team<br />
Last modified Wed Feb 23 00:19:05 2005
</p>
</body>
</html>