Plasma Engine  2.0
Loading...
Searching...
No Matches
DelegateTask.h
1#pragma once
2
3#include <Foundation/Threading/TaskSystem.h>
4
6template <typename T>
7class plDelegateTask final : public plTask
8{
9public:
10 using FunctionType = plDelegate<void(const T&)>;
11
12 plDelegateTask(const char* szTaskName, plTaskNesting taskNesting, FunctionType func, const T& param)
13 {
14 m_Func = func;
15 m_param = param;
16 ConfigureTask(szTaskName, taskNesting);
17 }
18
19private:
20 virtual void Execute() override { m_Func(m_param); }
21
22 FunctionType m_Func;
23 T m_param;
24};
25
26template <>
27class plDelegateTask<void> final : public plTask
28{
29public:
30 using FunctionType = plDelegate<void()>;
31
32 plDelegateTask(const char* szTaskName, plTaskNesting taskNesting, FunctionType func)
33 {
34 m_Func = func;
35 ConfigureTask(szTaskName, taskNesting);
36 }
37
38private:
39 virtual void Execute() override { m_Func(); }
40
41 FunctionType m_Func;
42};
virtual void Execute() override
Override this to implement the task's supposed functionality.
Definition DelegateTask.h:39
A simple task implementation that calls a delegate function.
Definition DelegateTask.h:8
virtual void Execute() override
Override this to implement the task's supposed functionality.
Definition DelegateTask.h:20
Base class for custom tasks.
Definition Task.h:10
void ConfigureTask(const char *szTaskName, plTaskNesting nestingMode, plOnTaskFinishedCallback callback=plOnTaskFinishedCallback())
Sets the most important task properties. This has to be done before the task is added to a task group...
Definition Task.cpp:17