mirror of
https://github.com/0TheSpy/Seaside.git
synced 2025-01-07 10:03:29 +08:00
89 lines
1.6 KiB
C++
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 |