1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2024-11-08 00:37:15 +01:00

Extended callback binding on basic event type to allow custom environments.

This commit is contained in:
Sandu Liviu Catalin 2015-11-01 02:14:45 +02:00
parent dd685a13e4
commit 0796185225
2 changed files with 17 additions and 5 deletions

View File

@ -239,11 +239,16 @@ Function BasicEvent::GetOnTrigger() const noexcept
return m_OnTrigger;
}
void BasicEvent::SetOnTrigger(const Function & func) noexcept
void BasicEvent::SetOnTrigger(Function & func) noexcept
{
m_OnTrigger = func;
}
void BasicEvent::SetOnTrigger_Env(SqObj & env, Function & func) noexcept
{
m_OnTrigger = Function(env.GetVM(), env, func.GetFunc());
}
// ------------------------------------------------------------------------------------------------
bool BasicEvent::Compatible(SQInt32 type) const noexcept
{
@ -1936,13 +1941,14 @@ bool Register_BasicEvent(HSQUIRRELVM vm)
typedef NoCopy< BasicEvent > Allocator;
// Attempt to register the specified type
Sqrat::RootTable(vm).Bind(_SC("BasicEvent"), Sqrat::Class< BasicEvent, Allocator >(vm, _SC("BasicEvent"))
/* Constructors */
.Ctor()
.Ctor< SQInt32 >()
.Ctor< SQInt32, bool >()
/* Metamethods */
.Func(_SC("_cmp"), &BasicEvent::Cmp)
.Func(_SC("_tostring"), &BasicEvent::GetName)
/* Properties */
.Prop(_SC("ltag"), &BasicEvent::GetTag, &BasicEvent::SetTag)
.Prop(_SC("ldata"), &BasicEvent::GetData, &BasicEvent::SetData)
.Prop(_SC("type"), &BasicEvent::GetType , &BasicEvent::SetType)
@ -1955,8 +1961,9 @@ bool Register_BasicEvent(HSQUIRRELVM vm)
.Prop(_SC("suspended"), &BasicEvent::GetSuspended, &BasicEvent::SetSuspended)
.Func(_SC("compatible"), &BasicEvent::Compatible)
.Func(_SC("name"), &BasicEvent::GetName)
.Prop(_SC("on_trigger"), &BasicEvent::GetOnTrigger, &BasicEvent::SetOnTrigger)
/* Functions */
.Func(_SC("set_on_trigger"), &BasicEvent::SetOnTrigger_Env)
);
// Output debugging information
LogDbg("Registration of <BasicEvent> type was successful");

View File

@ -235,7 +235,12 @@ public:
/* --------------------------------------------------------------------------------------------
* ...
*/
void SetOnTrigger(const Function & func) noexcept;
void SetOnTrigger(Function & func) noexcept;
/* --------------------------------------------------------------------------------------------
* ...
*/
void SetOnTrigger_Env(SqObj & env, Function & func) noexcept;
/* --------------------------------------------------------------------------------------------
* ...