47 std::string compiled_ext;
54 bool known_source =
false;
57 for(
const auto&
format : formats)
59 if(
format == source_extension)
88 "Falling back to raw asset.",
102auto validate(
const std::string& key,
const std::string& compiled_ext, std::string& out) ->
bool
113 if(!fs::exists(compiled_absolute_path, err))
120 if(!fs::exists(compiled_absolute_path, err))
126 out = compiled_absolute_path;
133template<
typename T,
typename CreateFromPathFn>
135 const std::string& compiled_ext, CreateFromPathFn create_fn,
load_mode mode) ->
bool
139 auto deferred_fn = [key, compiled_ext, create_fn]() -> std::shared_ptr<T>
142 if(!
validate(key, compiled_ext, path))
146 return create_fn(path);
148 output.set_internal_job(pool.create_job(
get_job_name<T>(), deferred_fn).share());
153 if(!
validate(key, compiled_ext, path))
157 auto immediate_fn = [path, create_fn]() -> std::shared_ptr<T>
159 return create_fn(path);
161 output.set_internal_job(pool.schedule(
get_job_name<T>(), immediate_fn).share());
169 const std::string& key,
load_mode mode) ->
bool
172 [](
const std::string& path)
174 return std::make_shared<gfx::texture>(path.c_str());
180 const std::string& key,
load_mode mode) ->
bool
184 [key](
const std::string& path)
186 return std::make_shared<gfx::shader>(path);
192 const std::string& key,
load_mode mode) ->
bool
195 [](
const std::string& path)
197 std::shared_ptr<unravel::material> mat;
205 const std::string& key,
load_mode mode) ->
bool
208 [](
const std::string& path)
213 auto m = std::make_shared<unravel::mesh>();
214 m->load_mesh(std::move(data));
221 const std::string& key,
load_mode mode) ->
bool
224 [](
const std::string& path)
226 auto anim = std::make_shared<animation_clip>();
234 const std::string& key,
load_mode mode) ->
bool
237 [](
const std::string& path)
239 auto pfb = std::make_shared<prefab>();
240 auto stream = std::ifstream{path};
248 const std::string& key,
load_mode mode) ->
bool
251 [](
const std::string& path)
253 auto pfb = std::make_shared<scene_prefab>();
254 auto stream = std::ifstream{path};
262 const std::string& key,
load_mode mode) ->
bool
265 [](
const std::string& path)
267 auto mat = std::make_shared<physics_material>();
275 const std::string& key,
load_mode mode) ->
bool
278 [](
const std::string& path)
280 audio::sound_data data;
283 auto create_job = tpp::async(tpp::main_thread::get_id(),
284 [data = std::move(data)]()
mutable
286 return std::make_shared<audio_clip>(std::move(data),
false);
289 return create_job.get();
295 const std::string& key,
load_mode mode) ->
bool
298 [](
const std::string& path)
300 auto create_job = tpp::async(tpp::main_thread::get_id(),
303 return std::make_shared<font>(path.c_str(), 0, 86,
307 return create_job.get();
313 const std::string& key,
load_mode mode) ->
bool
316 [](
const std::string& path)
318 auto scr = std::make_shared<script>();
326 const std::string& key,
load_mode mode) ->
bool
329 [](
const std::string& path)
331 auto tree = std::make_shared<ui_tree>();
339 const std::string& key,
load_mode mode) ->
bool
342 [](
const std::string& path)
344 auto sheet = std::make_shared<style_sheet>();
gfx::texture_format format
#define FONT_TYPE_DISTANCE_OUTLINE_DROP_SHADOW_IMAGE
#define APPLOG_WARNING(...)
#define APPLOG_ERROR(...)
auto get_all_formats() -> const std::vector< std::vector< std::string > > &
auto get_data_directory(const std::string &prefix={}) -> std::string
auto is_format(const std::string &ex) -> bool
auto get_compiled_directory(const std::string &prefix={}) -> std::string
path resolve_protocol(const path &_path)
Given the specified path/filename, resolve the final full filename. This will be based on either the ...
bool has_known_protocol(const path &_path)
Checks whether the path has a known protocol.
stream_buffer< byte_array_t > read_stream_buffer(std::istream &stream)
auto get_current_renderer_filename_extension() -> const std::string &
auto replace(const std::string &str, const std::string &search, const std::string &replace) -> std::string
auto schedule_load(tpp::thread_pool &pool, asset_handle< T > &output, const std::string &key, const std::string &compiled_ext, CreateFromPathFn create_fn, load_mode mode) -> bool
auto resolve_path(const std::string &key) -> fs::path
auto load_from_file< gfx::texture >(tpp::thread_pool &pool, asset_handle< gfx::texture > &output, const std::string &key, load_mode mode) -> bool
void log_unknown_protocol_for_key(const std::string &key)
void log_missing_compiled_asset_for_key(const std::string &key)
auto load_from_file< scene_prefab >(tpp::thread_pool &pool, asset_handle< scene_prefab > &output, const std::string &key, load_mode mode) -> bool
auto load_from_file(tpp::thread_pool &pool, asset_handle< T > &output, const std::string &key, load_mode mode=load_mode::immediate) -> bool
auto load_from_file< style_sheet >(tpp::thread_pool &pool, asset_handle< style_sheet > &output, const std::string &key, load_mode mode) -> bool
auto resolve_compiled_asset_path(const std::string &key, const std::string &source_extension) -> fs::path
auto load_from_file< material >(tpp::thread_pool &pool, asset_handle< material > &output, const std::string &key, load_mode mode) -> bool
auto resolve_compiled_path(const std::string &key) -> fs::path
auto validate(const std::string &key, const std::string &compiled_ext, std::string &out) -> bool
auto load_from_file< gfx::shader >(tpp::thread_pool &pool, asset_handle< gfx::shader > &output, const std::string &key, load_mode mode) -> bool
auto load_from_file< mesh >(tpp::thread_pool &pool, asset_handle< mesh > &output, const std::string &key, load_mode mode) -> bool
auto load_from_file< script >(tpp::thread_pool &pool, asset_handle< script > &output, const std::string &key, load_mode mode) -> bool
auto load_from_file< ui_tree >(tpp::thread_pool &pool, asset_handle< ui_tree > &output, const std::string &key, load_mode mode) -> bool
auto load_from_file< animation_clip >(tpp::thread_pool &pool, asset_handle< animation_clip > &output, const std::string &key, load_mode mode) -> bool
auto load_from_file< audio_clip >(tpp::thread_pool &pool, asset_handle< audio_clip > &output, const std::string &key, load_mode mode) -> bool
auto load_from_file< physics_material >(tpp::thread_pool &pool, asset_handle< physics_material > &output, const std::string &key, load_mode mode) -> bool
auto resolve_compiled_key(const std::string &key) -> std::string
void log_missing_raw_asset_for_key(const std::string &key)
auto load_from_file< prefab >(tpp::thread_pool &pool, asset_handle< prefab > &output, const std::string &key, load_mode mode) -> bool
auto load_from_file< font >(tpp::thread_pool &pool, asset_handle< font > &output, const std::string &key, load_mode mode) -> bool
auto get_job_name() -> std::string
void load_from_file_bin(const std::string &absolute_path, animation_clip &obj)
load_mode
Controls whether an asset is loaded immediately or deferred until first access.
@ deferred
Register handle only; load triggered on first .get() call.
Thread-safe handle to an asset.
Struct used for mesh construction.