Program Listing for File Model.hpp

Return to documentation for file (engine/include/Cacao/Model.hpp)

#pragma once

#include "DllHelper.hpp"
#include "Resource.hpp"
#include "Tex2D.hpp"
#include "Mesh.hpp"

namespace Cacao {
    class CACAO_API Model : public Resource {
      public:
        static std::shared_ptr<Model> Create(std::vector<unsigned char>&& modelBin, const std::string& addr) {
            return std::shared_ptr<Model>(new Model(std::move(modelBin), addr));
        }

        const std::vector<std::string> ListMeshes();

        const std::vector<std::string> ListTextures();

        std::shared_ptr<Mesh> GetMesh(const std::string& id);

        std::shared_ptr<Tex2D> GetTexture(const std::string& id);

        struct Impl;

        ~Model();

      private:
        Model(std::vector<unsigned char>&& modelBin, const std::string& addr);
        friend class ResourceManager;

        std::unique_ptr<Impl> impl;
        friend class ImplAccessor;
    };
}