#pragma once

#include "IResizeNotifiable.hpp"
#include "IRenderTarget.hpp"
#include "ITexture.hpp"

namespace TSE
{
    class IRenderTextureCreator;

    class IRenderTexture : public IRenderTarget, public ITexture, public IResizeNotifiable
    {
    public:
        inline static IRenderTextureCreator* factory = nullptr;
        virtual void SetSize(Vector2 v) = 0;
        virtual uint GetTextureId(uint id) const = 0;
    };

    class IRenderTextureCreator
    {
    public:
        virtual IRenderTexture* CreateTextureHeap(Vector2 v, uint textureCount = 1) = 0;
    };
} // namespace TSE
