secene 接入 多继承链
This commit is contained in:
@@ -14,7 +14,7 @@ namespace detail {
|
||||
class Paint_Overlay;
|
||||
template <class Renderable_Type, class Axis_Type>
|
||||
requires std::derived_from<Renderable_Type, Renderable> && std::derived_from<Axis_Type, Abs_Axis>
|
||||
void attach_renderable_dependency(::Scene_Base::Attach_Builder& builder, const renderive_Owner<Renderable_Type>& renderable, const renderive_Owner<Axis_Type>& axis) {
|
||||
void attach_renderable_dependency(::Scene_2D_Base::Attach_Builder& builder, const renderive_Owner<Renderable_Type>& renderable, const renderive_Owner<Axis_Type>& axis) {
|
||||
if (!axis)
|
||||
return;
|
||||
builder.add_dependency_parent(renderable, axis);
|
||||
@@ -24,10 +24,10 @@ void attach_renderable_dependency(::Scene_Base::Attach_Builder& builder, const r
|
||||
builder.add_display_parent(axis, renderable);
|
||||
}
|
||||
template <class Renderable_Type, class Value>
|
||||
void attach_renderable_dependency(::Scene_Base::Attach_Builder&, const renderive_Owner<Renderable_Type>&, const Value&) {}
|
||||
void attach_renderable_dependency(::Scene_2D_Base::Attach_Builder&, const renderive_Owner<Renderable_Type>&, const Value&) {}
|
||||
template <class Control, class... Args>
|
||||
requires std::derived_from<Control, Renderable>
|
||||
void attach_renderable(::Scene_Base::Attach_Builder& builder, const renderive_Owner<Control>& renderable, const renderive_Owner<Renderable>& parent, const Args&... args) {
|
||||
void attach_renderable(::Scene_2D_Base::Attach_Builder& builder, const renderive_Owner<Control>& renderable, const renderive_Owner<Renderable>& parent, const Args&... args) {
|
||||
builder.attach(renderable);
|
||||
builder.add_display_parent(renderable, parent);
|
||||
builder.add_dependency_parent(renderable, parent);
|
||||
@@ -41,9 +41,9 @@ struct Renderable_Builder {
|
||||
using Validator = Validator_Type;
|
||||
using Self = Renderable_Builder;
|
||||
Renderable_Builder() requires std::default_initializable<Properties> && std::default_initializable<Validator> = default;
|
||||
explicit Renderable_Builder(::Scene_Base::Attach_Builder* attach_builder) requires std::default_initializable<Properties> && std::default_initializable<Validator> : attach_builder_(attach_builder) {}
|
||||
explicit Renderable_Builder(Properties properties, ::Scene_Base::Attach_Builder* attach_builder = nullptr) requires std::default_initializable<Validator> : properties(std::move(properties)), attach_builder_(attach_builder) {}
|
||||
Renderable_Builder(Properties properties, Validator validator, ::Scene_Base::Attach_Builder* attach_builder = nullptr) : properties(std::move(properties)), validator(std::move(validator)), attach_builder_(attach_builder) {}
|
||||
explicit Renderable_Builder(::Scene_2D_Base::Attach_Builder* attach_builder) requires std::default_initializable<Properties> && std::default_initializable<Validator> : attach_builder_(attach_builder) {}
|
||||
explicit Renderable_Builder(Properties properties, ::Scene_2D_Base::Attach_Builder* attach_builder = nullptr) requires std::default_initializable<Validator> : properties(std::move(properties)), attach_builder_(attach_builder) {}
|
||||
Renderable_Builder(Properties properties, Validator validator, ::Scene_2D_Base::Attach_Builder* attach_builder = nullptr) : properties(std::move(properties)), validator(std::move(validator)), attach_builder_(attach_builder) {}
|
||||
template <auto Member, Property_Member_Assignable<Properties, Member> Value>
|
||||
Self& set(Value&& value) {
|
||||
properties.*Member = std::forward<Value>(value);
|
||||
@@ -82,6 +82,6 @@ private:
|
||||
}
|
||||
Properties properties{};
|
||||
[[no_unique_address]] Validator validator{};
|
||||
::Scene_Base::Attach_Builder* attach_builder_{};
|
||||
::Scene_2D_Base::Attach_Builder* attach_builder_{};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user