mirror of
https://github.com/bulletphysics/bullet3
synced 2024-12-14 05:40:05 +00:00
ab8f16961e
Apply clang-format-all.sh using the _clang-format file through all the cpp/.h files. make sure not to apply it to certain serialization structures, since some parser expects the * as part of the name, instead of type. This commit contains no other changes aside from adding and applying clang-format-all.sh
82 lines
1.5 KiB
C++
82 lines
1.5 KiB
C++
/*
|
|
GWEN
|
|
Copyright (c) 2010 Facepunch Studios
|
|
See license in Gwen.h
|
|
*/
|
|
|
|
#pragma once
|
|
#ifndef GWEN_HOOK_H
|
|
#define GWEN_HOOK_H
|
|
|
|
#include "Gwen/Gwen.h"
|
|
#include <list>
|
|
|
|
#ifdef GWEN_HOOKSYSTEM
|
|
|
|
namespace Gwen
|
|
{
|
|
namespace Hook
|
|
{
|
|
class GWEN_EXPORT BaseHook
|
|
{
|
|
public:
|
|
virtual bool OnControlClicked(Gwen::Controls::Base*, int /*iMouseX*/, int /*iMouseY*/) { return false; };
|
|
};
|
|
|
|
typedef std::list<BaseHook*> HookList;
|
|
|
|
GWEN_EXPORT HookList& GetHookList();
|
|
|
|
GWEN_EXPORT void AddHook(BaseHook* pHook);
|
|
GWEN_EXPORT void RemoveHook(BaseHook* pHook);
|
|
|
|
template <typename fnc>
|
|
bool CallHook(fnc f)
|
|
{
|
|
for (HookList::iterator it = GetHookList().begin(); it != GetHookList().end(); ++it)
|
|
{
|
|
if (((*it)->*f)()) return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
template <typename fnc, typename AA>
|
|
bool CallHook(fnc f, AA a)
|
|
{
|
|
for (HookList::iterator it = GetHookList().begin(); it != GetHookList().end(); ++it)
|
|
{
|
|
if (((*it)->*f)(a)) return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
template <typename fnc, typename AA, typename AB>
|
|
bool CallHook(fnc f, AA a, AB b)
|
|
{
|
|
for (HookList::iterator it = GetHookList().begin(); it != GetHookList().end(); ++it)
|
|
{
|
|
if (((*it)->*f)(a, b)) return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
template <typename fnc, typename AA, typename AB, typename AC>
|
|
bool CallHook(fnc f, AA a, AB b, AC c)
|
|
{
|
|
for (HookList::iterator it = GetHookList().begin(); it != GetHookList().end(); ++it)
|
|
{
|
|
if (((*it)->*f)(a, b, c)) return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
} // namespace Hook
|
|
|
|
} // namespace Gwen
|
|
|
|
#endif
|
|
#endif
|