#pragma once #include #include "Library/Execute/ExecutorListBase.h" namespace agl { class DrawContext; } namespace al { struct ExecuteSystemInitInfo; class LayoutActor; class ExecutorListLayoutDrawBase : public ExecutorListBase { public: ExecutorListLayoutDrawBase(const char* name, s32 size, const ExecuteSystemInitInfo& initInfo); bool isActive() const override; void executeList() const override; virtual void startDraw() const = 0; void registerLayout(LayoutActor* layout); agl::DrawContext* getContext() const { return mContext; } private: s32 mCapacity = 0; s32 mSize = 0; LayoutActor** mList = nullptr; agl::DrawContext* mContext = nullptr; }; static_assert(sizeof(ExecutorListLayoutDrawBase) == 0x28); class ExecutorListLayoutDrawNormal : public ExecutorListLayoutDrawBase { public: ExecutorListLayoutDrawNormal(const char* name, s32 size, const ExecuteSystemInitInfo& initInfo); void startDraw() const override; }; } // namespace al