class ScriptCallQueueSource
ScriptCallQueue Class provide "lazy" calls - when we don't want to execute function immediately but later during frame update (used mainly in UI)
usage:
class Arkanoid extends Game
{
ref ScriptCallQueue m_CallQueue = new ScriptCallQueue();
ScriptCallQueue GetCallQueue() {
return m_CallQueue;
}
override void OnUpdate(float timeslice)
{
m_CallQueue.Tick(timeslice);
...
}
...
}
class MyObject
{
int m_cnt = 0;
void Hello(int p1, string p2)
{
Print("Hello( " + p1 + " , " + p2 + ")");
}
void Test()
{
Print(m_cnt);
m_cnt++;
if (m_cnt > 10)
{
ScriptCallQueue queue = g_Game.GetCallQueue();
queue.Remove(Test);
}
}
}
void Test(MyObject obj)
{
ScriptCallQueue queue = g_Game.GetCallQueue();
queue.CallLater(obj.Hello, 5000, false, 65, "world"); // adds call 'obj.Hello(65, "world")' into queue, and it will be executed once after 5s
queue.CallLater(obj.Test, 3000, true); // adds call 'obj.Test()' into queue, and it will be executed each 3s
queue.Call(obj.Hello, 72, "world 2"); // adds call 'obj.Hello(72, "world 2")' into queue, and it will be executed next frame (on next call of ScriptCallQueue.Tick)
}Methods 10
proto native void Tick(float timeslice)executes calls on queue if their time is already elapsed, if 'repeat = false' call is removed from queue
proto void Call(func fn, void param1 = NULL, void param2 = NULL, void param3 = NULL, void param4 = NULL, void param5 = NULL, void param6 = NULL, void param7 = NULL, void param8 = NULL, void param9 = NULL)adds call into the queue with given parameters and arguments (arguments are held in memory until the call is executed/removed or ScriptCallQueue is destroyed)
adds call into the queue with given parameters and arguments (arguments are held in memory until the call is executed/removed or ScriptCallQueue is destroyed)
proto void CallLater(func fn, int delay = 0, bool repeat = false, void param1 = NULL, void param2 = NULL, void param3 = NULL, void param4 = NULL, void param5 = NULL, void param6 = NULL, void param7 = NULL, void param8 = NULL, void param9 = NULL)adds call into the queue with given parameters and arguments (arguments are held in memory until the call is executed/removed or ScriptCallQueue is destroyed)
proto void CallLaterByName(Class obj, string fnName, int delay = 0, bool repeat = false, Param params = NULL)adds call into the queue with given parameters and arguments (arguments are held in memory until the call is executed/removed or ScriptCallQueue is destroyed)
proto void Remove(func fn)remove specific call from queue
Show 21 more
, ComponentEntityDebug.DebugDirectionDelete(), DayZGame.CancelLoginTimeCountdown(), DynamicMusicPlayer.ResetWaitingQueue(), Fence.CheckFenceClosed(), Fence.CheckFenceOpened(), Fence.CloseFence(), Fence.OpenFence(), InviteMenu.Cancel(), InviteMenu.Update(), ItemBase.StartItemSoundServer(), ItemBase.StopItemSoundServer(), Land_Underground_EntranceBase.OnAction(), LogoutMenu.Cancel(), LogoutMenu.Exit(), MissionGameplay.InputBufferCheck(), MissionServer.~MissionServer(), PlayerBase.OnDrowningEnd(), Torch_Video.OnWorkStop(), UiHintPanel.StopSlideShow(), VideoPlayer.OnPlaybackStop(), and VideoPlayer.UpdateTotalTime()return Remaining time to the call execution (in miliseconds)
remove specific call from queue
return Remaining time to the call execution (in miliseconds)
proto native void Clear()remove all calls from queue