new named component

This commit is contained in:
2019-10-30 19:51:54 +07:00
parent c74d63863a
commit a1b30761ce
6 changed files with 115 additions and 0 deletions

View File

@@ -35,6 +35,7 @@
#include "components/flipbook_player.hpp"
#include "components/label.hpp"
#include "components/model_renderer.hpp"
#include "components/named.hpp"
#include "components/renderer.hpp"
#include "components/scene.hpp"
#include "components/spine_player.hpp"

View File

@@ -51,6 +51,7 @@ namespace e2d
class flipbook_player;
class label;
class model_renderer;
class named;
class renderer;
class scene;
class spine_player;

View File

@@ -0,0 +1,56 @@
/*******************************************************************************
* This file is part of the "Enduro2D"
* For conditions of distribution and use, see copyright notice in LICENSE.md
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
******************************************************************************/
#pragma once
#include "../_high.hpp"
#include "../factory.hpp"
namespace e2d
{
class named final {
public:
named() = default;
named& name(str value) noexcept;
[[nodiscard]] str& name() noexcept;
[[nodiscard]] const str& name() const noexcept;
private:
str name_;
};
template <>
class factory_loader<named> final : factory_loader<> {
public:
static const char* schema_source;
bool operator()(
named& component,
const fill_context& ctx) const;
bool operator()(
asset_dependencies& dependencies,
const collect_context& ctx) const;
};
}
namespace e2d
{
inline named& named::name(str value) noexcept {
name_ = std::move(value);
return *this;
}
inline str& named::name() noexcept {
return name_;
}
inline const str& named::name() const noexcept {
return name_;
}
}

View File

@@ -200,4 +200,16 @@ namespace e2d::utils
return self_id;
}
};
//
// overloaded
//
template < typename... Ts >
struct overloaded : Ts... {
using Ts::operator()...;
};
template < typename... Ts >
overloaded(Ts...) -> overloaded<Ts...>;
}

View File

@@ -0,0 +1,43 @@
/*******************************************************************************
* This file is part of the "Enduro2D"
* For conditions of distribution and use, see copyright notice in LICENSE.md
* Copyright (C) 2018-2019, by Matvey Cherevko (blackmatov@gmail.com)
******************************************************************************/
#include <enduro2d/high/components/named.hpp>
namespace e2d
{
const char* factory_loader<named>::schema_source = R"json({
"type" : "object",
"required" : [],
"additionalProperties" : false,
"properties" : {
"name" : { "$ref": "#/common_definitions/name" }
}
})json";
bool factory_loader<named>::operator()(
named& component,
const fill_context& ctx) const
{
if ( ctx.root.HasMember("name") ) {
str name = component.name();
if ( !json_utils::try_parse_value(ctx.root["name"], name) ) {
the<debug>().error("NAMED: Incorrect formatting of 'name' property");
return false;
}
component.name(name);
}
return true;
}
bool factory_loader<named>::operator()(
asset_dependencies& dependencies,
const collect_context& ctx) const
{
E2D_UNUSED(dependencies, ctx);
return true;
}
}

View File

@@ -17,6 +17,7 @@
#include <enduro2d/high/components/flipbook_player.hpp>
#include <enduro2d/high/components/label.hpp>
#include <enduro2d/high/components/model_renderer.hpp>
#include <enduro2d/high/components/named.hpp>
#include <enduro2d/high/components/renderer.hpp>
#include <enduro2d/high/components/scene.hpp>
#include <enduro2d/high/components/spine_player.hpp>
@@ -183,6 +184,7 @@ namespace e2d
.register_component<label>("label")
.register_component<label::dirty>("label.dirty")
.register_component<model_renderer>("model_renderer")
.register_component<named>("named")
.register_component<renderer>("renderer")
.register_component<scene>("scene")
.register_component<spine_player>("spine_player")