#pragma once #include #include "device.hpp" #include "pools/mesh_pool.hpp" namespace sophia { class AssetManager { public: explicit AssetManager(Device& device); ~AssetManager() = default; AssetManager(const AssetManager&) = delete; AssetManager& operator=(const AssetManager&) = delete; template using HandleFor = typename T::HandleType; template HandleFor load(const std::string& path); template HandleFor create(const typename T::Builder& builder); template const T& get(HandleFor handle) const; template void release(HandleFor handle); private: Device& device; MeshPool meshPool; // TexturePool texturePool; // MaterialPool materialPool; }; } // namespace sophia