Unravel Engine C++ Reference
Loading...
Searching...
No Matches
asset_database.cpp
Go to the documentation of this file.
1#include "asset_database.hpp"
5
6#include <fstream>
10
11namespace unravel
12{
14{
15 try_save(ar, ser20::make_nvp("location", obj.location));
16}
19
21{
22 try_load(ar, ser20::make_nvp("location", obj.location));
23}
26
28{
29 const auto& db = obj.get_database();
30 try_save(ar, ser20::make_nvp("database", db));
31}
34
36{
38
39 try_load(ar, ser20::make_nvp("database", database));
40
41 obj.set_database(database);
42}
45
46void save_to_file(const std::string& absolute_path, const asset_database& obj)
47{
48 std::ofstream stream(absolute_path);
49 if(stream.good())
50 {
51 auto ar = ser20::create_oarchive_associative(stream);
52 try_save(ar, ser20::make_nvp("db", obj));
53 }
54}
55void save_to_file_bin(const std::string& absolute_path, const asset_database& obj)
56{
57 std::ofstream stream(absolute_path, std::ios::binary);
58 if(stream.good())
59 {
60 ser20::oarchive_binary_t ar(stream);
61 try_save(ar, ser20::make_nvp("db", obj));
62 }
63}
64auto load_from_file(const std::string& absolute_path, asset_database& obj) -> bool
65{
66 std::ifstream stream(absolute_path);
67 if(stream.good())
68 {
69 auto ar = ser20::create_iarchive_associative(stream);
70 return try_load(ar, ser20::make_nvp("db", obj));
71 }
72 return false;
73}
74auto load_from_file_bin(const std::string& absolute_path, asset_database& obj) -> bool
75{
76 std::ifstream stream(absolute_path, std::ios::binary);
77 if(stream.good())
78 {
79 ser20::iarchive_binary_t ar(stream);
80 return try_load(ar, ser20::make_nvp("db", obj));
81 }
82 return false;
83}
84
85
86
88{
89 try_save(ar, ser20::make_nvp("type", obj.type));
90 try_save(ar, ser20::make_nvp("uid", obj.uid));
91 try_save(ar, ser20::make_nvp("importer", obj.importer));
92 try_save(ar, ser20::make_nvp("header", obj.header));
93}
96
98{
99 try_load(ar, ser20::make_nvp("type", obj.type));
100 try_load(ar, ser20::make_nvp("uid", obj.uid));
101 try_load(ar, ser20::make_nvp("importer", obj.importer));
102 try_load(ar, ser20::make_nvp("header", obj.header));
103}
106
107void save_to_file(const std::string& absolute_path, const asset_meta& obj)
108{
109 std::ofstream stream(absolute_path);
110 if(stream.good())
111 {
112 try
113 {
114 auto ar = ser20::create_oarchive_associative(stream);
115 try_save(ar, ser20::make_nvp("meta", obj));
116 }
117 catch(const std::exception& e)
118 {
120 }
121 }
122}
123void save_to_file_bin(const std::string& absolute_path, const asset_meta& obj)
124{
125 std::ofstream stream(absolute_path, std::ios::binary);
126 if(stream.good())
127 {
128 try
129 {
130 ser20::oarchive_binary_t ar(stream);
131 try_save(ar, ser20::make_nvp("meta", obj));
132 }
133 catch(const std::exception& e)
134 {
136 }
137 }
138}
139auto load_from_file(const std::string& absolute_path, asset_meta& obj) -> bool
140{
141 std::ifstream stream(absolute_path);
142 if(stream.good())
143 {
144 try
145 {
146 auto ar = ser20::create_iarchive_associative(stream);
147 return try_load(ar, ser20::make_nvp("meta", obj));
148 }
149 catch(const std::exception& e)
150 {
152 }
153 }
154 return false;
155}
156auto load_from_file_bin(const std::string& absolute_path, asset_meta& obj) -> bool
157{
158 std::ifstream stream(absolute_path, std::ios::binary);
159 if(stream.good())
160 {
161 try
162 {
163 ser20::iarchive_binary_t ar(stream);
164 return try_load(ar, ser20::make_nvp("meta", obj));
165 }
166 catch(const std::exception& e)
167 {
169 }
170 }
171 return false;
172}
173
174} // 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.