#ifndef INDEXED_UNIT_CUBE_HPP_
#define INDEXED_UNIT_CUBE_HPP_

#include <memory>

#include <Utilities/Extern.hpp>
#include <Vk/Device/Device.hpp>
#include <Vk/CommandBuffer/CommandBuffer.hpp>
#include <Vk/Buffer/Buffer.hpp>

class IndexedUnitCube
{
private:
    static std::shared_ptr<Vk::Buffer> m_stagingBuffer;
    static std::shared_ptr<Vk::Buffer> m_indexBuffer;

public:
    /**
     * @brief Initialize the cube.
     */
    static void init(std::shared_ptr<Vk::Device> device, Vk::CommandBuffer &cmdbuf);

    /**
     * @brief Delete the staging buffer.
     */
    static void finalize();

    /**
     * @brief Draw the unit cube.
     */
    static void draw(Vk::CommandBuffer &cmdbuf, uint32_t instanceCount = 1);
};

#endif