summaryrefslogtreecommitdiff
path: root/engine/precache.cpp
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /engine/precache.cpp
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'engine/precache.cpp')
-rw-r--r--engine/precache.cpp260
1 files changed, 260 insertions, 0 deletions
diff --git a/engine/precache.cpp b/engine/precache.cpp
new file mode 100644
index 0000000..27e6d07
--- /dev/null
+++ b/engine/precache.cpp
@@ -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;
+} \ No newline at end of file