12#ifndef TT_INCLUDE_NETWORKOBJECTCLASS_H
13#define TT_INCLUDE_NETWORKOBJECTCLASS_H
23 PACKET_TIER_OCCASIONAL,
28class NetworkObjectClass
33 BIT_MASK_FREQUENT = 0x01,
34 BIT_MASK_OCCASIONAL = 0x02,
36 BIT_MASK_CREATION = 0x08,
39 BIT_OCCASIONAL = 0x03,
43 BIT_SUPPRESS_UPDATES = 0x10,
47 MAX_CLIENT_COUNT = 128
49 NetworkObjectClass (
void);
50 virtual ~NetworkObjectClass (
void);
51 int Get_Network_ID (
void)
const {
return NetworkID; }
52 void Set_Network_ID (
int id);
54 int Get_Created_By_Packet_ID (
void)
const {
return CreatedByPacketID; }
55 void Set_Created_By_Packet_ID (
int id);
57 virtual uint32 Get_Network_Class_ID (
void)
const {
return 0; }
58 virtual void Import_Creation (BitStreamClass &packet) {}
59 virtual void Import_Rare (BitStreamClass &packet) {}
60 virtual void Import_Occasional (BitStreamClass &packet) {}
61 virtual void Import_Frequent (BitStreamClass &packet) {}
62 virtual void Export_Creation (BitStreamClass &packet) {}
63 virtual void Export_Rare (BitStreamClass &packet) {}
64 virtual void Export_Occasional (BitStreamClass &packet) {}
65 virtual void Export_Frequent (BitStreamClass &packet) {}
66 virtual void Network_Think (
void) {}
67 bool Is_Delete_Pending (
void) {
return IsDeletePending; }
68 virtual void Set_Delete_Pending (
void);
69 void Set_Is_Delete_Pending (
bool pending) { IsDeletePending = pending; }
70 virtual void Delete (
void) = 0;
71 void Set_App_Packet_Type (BYTE type) { AppPacketType = type; }
72 BYTE Get_App_Packet_Type (
void) {
return AppPacketType; }
73 virtual void Set_Object_Dirty_Bit (DIRTY_BIT dirty_bit,
bool onoff);
74 virtual void Set_Object_Dirty_Bit (
int client_id, DIRTY_BIT dirty_bit,
bool onoff);
75 void Set_Object_Dirty_Bitx(
int client_id, DIRTY_BIT dirty_bit,
bool onoff);
76 virtual void Clear_Object_Dirty_Bits (
void);
77 virtual bool Get_Object_Dirty_Bit (
int client_id, DIRTY_BIT dirty_bit);
78 virtual BYTE Get_Object_Dirty_Bits (
int client_id);
79 virtual void Set_Object_Dirty_Bits (
int client_id, BYTE bits);
80 virtual bool Is_Client_Dirty (
int client_id);
81 void Set_Dirty_Bits(uint8 dirtyBits);
82 inline bool Get_Object_Dirty_Bit_2 (
int client_id, DIRTY_BIT dirty_bit)
84 return ((ClientStatus[client_id] & dirty_bit) == dirty_bit);
86 inline BYTE Get_Object_Dirty_Bits_2 (
int client_id)
88 return ClientStatus[client_id];
90 virtual int Get_Vis_ID (
void) {
return -1; }
91 virtual bool Get_World_Position (Vector3 &pos)
const {
return false; }
92 virtual float Get_Filter_Distance(
void)
const {
return 10000.0f; }
93 void Reset_Client_Hint_Count(
int client_id);
94 void Increment_Client_Hint_Count(
int client_id);
95 void Hint_To_All_Clients(
void);
96 BYTE Get_Client_Hint_Count(
int client_id);
97 inline BYTE Get_Client_Hint_Count_2(
int client_id)
99 return UpdateInfo[client_id].ClientHintCount;
101 void Reset_Import_State_Count (
void) { ImportStateCount = 0; }
102 void Increment_Import_State_Count (
void) { ImportStateCount ++; }
103 int Get_Import_State_Count (
void) {
return ImportStateCount; }
104 void Reset_Last_Clientside_Update_Time (
void);
105 void Set_Last_Clientside_Update_Time (ULONG time);
106 ULONG Get_Last_Clientside_Update_Time (
void) {
return LastClientsideUpdateTime; }
107 TT_DEPRECATED(
"This function is no longer necessary and the member variable it uses has been hijacked to host a different variable.") int Get_Clientside_Update_Frequency(
void);
108 bool Belongs_To_Client(
int client_id);
109 unsigned char Get_Frequent_Update_Export_Size(
void) {
return(FrequentExportPacketSize);}
110 void Set_Frequent_Update_Export_Size(
unsigned char size) {FrequentExportPacketSize = size;}
111 unsigned long Get_Last_Update_Time(
int client_id);
112 unsigned short Get_Update_Rate(
int client_id);
113 void Set_Last_Update_Time(
int client_id,
unsigned long time);
114 void Set_Update_Rate(
int client_id,
unsigned short rate);
115 virtual bool Is_Tagged(
void) {
return false; }
116 virtual void Get_Description(StringClass & description) {}
117 void Set_Unreliable_Override(
bool flag) {UnreliableOverride = flag;}
118 bool Get_Unreliable_Override(
void) {
return UnreliableOverride;}
119#if !defined(DDBEDIT) && !defined(W3DVIEWER)
120 static void Set_Is_Server(
bool flag) { IsServer = flag; }
122 void Set_Cached_Priority (
float priority);
123 virtual float Get_Cached_Priority (
void)
const {
return CachedPriority; }
124 inline void Set_Cached_Priority_2 (
int client_id,
float priority)
126 CachedPriority_2[client_id] = priority;
128 inline float Get_Cached_Priority_2 (
int client_id)
const
130 return(CachedPriority_2[client_id]);
132 void Set_Last_Object_Id_I_Damaged(
int id) {LastObjectIdIDamaged = id;}
133 int Get_Last_Object_Id_I_Damaged(
void)
const {
return LastObjectIdIDamaged;}
134 void Set_Last_Object_Id_I_Got_Damaged_By(
int id) {LastObjectIdIGotDamagedBy = id;}
135 int Get_Last_Object_Id_I_Got_Damaged_By(
void)
const {
return LastObjectIdIGotDamagedBy;}
137 ULONG getLastHintRequestTime()
const {
return LastHintRequestTime; }
138 void setLastHintRequestTime(ULONG _lastHintRequestTime) { LastHintRequestTime = _lastHintRequestTime; }
142 int CreatedByPacketID;
144 struct PerClientUpdateInfoStruct {
145 unsigned long LastUpdateTime;
146 unsigned short UpdateRate;
147 BYTE ClientHintCount;
148 } UpdateInfo [MAX_CLIENT_COUNT];
149 BYTE ClientStatus[MAX_CLIENT_COUNT];
150 int ImportStateCount;
151 ULONG LastClientsideUpdateTime;
152 ULONG ClientsideUpdateFrequencySampleStartTime;
153 int ClientsideUpdateFrequencySampleCount;
154 ULONG LastHintRequestTime;
155 bool IsDeletePending;
157 int LastObjectIdIDamaged;
158 int LastObjectIdIGotDamagedBy;
159 unsigned char FrequentExportPacketSize;
160 float CachedPriority;
161 float CachedPriority_2[MAX_CLIENT_COUNT];
162 bool UnreliableOverride;
163#if !defined(DDBEDIT) && !defined(W3DVIEWER)
164 static REF_DECL(
bool, IsServer);