Go to the
documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013 #ifndef _FBXSDK_CORE_LISTENER_H_
00014 #define _FBXSDK_CORE_LISTENER_H_
00015
00016 #include <fbxsdk/fbxsdk_def.h>
00017
00018
00019 #include <fbxsdk/core/fbxemitter.h>
00020 #include <fbxsdk/core/fbxeventhandler.h>
00021
00022
00023 #include <fbxsdk/core/base/fbxintrusivelist.h>
00024
00025 #include <fbxsdk/fbxsdk_nsbegin.h>
00026
00044 class FBXSDK_DLL FbxListener
00045 {
00046 public:
00051
00052 ~FbxListener();
00054 FbxListener(){}
00056
00058
00062
00070 template <typename EventType,typename ListenerType> FbxEventHandler* Bind(FbxEmitter& pEmitter, void (ListenerType::*pFunc)(const EventType*))
00071 {
00072 FbxMemberFuncEventHandler<EventType,ListenerType>* eventHandler =
00073 FbxNew< FbxMemberFuncEventHandler<EventType,ListenerType> >(static_cast<ListenerType*>(this),pFunc);
00074 pEmitter.AddListener(*eventHandler);
00075 mEventHandler.PushBack(*eventHandler);
00076 return eventHandler;
00077 }
00078
00086 template <typename EventType,typename ListenerType> FbxEventHandler* Bind(FbxEmitter& pEmitter, void (ListenerType::*pFunc)(const EventType*)const)
00087 {
00088 FbxConstMemberFuncEventHandler<EventType,ListenerType>* eventHandler =
00089 FbxNew< FbxConstMemberFuncEventHandler<EventType,ListenerType> >(static_cast<ListenerType*>(this),pFunc);
00090 pEmitter.AddListener(*eventHandler);
00091 mEventHandler.PushBack(*eventHandler);
00092 return eventHandler;
00093 }
00094
00102 template <typename EventType> FbxEventHandler* Bind(FbxEmitter& pEmitter, void (*pFunc)(const EventType*,FbxListener*))
00103 {
00104 FbxFuncEventHandler<EventType>* eventHandler =
00105 FbxNew< FbxFuncEventHandler<EventType> >(this, pFunc);
00106 pEmitter.AddListener(*eventHandler);
00107 mEventHandler.PushBack(*eventHandler);
00108 return eventHandler;
00109 }
00110
00114 void Unbind(const FbxEventHandler* aBindId);
00116
00117 private:
00118 typedef FbxIntrusiveList<FbxEventHandler, FbxEventHandler::eListener> EventHandlerList;
00119 EventHandlerList mEventHandler;
00120 };
00121
00122 #include <fbxsdk/fbxsdk_nsend.h>
00123
00124 #endif