Project

General

Profile

SO3Engine
SO3CompositorLogic.h
Go to the documentation of this file.
1/*
2-----------------------------------------------------------------------------
3This source file is part of OpenSpace3D
4For the latest info, see http://www.openspace3d.com
5
6Copyright (c) 2012 I-maginer
7
8This program is free software; you can redistribute it and/or modify it under
9the terms of the GNU Lesser General Public License as published by the Free Software
10Foundation; either version 2 of the License, or (at your option) any later
11version.
12
13This program is distributed in the hope that it will be useful, but WITHOUT
14ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
16
17You should have received a copy of the GNU Lesser General Public License along with
18this program; if not, write to the Free Software Foundation, Inc., 59 Temple
19Place - Suite 330, Boston, MA 02111-1307, USA, or go to
20http://www.gnu.org/copyleft/lesser.txt
21
22-----------------------------------------------------------------------------
23*/
24
28#ifndef __SO3_COMPOSITOR_LOGIC_H__
29#define __SO3_COMPOSITOR_LOGIC_H__
30
32#include "OgreCompositorLogic.h"
33
34namespace SO3
35{
36
40class SCompositorListenerFactoryLogic : public Ogre::CompositorLogic
41{
42public:
44 virtual void compositorInstanceCreated(Ogre::CompositorInstance* newInstance)
45 {
46 Ogre::CompositorInstance::Listener* listener = createListener(newInstance);
47 newInstance->addListener(listener);
48 mListeners[newInstance] = listener;
49 }
50
52 virtual void compositorInstanceDestroyed(Ogre::CompositorInstance* destroyedInstance)
53 {
54 destroyedInstance->removeListener(mListeners[destroyedInstance]);
55 delete mListeners[destroyedInstance];
56 mListeners.erase(destroyedInstance);
57 }
58protected:
59 //This is the method that implementations will need to override
60 virtual Ogre::CompositorInstance::Listener* createListener(Ogre::CompositorInstance* instance) = 0;
61private:
62 typedef std::map<Ogre::CompositorInstance*, Ogre::CompositorInstance::Listener*> ListenerMap;
63 ListenerMap mListeners;
64
65};
66
67}
68
69#endif
librairies include
virtual Ogre::CompositorInstance::Listener * createListener(Ogre::CompositorInstance *instance)=0
virtual void compositorInstanceDestroyed(Ogre::CompositorInstance *destroyedInstance)
virtual void compositorInstanceCreated(Ogre::CompositorInstance *newInstance)