#ifndef HYDRATASK #define HYDRATASK #include "../engine/HydraObject.h" #include class CLASS_DEFINE HydraTask : public HydraObject { private: int m_child_tasks = 0; HydraID m_dependant_task = INVALID_HYDRA_ID; HydraID m_barrierID = INVALID_HYDRA_ID; std::thread::id m_notifyID; HydraThreadAffinity ThreadAffinity = HydraThreadAffinity::General; bool m_notifyThread = true; void _RunTask(); friend class HydraTaskScheduler; protected: HydraID m_taskID; public: HydraID GetBarrierID() {return m_barrierID;} virtual void Process() = 0; virtual void Notify() {}; virtual void Complete() {}; }; #endif /* HYDRATASK */