![]() |
Shadowrun: Awakened 29 September 2011 - Build 871
|
00001 00002 00003 00004 00005 00006 00007 00008 #ifndef __NETWORK_ID_MANAGER_H 00009 #define __NETWORK_ID_MANAGER_H 00010 00011 #include "RakNetTypes.h" 00012 #include "Export.h" 00013 #include "RakMemoryOverride.h" 00014 #include "NetworkIDObject.h" 00015 #include "Rand.h" 00016 00017 namespace RakNet 00018 { 00019 00022 #define NETWORK_ID_MANAGER_HASH_LENGTH 1024 00023 00028 class RAK_DLL_EXPORT NetworkIDManager 00029 { 00030 public: 00031 // GetInstance() and DestroyInstance(instance*) 00032 STATIC_FACTORY_DECLARATIONS(NetworkIDManager) 00033 00034 NetworkIDManager(); 00035 virtual ~NetworkIDManager(void); 00036 00040 template <class returnType> 00041 returnType GET_OBJECT_FROM_ID(NetworkID x) { 00042 NetworkIDObject *nio = GET_BASE_OBJECT_FROM_ID(x); 00043 if (nio==0) 00044 return 0; 00045 if (nio->GetParent()) 00046 return (returnType) nio->GetParent(); 00047 return (returnType) nio; 00048 } 00049 00051 NetworkIDObject *GET_BASE_OBJECT_FROM_ID(NetworkID x); 00052 00054 void TrackNetworkIDObject(NetworkIDObject *networkIdObject); 00055 void StopTrackingNetworkIDObject(NetworkIDObject *networkIdObject); 00056 00057 protected: 00058 friend class NetworkIDObject; 00059 00060 NetworkIDObject *networkIdHash[NETWORK_ID_MANAGER_HASH_LENGTH]; 00061 unsigned int NetworkIDToHashIndex(NetworkID networkId); 00062 uint64_t startingOffset; 00064 NetworkID GetNewNetworkID(void); 00065 00066 }; 00067 00068 } // namespace RakNet 00069 00070 #endif
Copyright © 2007-2010 by The Shadowrun: Awakened Team. This work is licensed under the GNU Lesser General Public License 3.