00001 /* 00002 SagaEngine library 00003 Copyright (c) 2002-2006 Skalden Studio AS 00004 00005 This software is provided 'as-is', without any express or implied 00006 warranty. In no event will the authors be held liable for any 00007 damages arising from the use of this software. 00008 00009 Permission is granted to distribute the library under the terms of the 00010 Q Public License version 1.0. Be sure to read and understand the license 00011 before using the library. It should be included here, or you may read it 00012 at http://www.trolltech.com/products/qt/licenses/licensing/qpl 00013 00014 The original version of this library can be located at: 00015 http://www.sagaengine.com/ 00016 00017 Rune Myrland 00018 rune@skalden.com 00019 */ 00020 00021 00022 #ifndef SimListeners_hpp 00023 #define SimListeners_hpp 00024 00025 #include "SimListener.hpp" 00026 #include "sim.hpp" 00027 #include "../util/error/Log.hpp" 00028 00029 namespace se_core { 00030 00031 class _SeCoreExport SimListeners { 00032 public: 00036 void addListener(SimListener &listener) { 00037 AssertFatal(listenerCount < MAX_LISTENERS, "Too many listeners. Adjust MAX_LISTENERS."); 00038 listeners[ listenerCount++ ] = &listener; 00039 } 00040 00041 00045 void removeListener(SimListener &listener) { 00046 for(int i = 0; i < listenerCount; ++i) { 00047 if(listeners[ i ] == &listener) { 00048 listeners[ i ] = listeners[ --listenerCount ]; 00049 } 00050 } 00051 } 00052 00057 void castPreSimTickEvent(long when) { 00058 for(int i = 0; i < listenerCount; ++i) { 00059 listeners[ i ]->preSimTickEvent(when); 00060 } 00061 } 00062 00067 void castRenderEvent(long when) { 00068 for(int i = 0; i < listenerCount; ++i) { 00069 listeners[ i ]->renderEvent(when); 00070 } 00071 } 00072 00073 00078 void castPostSimTickEvent(long when) { 00079 for(int i = 0; i < listenerCount; ++i) { 00080 listeners[ i ]->postSimTickEvent(when); 00081 } 00082 } 00083 00087 void clear() { 00088 listenerCount = 0; 00089 } 00090 00091 00092 private: 00094 static const int MAX_LISTENERS = 10; 00096 SimListener* listeners[ MAX_LISTENERS ]; 00098 short listenerCount; 00099 }; 00100 00101 } 00102 00103 #endif
Home Page | SagaEngine trunk (updated nightly) reference generated Sun Dec 2 20:06:12 2007 by Doxygen version 1.3.9.1.