diff options
| author | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
| commit | 39ed87570bdb2f86969d4be821c94b722dc71179 (patch) | |
| tree | abc53757f75f40c80278e87650ea92808274aa59 /sp/src/game/server/toolframework_server.cpp | |
| download | source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip | |
First version of the SOurce SDK 2013
Diffstat (limited to 'sp/src/game/server/toolframework_server.cpp')
| -rw-r--r-- | sp/src/game/server/toolframework_server.cpp | 138 |
1 files changed, 138 insertions, 0 deletions
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();
+}
|