117 lines
3.7 KiB
C++
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
|