This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
nekohook/modules/source2013/sdk/game/client/c_basetempentity.h
2020-08-04 13:13:01 -04:00

117 lines
3.7 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef C_BASETEMPENTITY_H
#define C_BASETEMPENTITY_H
#ifdef _WIN32
#pragma once
#endif
#include "c_recipientfilter.h"
#include "client_class.h"
#include "iclientnetworkable.h"
//-----------------------------------------------------------------------------
// Purpose: Base class for TEs. All TEs should derive from this and at
// least implement OnDataChanged to be notified when the TE has been received
// from the server
//-----------------------------------------------------------------------------
class C_BaseTempEntity : public IClientUnknown,
public IClientNetworkable
{
public:
DECLARE_CLASS_NOBASE(C_BaseTempEntity);
DECLARE_CLIENTCLASS();
C_BaseTempEntity(void);
virtual ~C_BaseTempEntity(void);
// IClientUnknown implementation.
public:
virtual void SetRefEHandle(const CBaseHandle &handle) { Assert(false); }
virtual const CBaseHandle &GetRefEHandle() const {
return *((CBaseHandle *)0);
}
virtual IClientUnknown *GetIClientUnknown() { return this; }
virtual ICollideable *GetCollideable() { return 0; }
virtual IClientNetworkable *GetClientNetworkable() { return this; }
virtual IClientRenderable *GetClientRenderable() { return 0; }
virtual IClientEntity *GetIClientEntity() { return 0; }
virtual C_BaseEntity *GetBaseEntity() { return 0; }
virtual IClientThinkable *GetClientThinkable() { return 0; }
// IClientNetworkable overrides.
public:
virtual void Release();
virtual void NotifyShouldTransmit(ShouldTransmitState_t state);
virtual void PreDataUpdate(DataUpdateType_t updateType);
virtual void PostDataUpdate(DataUpdateType_t updateType);
virtual void OnDataUnchangedInPVS(void) {}
virtual void OnPreDataChanged(DataUpdateType_t updateType);
virtual void OnDataChanged(DataUpdateType_t updateType);
virtual void SetDormant(bool bDormant);
virtual bool IsDormant(void);
virtual int entindex(void) const;
virtual void ReceiveMessage(int classID, bf_read &msg);
virtual void *GetDataTableBasePtr();
virtual void SetDestroyedOnRecreateEntities(void);
public:
// Dummy for CNetworkVars.
void NetworkStateChanged() {}
void NetworkStateChanged(void *pVar) {}
virtual bool Init(int entnum, int iSerialNum);
virtual void Precache(void);
// For dynamic entities, return true to allow destruction
virtual bool ShouldDestroy(void) { return false; };
C_BaseTempEntity *GetNext(void);
// Get list of tempentities
static C_BaseTempEntity *GetList(void);
C_BaseTempEntity *GetNextDynamic(void);
// Determine the color modulation amount
void GetColorModulation(float *color) {
assert(color);
color[0] = color[1] = color[2] = 1.0f;
}
// Should this object be able to have shadows cast onto it?
virtual bool ShouldReceiveProjectedTextures(int flags) { return false; }
// Static members
public:
// List of dynamically allocated temp entis
static C_BaseTempEntity *GetDynamicList();
// Called at startup to allow temp entities to precache any models/sounds
// that they need
static void PrecacheTempEnts(void);
static void ClearDynamicTempEnts(void);
static void CheckDynamicTempEnts(void);
private:
// Next in chain
C_BaseTempEntity *m_pNext;
C_BaseTempEntity *m_pNextDynamic;
// TEs add themselves to this list for the executable.
static C_BaseTempEntity *s_pTempEntities;
static C_BaseTempEntity *s_pDynamicEntities;
};
#endif // C_BASETEMPENTITY_H