From 39ed87570bdb2f86969d4be821c94b722dc71179 Mon Sep 17 00:00:00 2001 From: Joe Ludwig Date: Wed, 26 Jun 2013 15:22:04 -0700 Subject: First version of the SOurce SDK 2013 --- sp/src/game/server/toolframework_server.cpp | 138 ++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 sp/src/game/server/toolframework_server.cpp (limited to 'sp/src/game/server/toolframework_server.cpp') diff --git a/sp/src/game/server/toolframework_server.cpp b/sp/src/game/server/toolframework_server.cpp new file mode 100644 index 00000000..6b008a99 --- /dev/null +++ b/sp/src/game/server/toolframework_server.cpp @@ -0,0 +1,138 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//===========================================================================// +#include "cbase.h" +#include "igamesystem.h" +#include "toolframework/iserverenginetools.h" +#include "init_factory.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(); +} -- cgit v1.2.3