asset_manager concept
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user