added amb1495 - ISourceMod::Add/RemoveGameFrameHook

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401910
This commit is contained in:
David Anderson
2008-03-01 06:33:25 +00:00
parent 1e6b1c92cc
commit 2be85f1a3e
6 changed files with 61 additions and 5 deletions
+1 -1
View File
@@ -234,7 +234,7 @@ void TimerSystem::GameFrame(bool simulating)
g_fTimerThink = CalcNextThink(g_fTimerThink, TIMER_MIN_ACCURACY);
}
RunFrameHooks();
RunFrameHooks(simulating);
if (m_pOnGameFrame->GetFunctionCount())
{
+2 -2
View File
@@ -39,11 +39,12 @@
float g_LastMenuTime = 0.0f;
float g_LastAuthCheck = 0.0f;
void RunFrameHooks()
void RunFrameHooks(bool simulating)
{
/* Frame based hooks */
g_DBMan.RunFrame();
g_HL2.ProcessFakeCliCmdQueue();
g_SourceMod.ProcessGameFrameHooks(simulating);
float curtime = *g_pUniversalTime;
@@ -60,4 +61,3 @@ void RunFrameHooks()
g_LastAuthCheck = curtime;
}
}
+1 -1
View File
@@ -32,6 +32,6 @@
#ifndef _INCLUDE_SOURCEMOD_FRAME_HOOKS_H_
#define _INCLUDE_SOURCEMOD_FRAME_HOOKS_H_
void RunFrameHooks();
void RunFrameHooks(bool simulating);
#endif //_INCLUDE_SOURCEMOD_FRAME_HOOKS_H_
+30
View File
@@ -670,6 +670,36 @@ time_t SourceModBase::GetAdjustedTime()
return GetAdjustedTime();
}
void SourceModBase::AddGameFrameHook(GAME_FRAME_HOOK hook)
{
m_frame_hooks.push_back(hook);
}
void SourceModBase::RemoveGameFrameHook(GAME_FRAME_HOOK hook)
{
for (size_t i = 0; i < m_frame_hooks.size(); i++)
{
if (m_frame_hooks[i] == hook)
{
m_frame_hooks.erase(m_frame_hooks.iterAt(i));
return;
}
}
}
void SourceModBase::ProcessGameFrameHooks(bool simulating)
{
if (m_frame_hooks.size() == 0)
{
return;
}
for (size_t i = 0; i < m_frame_hooks.size(); i++)
{
m_frame_hooks[i](simulating);
}
}
SMGlobalClass *SMGlobalClass::head = NULL;
SMGlobalClass::SMGlobalClass()
+5
View File
@@ -35,6 +35,7 @@
#include "sm_globals.h"
#include <ISourceMod.h>
#include <sh_stack.h>
#include <sh_vector.h>
#include "CDataPack.h"
using namespace SourceHook;
@@ -114,6 +115,9 @@ public: // ISourceMod
void GlobalPause();
void GlobalUnpause();
void DoGlobalPluginLoads();
void AddGameFrameHook(GAME_FRAME_HOOK hook);
void RemoveGameFrameHook(GAME_FRAME_HOOK hook);
void ProcessGameFrameHooks(bool simulating);
private:
CStack<CDataPack *> m_freepacks;
char m_SMBaseDir[PLATFORM_MAX_PATH];
@@ -124,6 +128,7 @@ private:
bool m_ExecOnMapEnd;
unsigned int m_target;
bool m_GotBasePath;
CVector<GAME_FRAME_HOOK> m_frame_hooks;
};
extern bool g_Loaded;