Unravel Engine C++ Reference
Loading...
Searching...
No Matches
asset_database.cpp
Go to the documentation of this file.
1#include "asset_database.hpp"
4
5#include <fstream>
9
10namespace unravel
11{
13{
14 try_save(ar, ser20::make_nvp("location", obj.location));
15}
18
20{
21 try_load(ar, ser20::make_nvp("location", obj.location));
22}
25
27{
28 const auto& db = obj.get_database();
29 try_save(ar, ser20::make_nvp("database", db));
30}
33
35{
37
38 try_load(ar, ser20::make_nvp("database", database));
39
40 obj.set_database(database);
41}
44
45void save_to_file(const std::string& absolute_path, const asset_database& obj)
46{
47 std::ofstream stream(absolute_path);
48 if(stream.good())
49 {
50 auto ar = ser20::create_oarchive_associative(stream);
51 try_save(ar, ser20::make_nvp("db", obj));
52 }
53}
54void save_to_file_bin(const std::string& absolute_path, const asset_database& obj)
55{
56 std::ofstream stream(absolute_path, std::ios::binary);
57 if(stream.good())
58 {
59 ser20::oarchive_binary_t ar(stream);
60 try_save(ar, ser20::make_nvp("db", obj));
61 }
62}
63auto load_from_file(const std::string& absolute_path, asset_database& obj) -> bool
64{
65 std::ifstream stream(absolute_path);
66 if(stream.good())
67 {
68 auto ar = ser20::create_iarchive_associative(stream);
69 return try_load(ar, ser20::make_nvp("db", obj));
70 }
71 return false;
72}
73auto load_from_file_bin(const std::string& absolute_path, asset_database& obj) -> bool
74{
75 std::ifstream stream(absolute_path, std::ios::binary);
76 if(stream.good())
77 {
78 ser20::iarchive_binary_t ar(stream);
79 return try_load(ar, ser20::make_nvp("db", obj));
80 }
81 return false;
82}
83
84
85
87{
88 try_save(ar, ser20::make_nvp("type", obj.type));
89 try_save(ar, ser20::make_nvp("uid", obj.uid));
90 try_save(ar, ser20::make_nvp("importer", obj.importer));
91}
94
96{
97 try_load(ar, ser20::make_nvp("type", obj.type));
98 try_load(ar, ser20::make_nvp("uid", obj.uid));
99 try_load(ar, ser20::make_nvp("importer", obj.importer));
100
101}
104
105void save_to_file(const std::string& absolute_path, const asset_meta& obj)
106{
107 std::ofstream stream(absolute_path);
108 if(stream.good())
109 {
110 try
111 {
112 auto ar = ser20::create_oarchive_associative(stream);
113 try_save(ar, ser20::make_nvp("meta", obj));
114 }
115 catch(const ser20::Exception& e)
116 {
118 }
119 }
120}
121void save_to_file_bin(const std::string& absolute_path, const asset_meta& obj)
122{
123 std::ofstream stream(absolute_path, std::ios::binary);
124 if(stream.good())
125 {
126 try
127 {
128 ser20::oarchive_binary_t ar(stream);
129 try_save(ar, ser20::make_nvp("meta", obj));
130 }
131 catch(const ser20::Exception& e)
132 {
134 }
135 }
136}
137auto load_from_file(const std::string& absolute_path, asset_meta& obj) -> bool
138{
139 std::ifstream stream(absolute_path);
140 if(stream.good())
141 {
142 try
143 {
144 auto ar = ser20::create_iarchive_associative(stream);
145 return try_load(ar, ser20::make_nvp("meta", obj));
146 }
147 catch(const ser20::Exception& e)
148 {
150 }
151 }
152 return false;
153}
154auto load_from_file_bin(const std::string& absolute_path, asset_meta& obj) -> bool
155{
156 std::ifstream stream(absolute_path, std::ios::binary);
157 if(stream.good())
158 {
159 try
160 {
161 ser20::iarchive_binary_t ar(stream);
162 return try_load(ar, ser20::make_nvp("meta", obj));
163 }
164 catch(const ser20::Exception& e)
165 {
167 }
168 }
169 return false;
170}
171
172} // namespace unravel
Manages asset metadata and provides functionality for adding, removing, and querying assets.
std::map< hpp::uuid, meta > database_t
Type definition for the asset database.
auto create_oarchive_associative(std::ostream &stream)
BinaryInputArchive iarchive_binary_t
auto create_iarchive_associative(std::istream &stream)
simd::JSONOutputArchive oarchive_associative_t
BinaryOutputArchive oarchive_binary_t
simd::JSONInputArchive iarchive_associative_t
void log_warning(const std::string &log_msg, const hpp::source_location &loc)
void save_to_file_bin(const std::string &absolute_path, const animation_clip &obj)
void load_from_file(const std::string &absolute_path, animation_clip &obj)
void save_to_file(const std::string &absolute_path, const animation_clip &obj)
void load_from_file_bin(const std::string &absolute_path, animation_clip &obj)
#define SAVE_INSTANTIATE(cls, Archive)
#define LOAD(cls)
auto try_save(Archive &ar, ser20::NameValuePair< T > &&t, const hpp::source_location &loc=hpp::source_location::current()) -> bool
#define LOAD_INSTANTIATE(cls, Archive)
#define SAVE(cls)
auto try_load(Archive &ar, ser20::NameValuePair< T > &&t, const hpp::source_location &loc=hpp::source_location::current()) -> bool
Metadata information for an asset including its location.
Metadata for an asset, including its UUID and type.