mirror of
https://github.com/enduro2d/enduro2d.git
synced 2025-12-16 22:16:53 +07:00
new named component
This commit is contained in:
@@ -35,6 +35,7 @@
|
|||||||
#include "components/flipbook_player.hpp"
|
#include "components/flipbook_player.hpp"
|
||||||
#include "components/label.hpp"
|
#include "components/label.hpp"
|
||||||
#include "components/model_renderer.hpp"
|
#include "components/model_renderer.hpp"
|
||||||
|
#include "components/named.hpp"
|
||||||
#include "components/renderer.hpp"
|
#include "components/renderer.hpp"
|
||||||
#include "components/scene.hpp"
|
#include "components/scene.hpp"
|
||||||
#include "components/spine_player.hpp"
|
#include "components/spine_player.hpp"
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ namespace e2d
|
|||||||
class flipbook_player;
|
class flipbook_player;
|
||||||
class label;
|
class label;
|
||||||
class model_renderer;
|
class model_renderer;
|
||||||
|
class named;
|
||||||
class renderer;
|
class renderer;
|
||||||
class scene;
|
class scene;
|
||||||
class spine_player;
|
class spine_player;
|
||||||
|
|||||||
56
headers/enduro2d/high/components/named.hpp
Normal file
56
headers/enduro2d/high/components/named.hpp
Normal 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_;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -200,4 +200,16 @@ namespace e2d::utils
|
|||||||
return self_id;
|
return self_id;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// overloaded
|
||||||
|
//
|
||||||
|
|
||||||
|
template < typename... Ts >
|
||||||
|
struct overloaded : Ts... {
|
||||||
|
using Ts::operator()...;
|
||||||
|
};
|
||||||
|
|
||||||
|
template < typename... Ts >
|
||||||
|
overloaded(Ts...) -> overloaded<Ts...>;
|
||||||
}
|
}
|
||||||
|
|||||||
43
sources/enduro2d/high/components/named.cpp
Normal file
43
sources/enduro2d/high/components/named.cpp
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
#include <enduro2d/high/components/flipbook_player.hpp>
|
#include <enduro2d/high/components/flipbook_player.hpp>
|
||||||
#include <enduro2d/high/components/label.hpp>
|
#include <enduro2d/high/components/label.hpp>
|
||||||
#include <enduro2d/high/components/model_renderer.hpp>
|
#include <enduro2d/high/components/model_renderer.hpp>
|
||||||
|
#include <enduro2d/high/components/named.hpp>
|
||||||
#include <enduro2d/high/components/renderer.hpp>
|
#include <enduro2d/high/components/renderer.hpp>
|
||||||
#include <enduro2d/high/components/scene.hpp>
|
#include <enduro2d/high/components/scene.hpp>
|
||||||
#include <enduro2d/high/components/spine_player.hpp>
|
#include <enduro2d/high/components/spine_player.hpp>
|
||||||
@@ -183,6 +184,7 @@ namespace e2d
|
|||||||
.register_component<label>("label")
|
.register_component<label>("label")
|
||||||
.register_component<label::dirty>("label.dirty")
|
.register_component<label::dirty>("label.dirty")
|
||||||
.register_component<model_renderer>("model_renderer")
|
.register_component<model_renderer>("model_renderer")
|
||||||
|
.register_component<named>("named")
|
||||||
.register_component<renderer>("renderer")
|
.register_component<renderer>("renderer")
|
||||||
.register_component<scene>("scene")
|
.register_component<scene>("scene")
|
||||||
.register_component<spine_player>("spine_player")
|
.register_component<spine_player>("spine_player")
|
||||||
|
|||||||
Reference in New Issue
Block a user