Counter Strike : Global Offensive Source Code
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//===== Copyright � 1996-2005, Valve Corporation, All rights reserved. ======//
//
// Purpose:
//
// $NoKeywords: $
//
//===========================================================================//
#include "cbase.h"
#include "igamesystem.h"
#include "toolframework/iserverenginetools.h"
#include "init_factory.h"
// NOTE: This has to be the last file included!
#include "tier0/memdbgon.h"
//-----------------------------------------------------------------------------
// Purpose: This is an autogame system which is used to call back into the engine at appropriate points
// so that IToolSystems can get these hooks at the correct time
//-----------------------------------------------------------------------------
class CToolFrameworkServer : public CAutoGameSystemPerFrame, public IToolFrameworkServer { public: virtual bool Init(); // Level init, shutdown
virtual void LevelInitPreEntity(); // entities are created / spawned / precached here
virtual void LevelInitPostEntity(); virtual void LevelShutdownPreEntity(); // Entities are deleted / released here...
virtual void LevelShutdownPostEntity(); // Called each frame before entities think
virtual void FrameUpdatePreEntityThink(); // called after entities think
virtual void FrameUpdatePostEntityThink(); virtual void PreClientUpdate(); virtual void PreSetupVisibility();
IServerEngineTools *m_pTools; };
// Singleton
static CToolFrameworkServer g_ToolFrameworkServer; IToolFrameworkServer *g_pToolFrameworkServer = &g_ToolFrameworkServer;
#ifndef NO_TOOLFRAMEWORK
bool ToolsEnabled() { return g_ToolFrameworkServer.m_pTools && g_ToolFrameworkServer.m_pTools->InToolMode() && !engine->IsDedicatedServer(); }
#endif
bool CToolFrameworkServer::Init() { factorylist_t list; FactoryList_Retrieve( list );
// Latch onto internal interface
m_pTools = ( IServerEngineTools * )list.engineFactory( VSERVERENGINETOOLS_INTERFACE_VERSION, NULL );
if ( !m_pTools && !engine->IsDedicatedServer() ) { return false; }
return true; }
void CToolFrameworkServer::LevelInitPreEntity() { if ( !m_pTools ) { return; } m_pTools->LevelInitPreEntityAllTools(); }
void CToolFrameworkServer::LevelInitPostEntity() { if ( !m_pTools ) { return; } m_pTools->LevelInitPostEntityAllTools(); }
void CToolFrameworkServer::LevelShutdownPreEntity() { if ( !m_pTools ) { return; } m_pTools->LevelShutdownPreEntityAllTools(); }
void CToolFrameworkServer::LevelShutdownPostEntity() { if ( !m_pTools ) { return; } m_pTools->LevelShutdownPostEntityAllTools(); }
void CToolFrameworkServer::FrameUpdatePreEntityThink() { if ( !m_pTools ) { return; } m_pTools->FrameUpdatePreEntityThinkAllTools(); }
void CToolFrameworkServer::FrameUpdatePostEntityThink() { if ( !m_pTools ) { return; } m_pTools->FrameUpdatePostEntityThinkAllTools(); }
void CToolFrameworkServer::PreClientUpdate() { if ( !m_pTools ) { return; } m_pTools->PreClientUpdateAllTools(); }
void CToolFrameworkServer::PreSetupVisibility() { if ( !m_pTools ) { return; } m_pTools->PreSetupVisibilityAllTools(); }
|