Seaside/SpyCustom/sdk/iservernetworkable.h
2021-06-16 18:46:33 +03:00

89 lines
1.6 KiB
C++

#ifndef ISERVERNETWORKABLE_H
#define ISERVERNETWORKABLE_H
#ifdef _WIN32
#pragma once
#endif
#include "ihandleentity.h"
#include "basetypes.h"
#include "bitvec.h"
#include "const.h"
#include "bspfile.h"
#define MAX_FAST_ENT_CLUSTERS 4
#define MAX_ENT_CLUSTERS 64
#define MAX_WORLD_AREAS 8
class ServerClass;
class SendTable;
struct edict_t;
class CBaseEntity;
class CSerialEntity;
class CBaseNetworkable;
class CCheckTransmitInfo
{
public:
edict_t* m_pClientEnt;
byte m_PVS[PAD_NUMBER(MAX_MAP_CLUSTERS, 8) / 8];
int m_nPVSSize;
CBitVec<MAX_EDICTS>* m_pTransmitEdict;
CBitVec<MAX_EDICTS>* m_pTransmitAlways;
int m_AreasNetworked;
int m_Areas[MAX_WORLD_AREAS];
byte m_AreaFloodNums[MAX_MAP_AREAS];
int m_nMapAreas;
};
struct PVSInfo_t
{
short m_nHeadNode;
short m_nClusterCount;
unsigned short* m_pClusters;
short m_nAreaNum;
short m_nAreaNum2;
float m_vCenter[3];
private:
unsigned short m_pClustersInline[MAX_FAST_ENT_CLUSTERS];
friend class CVEngineServer;
};
class IServerNetworkable
{
public:
virtual IHandleEntity* GetEntityHandle() = 0;
virtual ServerClass* GetServerClass() = 0;
virtual edict_t* GetEdict() const = 0;
virtual const char* GetClassName() const = 0;
virtual void Release() = 0;
virtual int AreaNum() const = 0;
virtual CBaseNetworkable* GetBaseNetworkable() = 0;
virtual CBaseEntity* GetBaseEntity() = 0;
virtual PVSInfo_t* GetPVSInfo() = 0;
protected:
virtual ~IServerNetworkable() {}
};
#endif