summaryrefslogtreecommitdiff
path: root/engine/dt_send_eng.h
diff options
context:
space:
mode:
Diffstat (limited to 'engine/dt_send_eng.h')
-rw-r--r--engine/dt_send_eng.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/engine/dt_send_eng.h b/engine/dt_send_eng.h
new file mode 100644
index 0000000..45f4eec
--- /dev/null
+++ b/engine/dt_send_eng.h
@@ -0,0 +1,128 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef DATATABLE_SEND_ENG_H
+#define DATATABLE_SEND_ENG_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+
+#include "dt_send.h"
+#include "bitbuf.h"
+#include "utlmemory.h"
+
+typedef unsigned int CRC32_t;
+
+class CStandardSendProxies;
+
+
+#define MAX_DELTABITS_SIZE 2048
+
+// ------------------------------------------------------------------------ //
+// SendTable functions.
+// ------------------------------------------------------------------------ //
+
+// Precalculate data that enables the SendTable to be used to encode data.
+bool SendTable_Init( SendTable **pTables, int nTables );
+void SendTable_Term();
+CRC32_t SendTable_GetCRC();
+int SendTable_GetNum();
+SendTable *SendTabe_GetTable(int index);
+
+
+// Return the number of unique properties in the table.
+int SendTable_GetNumFlatProps( SendTable *pTable );
+
+// compares properties and writes delta properties
+int SendTable_WriteAllDeltaProps(
+ const SendTable *pTable,
+ const void *pFromData,
+ const int nFromDataBits,
+ const void *pToData,
+ const int nToDataBits,
+ const int nObjectID,
+ bf_write *pBufOut );
+
+// Write the properties listed in pCheckProps and nCheckProps.
+void SendTable_WritePropList(
+ const SendTable *pTable,
+ const void *pState,
+ const int nBits,
+ bf_write *pOut,
+ const int objectID,
+ const int *pCheckProps,
+ const int nCheckProps
+ );
+
+//
+// Writes the property indices that must be written to move from pFromState to pToState into pDeltaProps.
+// Returns the number of indices written to pDeltaProps.
+//
+int SendTable_CalcDelta(
+ const SendTable *pTable,
+
+ const void *pFromState,
+ const int nFromBits,
+
+ const void *pToState,
+ const int nToBits,
+
+ int *pDeltaProps,
+ int nMaxDeltaProps,
+
+ const int objectID );
+
+
+// This function takes the list of property indices in startProps and the values from
+// SendProxies in pProxyResults, and fills in a new array in outProps with the properties
+// that the proxies want to allow for iClient's client.
+//
+// If pOldStateProxies is non-null, this function adds new properties into the output list
+// if a proxy has turned on from the previous state.
+int SendTable_CullPropsFromProxies(
+ const SendTable *pTable,
+
+ const int *pStartProps,
+ int nStartProps,
+
+ const int iClient,
+
+ const CSendProxyRecipients *pOldStateProxies,
+ const int nOldStateProxies,
+
+ const CSendProxyRecipients *pNewStateProxies,
+ const int nNewStateProxies,
+
+ int *pOutProps,
+ int nMaxOutProps
+ );
+
+
+// Encode the properties that are referenced in the delta bits.
+// If pDeltaBits is NULL, then all the properties are encoded.
+bool SendTable_Encode(
+ const SendTable *pTable,
+ const void *pStruct,
+ bf_write *pOut,
+ int objectID = -1,
+ CUtlMemory<CSendProxyRecipients> *pRecipients = NULL, // If non-null, this is an array of CSendProxyRecipients.
+ // The array must have room for pTable->GetNumDataTableProxies().
+ bool bNonZeroOnly = false // If this is true, then it will write all properties that have
+ // nonzero values.
+ );
+
+
+// In order to receive a table, you must send it from the server and receive its info
+// on the client so the client knows how to unpack it.
+bool SendTable_WriteInfos( SendTable *pTable, bf_write *pBuf );
+
+// do all kinds of checks on a packed entity bitbuffer
+bool SendTable_CheckIntegrity( SendTable *pTable, const void *pData, const int nDataBits );
+
+
+#endif // DATATABLE_SEND_ENG_H