// IServerNetworkable is the interface the engine uses for all networkable data. class IServerNetworkable { // These functions are handled automatically by the server_class macros and CBaseNetworkable. public: // Gets at the entity handle associated with the collideable virtual IHandleEntity *GetEntityHandle() = 0; // Tell the engine which class this object is. 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; // In place of a generic QueryInterface. virtual CBaseNetworkable* GetBaseNetworkable() = 0; virtual CBaseEntity* GetBaseEntity() = 0; // Only used by game code. virtual PVSInfo_t* GetPVSInfo() = 0; // get current visibilty data protected: // Should never call delete on this! virtual ~IServerNetworkable() {} }; #endif // ISERVERNETWORKABLE_H