00001 00002 00003 00004 00005 00006 00007 00008 00009 #if !defined(__NETWORK_ID_GENERATOR) 00010 #define __NETWORK_ID_GENERATOR 00011 00012 #include "RakNetTypes.h" 00013 #include "RakMemoryOverride.h" 00014 #include "Export.h" 00015 00016 class NetworkIDManager; 00017 00024 class RAK_DLL_EXPORT NetworkIDObject 00025 { 00026 public: 00027 // Constructor. NetworkIDs, if IsNetworkIDAuthority() is true, are created here. 00028 NetworkIDObject(); 00029 00030 // Destructor. Used NetworkIDs, if any, are freed here. 00031 virtual ~NetworkIDObject(); 00032 00036 virtual void SetNetworkIDManager( NetworkIDManager *manager); 00037 00039 virtual NetworkIDManager * GetNetworkIDManager( void ); 00040 00045 virtual NetworkID GetNetworkID( void ); 00046 00049 virtual void SetNetworkID( NetworkID id ); 00050 00054 virtual void SetParent( void *_parent ); 00055 00058 virtual void* GetParent( void ) const; 00059 00063 virtual bool RequiresSetParent(void) const; 00064 00066 uint32_t GetAllocationNumber(void) const; 00067 00068 protected: 00070 NetworkID networkID; 00071 00073 void *parent; 00074 00076 static uint32_t nextAllocationNumber; 00077 uint32_t allocationNumber; 00078 00080 void GenerateID(void); 00081 00083 bool callGenerationCode; 00084 00085 NetworkIDManager *networkIDManager; 00086 }; 00087 00088 #endif