added amb1495 - ISourceMod::Add/RemoveGameFrameHook
--HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401910
This commit is contained in:
+1
-1
@@ -234,7 +234,7 @@ void TimerSystem::GameFrame(bool simulating)
|
||||
g_fTimerThink = CalcNextThink(g_fTimerThink, TIMER_MIN_ACCURACY);
|
||||
}
|
||||
|
||||
RunFrameHooks();
|
||||
RunFrameHooks(simulating);
|
||||
|
||||
if (m_pOnGameFrame->GetFunctionCount())
|
||||
{
|
||||
|
||||
@@ -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
@@ -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_
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user