Hello, I came across an interesting question that I'm having a hard time trying to answer. Which of the following snippets contains more efficient code? Is there a better way to enable / disable the hook?
Code:
Function()
{
if(something)
{
state PreThink:enabled;
}
}
public client_PreThink(id) <PreThink:enabled>
{
if(something)
{
state PreThink:disabled;
// some code
}
}
public client_PreThink(id) <PreThink:disabled> {}
public client_PreThink(id) <> {}
Code:
new forward_PreThink;
Function()
{
if(!forward_PreThink && something)
{
forward_PreThink = register_forward(FM_PlayerPreThink, "OnPreThink");
}
}
public OnPreThink(id)
{
if(something)
{
unregister_forward(FM_PlayerPreThink, forward_PreThink);
forward_PreThink = 0;
// some code
}
}
Code:
new HamHook:hook_Player_PreThink;
public plugin_init()
{
hook_Player_PreThink = RegisterHam(Ham_Player_PreThink, "player", "OnPlayer_PreThink");
}
Function()
{
if(something)
{
EnableHamForward(hook_Player_PreThink);
}
}
public OnPreThink(id)
{
if(something)
{
DisableHamForward(hook_Player_PreThink);
// some code
}
}