@@ -35,10 +35,13 @@ class RENDER_PIPELINE_DECL FunctionalTask : public AsyncTask
3535 using TaskFunc = std::function<DoneStatus(FunctionalTask*)>;
3636 using BirthFunc = std::function<void (FunctionalTask*)>;
3737 using DeathFunc = std::function<void (FunctionalTask*, bool )>;
38+ using UserDataType = std::shared_ptr<void >;
3839
3940public:
4041 FunctionalTask (const TaskFunc& func = nullptr , const std::string& name = {});
42+ FunctionalTask (const TaskFunc& func, const UserDataType& data, const std::string& name = {});
4143 FunctionalTask (TaskFunc&& func, const std::string& name = {});
44+ FunctionalTask (TaskFunc&& func, const UserDataType& data, const std::string& name = {});
4245
4346 ALLOC_DELETED_CHAIN (FunctionalTask);
4447
@@ -56,6 +59,9 @@ class RENDER_PIPELINE_DECL FunctionalTask : public AsyncTask
5659 void set_upon_death (DeathFunc&& func);
5760 const DeathFunc& get_upon_death () const ;
5861
62+ void set_user_data (const UserDataType& data);
63+ UserDataType get_user_data () const ;
64+
5965protected:
6066 bool is_runnable () override ;
6167 DoneStatus do_task () override ;
@@ -66,6 +72,7 @@ class RENDER_PIPELINE_DECL FunctionalTask : public AsyncTask
6672 TaskFunc function_;
6773 BirthFunc upon_birth_;
6874 DeathFunc upon_death_;
75+ UserDataType user_data_;
6976
7077public:
7178 static TypeHandle get_class_type ();
@@ -124,6 +131,16 @@ inline const FunctionalTask::DeathFunc& FunctionalTask::get_upon_death() const
124131 return upon_death_;
125132}
126133
134+ inline void FunctionalTask::set_user_data (const UserDataType& data)
135+ {
136+ user_data_ = data;
137+ }
138+
139+ inline FunctionalTask::UserDataType FunctionalTask::get_user_data () const
140+ {
141+ return user_data_;
142+ }
143+
127144inline bool FunctionalTask::is_runnable ()
128145{
129146 return bool (function_);
0 commit comments