From af2207632e4a07cc2c16615807521a69d2dad3c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Thu, 5 Aug 2021 00:44:30 +0200 Subject: [PATCH] ksys/act: Implement BaseProcJobHandlerT --- src/KingSystem/ActorSystem/actBaseProcJobHandler.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/KingSystem/ActorSystem/actBaseProcJobHandler.h b/src/KingSystem/ActorSystem/actBaseProcJobHandler.h index 29309498..002058a0 100644 --- a/src/KingSystem/ActorSystem/actBaseProcJobHandler.h +++ b/src/KingSystem/ActorSystem/actBaseProcJobHandler.h @@ -1,5 +1,6 @@ #pragma once +#include #include "KingSystem/ActorSystem/actBaseProcJob.h" #include "KingSystem/Utils/Types.h" @@ -20,4 +21,17 @@ protected: }; KSYS_CHECK_SIZE_NX150(BaseProcJobHandler, 0x30); +/// For binding actor member functions. +template +class BaseProcJobHandlerT : public BaseProcJobHandler { +public: + BaseProcJobHandlerT(BaseProc* proc, void (T::*fn)()) + : BaseProcJobHandler(proc), mDelegate(proc, fn) {} + + void invoke() override { mDelegate.invoke(); } + +private: + sead::Delegate mDelegate; +}; + } // namespace ksys::act