mirror of
https://github.com/celisej567/source-engine.git
synced 2026-01-05 22:09:59 +03:00
1
This commit is contained in:
107
public/iclientnetworkable.h
Normal file
107
public/iclientnetworkable.h
Normal file
@@ -0,0 +1,107 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef ICLIENTNETWORKABLE_H
|
||||
#define ICLIENTNETWORKABLE_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
|
||||
#include "iclientunknown.h"
|
||||
#include "tier1/bitbuf.h"
|
||||
|
||||
|
||||
class IClientEntity;
|
||||
class ClientClass;
|
||||
|
||||
|
||||
enum ShouldTransmitState_t
|
||||
{
|
||||
SHOULDTRANSMIT_START=0, // The entity is starting to be transmitted (maybe it entered the PVS).
|
||||
|
||||
SHOULDTRANSMIT_END // Called when the entity isn't being transmitted by the server.
|
||||
// This signals a good time to hide the entity until next time
|
||||
// the server wants to transmit its state.
|
||||
};
|
||||
|
||||
// NOTE: All of these are commented out; NotifyShouldTransmit actually
|
||||
// has all these in them. Left it as an enum in case we want to go back though
|
||||
enum DataUpdateType_t
|
||||
{
|
||||
DATA_UPDATE_CREATED = 0, // indicates it was created +and+ entered the pvs
|
||||
// DATA_UPDATE_ENTERED_PVS,
|
||||
DATA_UPDATE_DATATABLE_CHANGED,
|
||||
// DATA_UPDATE_LEFT_PVS,
|
||||
// DATA_UPDATE_DESTROYED, // FIXME: Could enable this, but it's a little worrying
|
||||
// since it changes a bunch of existing code
|
||||
};
|
||||
|
||||
abstract_class IClientNetworkable
|
||||
{
|
||||
public:
|
||||
// Gets at the containing class...
|
||||
virtual IClientUnknown* GetIClientUnknown() = 0;
|
||||
|
||||
// Called by the engine when the server deletes the entity.
|
||||
virtual void Release() = 0;
|
||||
|
||||
// Supplied automatically by the IMPLEMENT_CLIENTCLASS macros.
|
||||
virtual ClientClass* GetClientClass() = 0;
|
||||
|
||||
// This tells the entity what the server says for ShouldTransmit on this entity.
|
||||
// Note: This used to be EntityEnteredPVS/EntityRemainedInPVS/EntityLeftPVS.
|
||||
virtual void NotifyShouldTransmit( ShouldTransmitState_t state ) = 0;
|
||||
|
||||
|
||||
|
||||
//
|
||||
// NOTE FOR ENTITY WRITERS:
|
||||
//
|
||||
// In 90% of the cases, you should hook OnPreDataChanged/OnDataChanged instead of
|
||||
// PreDataUpdate/PostDataUpdate.
|
||||
//
|
||||
// The DataChanged events are only called once per frame whereas Pre/PostDataUpdate
|
||||
// are called once per packet (and sometimes multiple times per frame).
|
||||
//
|
||||
// OnDataChanged is called during simulation where entity origins are correct and
|
||||
// attachments can be used. whereas PostDataUpdate is called while parsing packets
|
||||
// so attachments and other entity origins may not be valid yet.
|
||||
//
|
||||
|
||||
virtual void OnPreDataChanged( DataUpdateType_t updateType ) = 0;
|
||||
virtual void OnDataChanged( DataUpdateType_t updateType ) = 0;
|
||||
|
||||
// Called when data is being updated across the network.
|
||||
// Only low-level entities should need to know about these.
|
||||
virtual void PreDataUpdate( DataUpdateType_t updateType ) = 0;
|
||||
virtual void PostDataUpdate( DataUpdateType_t updateType ) = 0;
|
||||
|
||||
|
||||
// Objects become dormant on the client if they leave the PVS on the server.
|
||||
virtual bool IsDormant( void ) = 0;
|
||||
|
||||
// Ent Index is the server handle used to reference this entity.
|
||||
// If the index is < 0, that indicates the entity is not known to the server
|
||||
virtual int entindex( void ) const = 0;
|
||||
|
||||
// Server to client entity message received
|
||||
virtual void ReceiveMessage( int classID, bf_read &msg ) = 0;
|
||||
|
||||
// Get the base pointer to the networked data that GetClientClass->m_pRecvTable starts at.
|
||||
// (This is usually just the "this" pointer).
|
||||
virtual void* GetDataTableBasePtr() = 0;
|
||||
|
||||
// Tells the entity that it's about to be destroyed due to the client receiving
|
||||
// an uncompressed update that's caused it to destroy all entities & recreate them.
|
||||
virtual void SetDestroyedOnRecreateEntities( void ) = 0;
|
||||
|
||||
virtual void OnDataUnchangedInPVS() = 0;
|
||||
};
|
||||
|
||||
|
||||
#endif // ICLIENTNETWORKABLE_H
|
||||
Reference in New Issue
Block a user