mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-08 09:49:36 +00:00
1
This commit is contained in:
@@ -0,0 +1,260 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
#include "quakedef.h"
|
||||
#include "precache.h"
|
||||
|
||||
// memdbgon must be the last include file in a .cpp file!!!
|
||||
#include "tier0/memdbgon.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Print out flag names
|
||||
// Input : flags -
|
||||
// Output : char const
|
||||
//-----------------------------------------------------------------------------
|
||||
char const *GetFlagString( int flags )
|
||||
{
|
||||
static char ret[ 512 ];
|
||||
ret[ 0 ] = 0;
|
||||
|
||||
bool first = true;
|
||||
|
||||
if ( !flags )
|
||||
return "None";
|
||||
|
||||
if ( flags & RES_FATALIFMISSING )
|
||||
{
|
||||
if ( !first )
|
||||
{
|
||||
Q_strncat( ret, " | ", sizeof( ret ), COPY_ALL_CHARACTERS );
|
||||
}
|
||||
Q_strncat( ret, "RES_FATALIFMISSING", sizeof( ret ), COPY_ALL_CHARACTERS );
|
||||
first = false;
|
||||
}
|
||||
|
||||
if ( flags & RES_PRELOAD )
|
||||
{
|
||||
if ( !first )
|
||||
{
|
||||
Q_strncat( ret, " | ", sizeof( ret ), COPY_ALL_CHARACTERS );
|
||||
}
|
||||
Q_strncat( ret, "RES_PRELOAD", sizeof( ret ), COPY_ALL_CHARACTERS );
|
||||
first = false;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CPrecacheItem::CPrecacheItem( void )
|
||||
{
|
||||
Init( TYPE_UNK, NULL );
|
||||
ResetStats();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CPrecacheItem::ResetStats( void )
|
||||
{
|
||||
m_uiRefcount = 0;
|
||||
#if DEBUG_PRECACHE
|
||||
m_flFirst = 0.0f;
|
||||
m_flMostRecent = 0.0f;
|
||||
#endif
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CPrecacheItem::Reference( void )
|
||||
{
|
||||
m_uiRefcount++;
|
||||
#if DEBUG_PRECACHE
|
||||
m_flMostRecent = realtime;
|
||||
if ( !m_flFirst )
|
||||
{
|
||||
m_flFirst = realtime;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : type -
|
||||
// *ptr -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CPrecacheItem::Init( int type, void const *ptr )
|
||||
{
|
||||
m_nType = type;
|
||||
u.model = ( model_t * )ptr;
|
||||
if ( ptr )
|
||||
{
|
||||
ResetStats();
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Output : model_t
|
||||
//-----------------------------------------------------------------------------
|
||||
model_t *CPrecacheItem::GetModel( void )
|
||||
{
|
||||
if ( !u.model )
|
||||
return NULL;
|
||||
|
||||
Assert( m_nType == TYPE_MODEL );
|
||||
|
||||
Reference();
|
||||
|
||||
return u.model;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Output : char const
|
||||
//-----------------------------------------------------------------------------
|
||||
char const *CPrecacheItem::GetGeneric( void )
|
||||
{
|
||||
if ( !u.generic )
|
||||
return NULL;
|
||||
|
||||
Assert( m_nType == TYPE_GENERIC );
|
||||
|
||||
Reference();
|
||||
|
||||
return u.generic;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Output : CSfxTable
|
||||
//-----------------------------------------------------------------------------
|
||||
CSfxTable *CPrecacheItem::GetSound( void )
|
||||
{
|
||||
if ( !u.sound )
|
||||
return NULL;
|
||||
|
||||
Assert( m_nType == TYPE_SOUND );
|
||||
|
||||
Reference();
|
||||
|
||||
return u.sound;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Output : char const
|
||||
//-----------------------------------------------------------------------------
|
||||
char const *CPrecacheItem::GetName( void )
|
||||
{
|
||||
if ( !u.name )
|
||||
return NULL;
|
||||
|
||||
Assert( m_nType == TYPE_SOUND );
|
||||
|
||||
Reference();
|
||||
|
||||
return u.name;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Output : char const
|
||||
//-----------------------------------------------------------------------------
|
||||
char const *CPrecacheItem::GetDecal( void )
|
||||
{
|
||||
if ( !u.name )
|
||||
return NULL;
|
||||
|
||||
Assert( m_nType == TYPE_DECAL );
|
||||
|
||||
Reference();
|
||||
|
||||
return u.name;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : *pmodel -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CPrecacheItem::SetModel( model_t const *pmodel )
|
||||
{
|
||||
Init( TYPE_MODEL, pmodel );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : *pname -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CPrecacheItem::SetGeneric( char const *pname )
|
||||
{
|
||||
Init( TYPE_GENERIC, pname );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : *psound -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CPrecacheItem::SetSound( CSfxTable const *psound )
|
||||
{
|
||||
Init( TYPE_SOUND, psound );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : *name -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CPrecacheItem::SetName( char const *name )
|
||||
{
|
||||
Init( TYPE_SOUND, name );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : *decalname -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CPrecacheItem::SetDecal( char const *decalname )
|
||||
{
|
||||
Init( TYPE_DECAL, decalname );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Output : float
|
||||
//-----------------------------------------------------------------------------
|
||||
float CPrecacheItem::GetFirstReference( void )
|
||||
{
|
||||
#if DEBUG_PRECACHE
|
||||
return m_flFirst;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Output : float
|
||||
//-----------------------------------------------------------------------------
|
||||
float CPrecacheItem::GetMostRecentReference( void )
|
||||
{
|
||||
#if DEBUG_PRECACHE
|
||||
return m_flMostRecent;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Output : unsigned int
|
||||
//-----------------------------------------------------------------------------
|
||||
unsigned int CPrecacheItem::GetReferenceCount( void )
|
||||
{
|
||||
return m_uiRefcount;
|
||||
}
|
||||
Reference in New Issue
Block a user