#pragma once struct RecvProp; struct DVariant { union { float m_Float; long m_Int; char* m_pString; void* m_pData; float m_Vector[3]; int64_t m_Int64; }; int m_Type; }; struct CRecvProxyData { const RecvProp* m_pRecvProp; DVariant m_Value; int m_iElement; int m_ObjectID; }; struct RecvTable { RecvProp* m_pProps; int m_nProps; void* m_pDecoder; char* m_pNetTableName; bool m_bInitialized; bool m_bInMainList; }; typedef void (*RecvVarProxyFn)(const CRecvProxyData* pData, void* pStruct, void* pOut); struct RecvProp { char* m_pVarName; int m_RecvType; int m_Flags; int m_StringBufferSize; bool m_bInsideArray; const void* m_pExtraData; RecvProp* m_pArrayProp; void* m_ArrayLengthProxy; RecvVarProxyFn m_ProxyFn; void* m_DataTableProxyFn; RecvTable* m_pDataTable; int m_Offset; int m_ElementStride; int m_nElements; const char* m_pParentArrayPropName; }; class IClientNetworkable; typedef IClientNetworkable* (*CreateClientClassFn)(int entnum, int serialNum); typedef IClientNetworkable* (*CreateEventFn)(); class ClientClass { public: CreateClientClassFn m_pCreateFn; CreateEventFn* m_pCreateEventFn; char* m_pNetworkName; RecvTable* m_pRecvTable; ClientClass* m_pNext; int m_ClassID; }; class IBaseClientDLL { public: ClientClass* GetAllClasses() { typedef ClientClass* (*oGetAllClasses)(void*); return getvfunc(this, 8)(this); } };