mirror of
https://github.com/enduro2d/enduro2d.git
synced 2025-12-15 08:15:38 +07:00
remove constructors from specific assets. const library load function.
This commit is contained in:
@@ -15,8 +15,6 @@ namespace e2d
|
|||||||
{
|
{
|
||||||
class atlas_asset final : public content_asset<atlas_asset, atlas> {
|
class atlas_asset final : public content_asset<atlas_asset, atlas> {
|
||||||
public:
|
public:
|
||||||
atlas_asset(content_type content)
|
static load_async_result load_async(const library& library, str_view address);
|
||||||
: content_asset<atlas_asset, atlas>(std::move(content)) {}
|
|
||||||
static load_async_result load_async(library& library, str_view address);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,14 +7,13 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "../_high.hpp"
|
#include "../_high.hpp"
|
||||||
|
|
||||||
#include "../library.hpp"
|
#include "../library.hpp"
|
||||||
|
|
||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
class binary_asset final : public content_asset<binary_asset, buffer> {
|
class binary_asset final : public content_asset<binary_asset, buffer> {
|
||||||
public:
|
public:
|
||||||
binary_asset(content_type content)
|
static load_async_result load_async(const library& library, str_view address);
|
||||||
: content_asset<binary_asset, buffer>(std::move(content)) {}
|
|
||||||
static load_async_result load_async(library& library, str_view address);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,14 +7,13 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "../_high.hpp"
|
#include "../_high.hpp"
|
||||||
|
|
||||||
#include "../library.hpp"
|
#include "../library.hpp"
|
||||||
|
|
||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
class image_asset final : public content_asset<image_asset, image> {
|
class image_asset final : public content_asset<image_asset, image> {
|
||||||
public:
|
public:
|
||||||
image_asset(content_type content)
|
static load_async_result load_async(const library& library, str_view address);
|
||||||
: content_asset<image_asset, image>(std::move(content)) {}
|
|
||||||
static load_async_result load_async(library& library, str_view address);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,14 +7,13 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "../_high.hpp"
|
#include "../_high.hpp"
|
||||||
|
|
||||||
#include "../library.hpp"
|
#include "../library.hpp"
|
||||||
|
|
||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
class material_asset final : public content_asset<material_asset, render::material> {
|
class material_asset final : public content_asset<material_asset, render::material> {
|
||||||
public:
|
public:
|
||||||
material_asset(content_type content)
|
static load_async_result load_async(const library& library, str_view address);
|
||||||
: content_asset<material_asset, render::material>(std::move(content)) {}
|
|
||||||
static load_async_result load_async(library& library, str_view address);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,14 +7,13 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "../_high.hpp"
|
#include "../_high.hpp"
|
||||||
|
|
||||||
#include "../library.hpp"
|
#include "../library.hpp"
|
||||||
|
|
||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
class mesh_asset final : public content_asset<mesh_asset, mesh> {
|
class mesh_asset final : public content_asset<mesh_asset, mesh> {
|
||||||
public:
|
public:
|
||||||
mesh_asset(content_type content)
|
static load_async_result load_async(const library& library, str_view address);
|
||||||
: content_asset<mesh_asset, mesh>(std::move(content)) {}
|
|
||||||
static load_async_result load_async(library& library, str_view address);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,8 +15,6 @@ namespace e2d
|
|||||||
{
|
{
|
||||||
class model_asset final : public content_asset<model_asset, model> {
|
class model_asset final : public content_asset<model_asset, model> {
|
||||||
public:
|
public:
|
||||||
model_asset(content_type content)
|
static load_async_result load_async(const library& library, str_view address);
|
||||||
: content_asset<model_asset, model>(std::move(content)) {}
|
|
||||||
static load_async_result load_async(library& library, str_view address);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,14 +7,13 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "../_high.hpp"
|
#include "../_high.hpp"
|
||||||
|
|
||||||
#include "../library.hpp"
|
#include "../library.hpp"
|
||||||
|
|
||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
class shader_asset final : public content_asset<shader_asset, shader_ptr> {
|
class shader_asset final : public content_asset<shader_asset, shader_ptr> {
|
||||||
public:
|
public:
|
||||||
shader_asset(content_type content)
|
static load_async_result load_async(const library& library, str_view address);
|
||||||
: content_asset<shader_asset, shader_ptr>(std::move(content)) {}
|
|
||||||
static load_async_result load_async(library& library, str_view address);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,14 +7,13 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "../_high.hpp"
|
#include "../_high.hpp"
|
||||||
|
|
||||||
#include "../library.hpp"
|
#include "../library.hpp"
|
||||||
|
|
||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
class shape_asset final : public content_asset<shape_asset, shape> {
|
class shape_asset final : public content_asset<shape_asset, shape> {
|
||||||
public:
|
public:
|
||||||
shape_asset(content_type content)
|
static load_async_result load_async(const library& library, str_view address);
|
||||||
: content_asset<shape_asset, shape>(std::move(content)) {}
|
|
||||||
static load_async_result load_async(library& library, str_view address);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,8 +15,6 @@ namespace e2d
|
|||||||
{
|
{
|
||||||
class sprite_asset final : public content_asset<sprite_asset, sprite> {
|
class sprite_asset final : public content_asset<sprite_asset, sprite> {
|
||||||
public:
|
public:
|
||||||
sprite_asset(content_type content)
|
static load_async_result load_async(const library& library, str_view address);
|
||||||
: content_asset<sprite_asset, sprite>(std::move(content)) {}
|
|
||||||
static load_async_result load_async(library& library, str_view address);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,14 +7,13 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "../_high.hpp"
|
#include "../_high.hpp"
|
||||||
|
|
||||||
#include "../library.hpp"
|
#include "../library.hpp"
|
||||||
|
|
||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
class text_asset final : public content_asset<text_asset, str> {
|
class text_asset final : public content_asset<text_asset, str> {
|
||||||
public:
|
public:
|
||||||
text_asset(content_type content)
|
static load_async_result load_async(const library& library, str_view address);
|
||||||
: content_asset<text_asset, str>(std::move(content)) {}
|
|
||||||
static load_async_result load_async(library& library, str_view address);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,14 +7,13 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "../_high.hpp"
|
#include "../_high.hpp"
|
||||||
|
|
||||||
#include "../library.hpp"
|
#include "../library.hpp"
|
||||||
|
|
||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
class texture_asset final : public content_asset<texture_asset, texture_ptr> {
|
class texture_asset final : public content_asset<texture_asset, texture_ptr> {
|
||||||
public:
|
public:
|
||||||
texture_asset(content_type content)
|
static load_async_result load_async(const library& library, str_view address);
|
||||||
: content_asset<texture_asset, texture_ptr>(std::move(content)) {}
|
|
||||||
static load_async_result load_async(library& library, str_view address);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,9 @@ namespace e2d
|
|||||||
//
|
//
|
||||||
|
|
||||||
class asset_loading_exception : public exception {
|
class asset_loading_exception : public exception {
|
||||||
const char* what() const noexcept override = 0;
|
const char* what() const noexcept override {
|
||||||
|
return "asset loading exception";
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -60,20 +62,30 @@ namespace e2d
|
|||||||
using load_result = intrusive_ptr<Asset>;
|
using load_result = intrusive_ptr<Asset>;
|
||||||
using load_async_result = stdex::promise<load_result>;
|
using load_async_result = stdex::promise<load_result>;
|
||||||
public:
|
public:
|
||||||
|
static load_result create() {
|
||||||
|
return load_result(new Asset());
|
||||||
|
}
|
||||||
|
|
||||||
static load_result create(Content content) {
|
static load_result create(Content content) {
|
||||||
return load_result(new Asset(std::move(content)));
|
auto result = create();
|
||||||
|
result->fill(std::move(content));
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static load_result create(Content content, nested_content nested_content) {
|
static load_result create(Content content, nested_content nested_content) {
|
||||||
return load_result(new Asset(std::move(content), std::move(nested_content)));
|
auto result = create();
|
||||||
|
result->fill(std::move(content), std::move(nested_content));
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
content_asset(Content content)
|
void fill(Content content) {
|
||||||
: content_(std::move(content)) {}
|
content_ = std::move(content);
|
||||||
|
}
|
||||||
|
|
||||||
content_asset(Content content, nested_content nested_content)
|
void fill(Content content, nested_content nested_content) {
|
||||||
: content_(std::move(content))
|
content_ = std::move(content);
|
||||||
, nested_content_(std::move(nested_content)) {}
|
nested_content_ = std::move(nested_content);
|
||||||
|
}
|
||||||
|
|
||||||
const Content& content() const noexcept {
|
const Content& content() const noexcept {
|
||||||
return content_;
|
return content_;
|
||||||
@@ -108,10 +120,10 @@ namespace e2d
|
|||||||
std::size_t unload_unused_assets() noexcept;
|
std::size_t unload_unused_assets() noexcept;
|
||||||
|
|
||||||
template < typename Asset >
|
template < typename Asset >
|
||||||
typename Asset::load_result load_asset(str_view address);
|
typename Asset::load_result load_asset(str_view address) const;
|
||||||
|
|
||||||
template < typename Asset >
|
template < typename Asset >
|
||||||
typename Asset::load_async_result load_asset_async(str_view address);
|
typename Asset::load_async_result load_asset_async(str_view address) const;
|
||||||
private:
|
private:
|
||||||
url root_;
|
url root_;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ namespace e2d
|
|||||||
//
|
//
|
||||||
|
|
||||||
template < typename Asset >
|
template < typename Asset >
|
||||||
typename Asset::load_result library::load_asset(str_view address) {
|
typename Asset::load_result library::load_asset(str_view address) const {
|
||||||
auto p = load_asset_async<Asset>(address);
|
auto p = load_asset_async<Asset>(address);
|
||||||
|
|
||||||
if ( modules::is_initialized<deferrer>() ) {
|
if ( modules::is_initialized<deferrer>() ) {
|
||||||
@@ -29,7 +29,7 @@ namespace e2d
|
|||||||
}
|
}
|
||||||
|
|
||||||
template < typename Asset >
|
template < typename Asset >
|
||||||
typename Asset::load_async_result library::load_asset_async(str_view address) {
|
typename Asset::load_async_result library::load_asset_async(str_view address) const {
|
||||||
if ( !modules::is_initialized<asset_cache<Asset>>() ) {
|
if ( !modules::is_initialized<asset_cache<Asset>>() ) {
|
||||||
return Asset::load_async(*this, address);
|
return Asset::load_async(*this, address);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
stdex::promise<atlas> parse_atlas(
|
stdex::promise<atlas> parse_atlas(
|
||||||
library& library,
|
const library& library,
|
||||||
str_view parent_address,
|
str_view parent_address,
|
||||||
const rapidjson::Value& root)
|
const rapidjson::Value& root)
|
||||||
{
|
{
|
||||||
@@ -187,7 +187,7 @@ namespace
|
|||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
atlas_asset::load_async_result atlas_asset::load_async(
|
atlas_asset::load_async_result atlas_asset::load_async(
|
||||||
library& library, str_view address)
|
const library& library, str_view address)
|
||||||
{
|
{
|
||||||
return library.load_asset_async<json_asset>(address)
|
return library.load_asset_async<json_asset>(address)
|
||||||
.then([
|
.then([
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace
|
|||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
binary_asset::load_async_result binary_asset::load_async(
|
binary_asset::load_async_result binary_asset::load_async(
|
||||||
library& library, str_view address)
|
const library& library, str_view address)
|
||||||
{
|
{
|
||||||
const auto asset_url = library.root() / address;
|
const auto asset_url = library.root() / address;
|
||||||
return the<vfs>().load_async(asset_url)
|
return the<vfs>().load_async(asset_url)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ namespace
|
|||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
image_asset::load_async_result image_asset::load_async(
|
image_asset::load_async_result image_asset::load_async(
|
||||||
library& library, str_view address)
|
const library& library, str_view address)
|
||||||
{
|
{
|
||||||
return library.load_asset_async<binary_asset>(address)
|
return library.load_asset_async<binary_asset>(address)
|
||||||
.then([](const binary_asset::load_result& image_data){
|
.then([](const binary_asset::load_result& image_data){
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace
|
|||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
json_asset::load_async_result json_asset::load_async(
|
json_asset::load_async_result json_asset::load_async(
|
||||||
library& library, str_view address)
|
const library& library, str_view address)
|
||||||
{
|
{
|
||||||
return library.load_asset_async<text_asset>(address)
|
return library.load_asset_async<text_asset>(address)
|
||||||
.then([](const text_asset::load_result& json_data){
|
.then([](const text_asset::load_result& json_data){
|
||||||
|
|||||||
@@ -15,6 +15,6 @@ namespace e2d
|
|||||||
class json_asset final : public content_asset<json_asset, rapidjson::Document> {
|
class json_asset final : public content_asset<json_asset, rapidjson::Document> {
|
||||||
public:
|
public:
|
||||||
using content_asset<json_asset, rapidjson::Document>::content_asset;
|
using content_asset<json_asset, rapidjson::Document>::content_asset;
|
||||||
static load_async_result load_async(library& library, str_view address);
|
static load_async_result load_async(const library& library, str_view address);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -492,7 +492,7 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
stdex::promise<shader_ptr> parse_shader_block(
|
stdex::promise<shader_ptr> parse_shader_block(
|
||||||
library& library,
|
const library& library,
|
||||||
str_view parent_address,
|
str_view parent_address,
|
||||||
const rapidjson::Value& root)
|
const rapidjson::Value& root)
|
||||||
{
|
{
|
||||||
@@ -506,7 +506,7 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
stdex::promise<texture_ptr> parse_texture_block(
|
stdex::promise<texture_ptr> parse_texture_block(
|
||||||
library& library,
|
const library& library,
|
||||||
str_view parent_address,
|
str_view parent_address,
|
||||||
const rapidjson::Value& root)
|
const rapidjson::Value& root)
|
||||||
{
|
{
|
||||||
@@ -520,7 +520,7 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
stdex::promise<std::pair<str_hash,render::sampler_state>> parse_sampler_state(
|
stdex::promise<std::pair<str_hash,render::sampler_state>> parse_sampler_state(
|
||||||
library& library,
|
const library& library,
|
||||||
str_view parent_address,
|
str_view parent_address,
|
||||||
const rapidjson::Value& root)
|
const rapidjson::Value& root)
|
||||||
{
|
{
|
||||||
@@ -669,7 +669,7 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
stdex::promise<render::property_block> parse_property_block(
|
stdex::promise<render::property_block> parse_property_block(
|
||||||
library& library,
|
const library& library,
|
||||||
str_view parent_address,
|
str_view parent_address,
|
||||||
const rapidjson::Value& root)
|
const rapidjson::Value& root)
|
||||||
{
|
{
|
||||||
@@ -1092,7 +1092,7 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
stdex::promise<render::pass_state> parse_pass_state(
|
stdex::promise<render::pass_state> parse_pass_state(
|
||||||
library& library,
|
const library& library,
|
||||||
str_view parent_address,
|
str_view parent_address,
|
||||||
const rapidjson::Value& root)
|
const rapidjson::Value& root)
|
||||||
{
|
{
|
||||||
@@ -1126,7 +1126,7 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
stdex::promise<render::material> parse_material(
|
stdex::promise<render::material> parse_material(
|
||||||
library& library,
|
const library& library,
|
||||||
str_view parent_address,
|
str_view parent_address,
|
||||||
const rapidjson::Value& root)
|
const rapidjson::Value& root)
|
||||||
{
|
{
|
||||||
@@ -1169,7 +1169,7 @@ namespace
|
|||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
material_asset::load_async_result material_asset::load_async(
|
material_asset::load_async_result material_asset::load_async(
|
||||||
library& library, str_view address)
|
const library& library, str_view address)
|
||||||
{
|
{
|
||||||
return library.load_asset_async<json_asset>(address)
|
return library.load_asset_async<json_asset>(address)
|
||||||
.then([
|
.then([
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ namespace
|
|||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
mesh_asset::load_async_result mesh_asset::load_async(
|
mesh_asset::load_async_result mesh_asset::load_async(
|
||||||
library& library, str_view address)
|
const library& library, str_view address)
|
||||||
{
|
{
|
||||||
return library.load_asset_async<binary_asset>(address)
|
return library.load_asset_async<binary_asset>(address)
|
||||||
.then([](const binary_asset::load_result& mesh_data){
|
.then([](const binary_asset::load_result& mesh_data){
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
stdex::promise<model> parse_model(
|
stdex::promise<model> parse_model(
|
||||||
library& library,
|
const library& library,
|
||||||
str_view parent_address,
|
str_view parent_address,
|
||||||
const rapidjson::Value& root)
|
const rapidjson::Value& root)
|
||||||
{
|
{
|
||||||
@@ -97,7 +97,7 @@ namespace
|
|||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
model_asset::load_async_result model_asset::load_async(
|
model_asset::load_async_result model_asset::load_async(
|
||||||
library& library, str_view address)
|
const library& library, str_view address)
|
||||||
{
|
{
|
||||||
return library.load_asset_async<json_asset>(address)
|
return library.load_asset_async<json_asset>(address)
|
||||||
.then([
|
.then([
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
stdex::promise<shader_ptr> parse_shader(
|
stdex::promise<shader_ptr> parse_shader(
|
||||||
library& library,
|
const library& library,
|
||||||
str_view parent_address,
|
str_view parent_address,
|
||||||
const rapidjson::Value& root)
|
const rapidjson::Value& root)
|
||||||
{
|
{
|
||||||
@@ -84,7 +84,7 @@ namespace
|
|||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
shader_asset::load_async_result shader_asset::load_async(
|
shader_asset::load_async_result shader_asset::load_async(
|
||||||
library& library, str_view address)
|
const library& library, str_view address)
|
||||||
{
|
{
|
||||||
return library.load_asset_async<json_asset>(address)
|
return library.load_asset_async<json_asset>(address)
|
||||||
.then([
|
.then([
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ namespace
|
|||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
shape_asset::load_async_result shape_asset::load_async(
|
shape_asset::load_async_result shape_asset::load_async(
|
||||||
library& library, str_view address)
|
const library& library, str_view address)
|
||||||
{
|
{
|
||||||
return library.load_asset_async<binary_asset>(address)
|
return library.load_asset_async<binary_asset>(address)
|
||||||
.then([](const binary_asset::load_result& shape_data){
|
.then([](const binary_asset::load_result& shape_data){
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
stdex::promise<sprite> parse_sprite_with_atlas(
|
stdex::promise<sprite> parse_sprite_with_atlas(
|
||||||
library& library,
|
const library& library,
|
||||||
str_view parent_address,
|
str_view parent_address,
|
||||||
const rapidjson::Value& root)
|
const rapidjson::Value& root)
|
||||||
{
|
{
|
||||||
@@ -128,7 +128,7 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
stdex::promise<sprite> parse_sprite_with_texture(
|
stdex::promise<sprite> parse_sprite_with_texture(
|
||||||
library& library,
|
const library& library,
|
||||||
str_view parent_address,
|
str_view parent_address,
|
||||||
const rapidjson::Value& root)
|
const rapidjson::Value& root)
|
||||||
{
|
{
|
||||||
@@ -181,7 +181,7 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
stdex::promise<sprite> parse_sprite(
|
stdex::promise<sprite> parse_sprite(
|
||||||
library& library,
|
const library& library,
|
||||||
str_view parent_address,
|
str_view parent_address,
|
||||||
const rapidjson::Value& root)
|
const rapidjson::Value& root)
|
||||||
{
|
{
|
||||||
@@ -201,7 +201,7 @@ namespace
|
|||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
sprite_asset::load_async_result sprite_asset::load_async(
|
sprite_asset::load_async_result sprite_asset::load_async(
|
||||||
library& library, str_view address)
|
const library& library, str_view address)
|
||||||
{
|
{
|
||||||
return library.load_asset_async<json_asset>(address)
|
return library.load_asset_async<json_asset>(address)
|
||||||
.then([
|
.then([
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace
|
|||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
text_asset::load_async_result text_asset::load_async(
|
text_asset::load_async_result text_asset::load_async(
|
||||||
library& library, str_view address)
|
const library& library, str_view address)
|
||||||
{
|
{
|
||||||
const auto asset_url = library.root() / address;
|
const auto asset_url = library.root() / address;
|
||||||
return the<vfs>().load_as_string_async(asset_url)
|
return the<vfs>().load_as_string_async(asset_url)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ namespace
|
|||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
texture_asset::load_async_result texture_asset::load_async(
|
texture_asset::load_async_result texture_asset::load_async(
|
||||||
library& library, str_view address)
|
const library& library, str_view address)
|
||||||
{
|
{
|
||||||
return library.load_asset_async<image_asset>(address)
|
return library.load_asset_async<image_asset>(address)
|
||||||
.then([](const image_asset::load_result& texture_data){
|
.then([](const image_asset::load_result& texture_data){
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace
|
|||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
xml_asset::load_async_result xml_asset::load_async(
|
xml_asset::load_async_result xml_asset::load_async(
|
||||||
library& library, str_view address)
|
const library& library, str_view address)
|
||||||
{
|
{
|
||||||
return library.load_asset_async<text_asset>(address)
|
return library.load_asset_async<text_asset>(address)
|
||||||
.then([](const text_asset::load_result& xml_data){
|
.then([](const text_asset::load_result& xml_data){
|
||||||
|
|||||||
@@ -15,6 +15,6 @@ namespace e2d
|
|||||||
class xml_asset final : public content_asset<xml_asset, pugi::xml_document> {
|
class xml_asset final : public content_asset<xml_asset, pugi::xml_document> {
|
||||||
public:
|
public:
|
||||||
using content_asset<xml_asset, pugi::xml_document>::content_asset;
|
using content_asset<xml_asset, pugi::xml_document>::content_asset;
|
||||||
static load_async_result load_async(library& library, str_view address);
|
static load_async_result load_async(const library& library, str_view address);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,17 +25,13 @@ namespace
|
|||||||
|
|
||||||
class fake_asset final : public content_asset<fake_asset, int> {
|
class fake_asset final : public content_asset<fake_asset, int> {
|
||||||
public:
|
public:
|
||||||
fake_asset(content_type content)
|
static load_async_result load_async(const library& library, str_view address) {
|
||||||
: content_asset<fake_asset, int>(std::move(content)) {}
|
E2D_UNUSED(library);
|
||||||
|
return address == "42"
|
||||||
fake_asset(content_type content, nested_content nested_content)
|
? stdex::make_resolved_promise(fake_asset::create(42, {
|
||||||
: content_asset<fake_asset, int>(std::move(content), std::move(nested_content)) {}
|
{"21", fake_asset::create(21)},
|
||||||
|
{"84", fake_asset::create(84)}}))
|
||||||
static load_async_result load_async(library& library, str_view address) {
|
: stdex::make_rejected_promise<load_result>(asset_loading_exception());
|
||||||
E2D_UNUSED(library, address);
|
|
||||||
return stdex::make_resolved_promise(fake_asset::create(42, {
|
|
||||||
{"21", fake_asset::create(21)},
|
|
||||||
{"84", fake_asset::create(84)}}));
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -44,7 +40,9 @@ TEST_CASE("asset"){
|
|||||||
safe_starter_initializer initializer;
|
safe_starter_initializer initializer;
|
||||||
library& l = the<library>();
|
library& l = the<library>();
|
||||||
{
|
{
|
||||||
auto fa = l.load_asset<fake_asset>("");
|
REQUIRE_FALSE(l.load_asset<fake_asset>("none"));
|
||||||
|
|
||||||
|
auto fa = l.load_asset<fake_asset>("42");
|
||||||
REQUIRE(fa);
|
REQUIRE(fa);
|
||||||
REQUIRE(fa->content() == 42);
|
REQUIRE(fa->content() == 42);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user