42 lines
805 B
C++
42 lines
805 B
C++
#pragma once
|
|
|
|
#include <string>
|
|
|
|
#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 <typename T>
|
|
using HandleFor = typename T::HandleType;
|
|
|
|
template <typename T>
|
|
HandleFor<T> load(const std::string& path);
|
|
|
|
template <typename T>
|
|
HandleFor<T> create(const typename T::Builder& builder);
|
|
|
|
template <typename T>
|
|
const T& get(HandleFor<T> handle) const;
|
|
|
|
template <typename T>
|
|
void release(HandleFor<T> handle);
|
|
|
|
private:
|
|
Device& device;
|
|
|
|
MeshPool meshPool;
|
|
// TexturePool texturePool;
|
|
// MaterialPool materialPool;
|
|
};
|
|
|
|
} // namespace sophia
|