feat: started on implementing asset system (expecting to revert later)
parent
95880f8530
commit
99db3cd951
|
@ -0,0 +1,9 @@
|
||||||
|
#include "asset_wrapper.h"
|
||||||
|
#include <filesystem>
|
||||||
|
|
||||||
|
namespace ce {
|
||||||
|
AssetPtrBase::AssetPtrBase(std::filesystem::path const &path)
|
||||||
|
: path{path} {
|
||||||
|
this->path.c_str();
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,17 +3,24 @@
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <filesystem>
|
||||||
|
|
||||||
|
namespace ce {
|
||||||
class AssetPtrBase {
|
class AssetPtrBase {
|
||||||
std::string path{};
|
std::filesystem::path path{};
|
||||||
std::string name{};
|
protected:
|
||||||
|
AssetPtrBase(std::filesystem::path const &path);
|
||||||
public:
|
public:
|
||||||
virtual ~AssetPtrBase() = default;
|
virtual ~AssetPtrBase() = default;
|
||||||
|
virtual bool request_unload() = 0;
|
||||||
|
virtual void load() = 0;
|
||||||
|
virtual bool is_loaded() const = 0;
|
||||||
|
std::filesystem::path const &get_path() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class AssetType>
|
template <class AssetType>
|
||||||
class AssetPtr {
|
class AssetPtr : public AssetPtrBase {
|
||||||
std::shared_ptr<AssetType> asset;
|
std::shared_ptr<AssetType> *asset{nullptr};
|
||||||
public:
|
public:
|
||||||
AssetPtr();
|
AssetPtr();
|
||||||
virtual ~AssetPtr();
|
virtual ~AssetPtr();
|
||||||
|
@ -22,7 +29,11 @@ public:
|
||||||
class AssetDB {
|
class AssetDB {
|
||||||
std::vector<std::unique_ptr<AssetPtrBase>> assets;
|
std::vector<std::unique_ptr<AssetPtrBase>> assets;
|
||||||
public:
|
public:
|
||||||
|
AssetDB();
|
||||||
|
~AssetDB() = default;
|
||||||
template <class AssetType> std::shared_ptr<AssetType> load_asset();
|
template <class AssetType> std::shared_ptr<AssetType> load_asset();
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif // !CANVAS_ASSET_WRAPPER_HPP
|
#endif // !CANVAS_ASSET_WRAPPER_HPP
|
||||||
|
|
Loading…
Reference in New Issue