From 461a06ab8cf8c370263fac718343d1a7a2c5d2af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 30 Nov 2021 12:42:05 +0100 Subject: [PATCH] Widgets: Improve theme - move simple styles classes ton their own file - add button hovered texture - add button hovered/pressed texture - add label style --- include/Nazara/Widgets/DefaultWidgetTheme.hpp | 34 +---- include/Nazara/Widgets/LabelWidget.hpp | 9 +- include/Nazara/Widgets/LabelWidget.inl | 8 - include/Nazara/Widgets/SimpleWidgetStyles.hpp | 84 +++++++++++ include/Nazara/Widgets/SimpleWidgetStyles.inl | 13 ++ include/Nazara/Widgets/WidgetTheme.hpp | 22 +++ src/Nazara/Widgets/DefaultWidgetTheme.cpp | 112 ++++---------- src/Nazara/Widgets/LabelWidget.cpp | 34 +++-- src/Nazara/Widgets/SimpleWidgetStyles.cpp | 138 ++++++++++++++++++ src/Nazara/Widgets/WidgetTheme.cpp | 23 +++ 10 files changed, 343 insertions(+), 134 deletions(-) create mode 100644 include/Nazara/Widgets/SimpleWidgetStyles.hpp create mode 100644 include/Nazara/Widgets/SimpleWidgetStyles.inl create mode 100644 src/Nazara/Widgets/SimpleWidgetStyles.cpp diff --git a/include/Nazara/Widgets/DefaultWidgetTheme.hpp b/include/Nazara/Widgets/DefaultWidgetTheme.hpp index 0e7ae68aa..617da4171 100644 --- a/include/Nazara/Widgets/DefaultWidgetTheme.hpp +++ b/include/Nazara/Widgets/DefaultWidgetTheme.hpp @@ -14,8 +14,6 @@ namespace Nz { - class DefaultDefaultButtonWidgetStyle; - class NAZARA_WIDGETS_API DefaultWidgetTheme : public WidgetTheme { public: @@ -25,43 +23,17 @@ namespace Nz ~DefaultWidgetTheme() = default; std::unique_ptr CreateStyle(ButtonWidget* buttonWidget) const override; + std::unique_ptr CreateStyle(LabelWidget* buttonWidget) const override; DefaultWidgetTheme& operator=(const DefaultWidgetTheme&) = delete; DefaultWidgetTheme& operator=(DefaultWidgetTheme&&) = default; private: std::shared_ptr m_buttonMaterial; + std::shared_ptr m_hoveredButtonMaterial; + std::shared_ptr m_pressedHoveredMaterial; std::shared_ptr m_pressedButtonMaterial; }; - - class NAZARA_WIDGETS_API DefaultButtonWidgetStyle : public ButtonWidgetStyle - { - public: - DefaultButtonWidgetStyle(ButtonWidget* buttonWidget, std::shared_ptr defaultMaterial, std::shared_ptr pressedMaterial); - DefaultButtonWidgetStyle(const DefaultButtonWidgetStyle&) = delete; - DefaultButtonWidgetStyle(DefaultButtonWidgetStyle&&) = default; - ~DefaultButtonWidgetStyle() = default; - - void Layout(const Vector2f& size) override; - - void OnHoverBegin() override; - void OnHoverEnd() override; - void OnPress() override; - void OnRelease() override; - - void UpdateText(const AbstractTextDrawer& drawer) override; - - DefaultButtonWidgetStyle& operator=(const DefaultButtonWidgetStyle&) = delete; - DefaultButtonWidgetStyle& operator=(DefaultButtonWidgetStyle&&) = default; - - private: - std::shared_ptr m_defaultMaterial; - std::shared_ptr m_pressedMaterial; - std::shared_ptr m_sprite; - std::shared_ptr m_textSprite; - entt::entity m_textEntity; - entt::entity m_gradientEntity; - }; } #include diff --git a/include/Nazara/Widgets/LabelWidget.hpp b/include/Nazara/Widgets/LabelWidget.hpp index 4cc91d97a..29b3aaacd 100644 --- a/include/Nazara/Widgets/LabelWidget.hpp +++ b/include/Nazara/Widgets/LabelWidget.hpp @@ -9,6 +9,7 @@ #include #include +#include namespace Nz { @@ -23,14 +24,16 @@ namespace Nz LabelWidget(LabelWidget&&) = default; ~LabelWidget() = default; - inline void UpdateText(const AbstractTextDrawer& drawer, float scale = 1.f); + void UpdateText(const AbstractTextDrawer& drawer, float scale = 1.f); LabelWidget& operator=(const LabelWidget&) = delete; LabelWidget& operator=(LabelWidget&&) = default; private: - entt::entity m_entity; - std::shared_ptr m_textSprite; + void OnMouseEnter() override; + void OnMouseExit() override; + + std::unique_ptr m_style; }; } diff --git a/include/Nazara/Widgets/LabelWidget.inl b/include/Nazara/Widgets/LabelWidget.inl index c109a852f..809927253 100644 --- a/include/Nazara/Widgets/LabelWidget.inl +++ b/include/Nazara/Widgets/LabelWidget.inl @@ -7,14 +7,6 @@ namespace Nz { - inline void LabelWidget::UpdateText(const AbstractTextDrawer& drawer, float scale) - { - m_textSprite->Update(drawer, scale); - - Nz::Vector2f size = Nz::Vector2f(m_textSprite->GetAABB().GetLengths()); - SetMinimumSize(size); - SetPreferredSize(size); - } } #include diff --git a/include/Nazara/Widgets/SimpleWidgetStyles.hpp b/include/Nazara/Widgets/SimpleWidgetStyles.hpp new file mode 100644 index 000000000..57571e38e --- /dev/null +++ b/include/Nazara/Widgets/SimpleWidgetStyles.hpp @@ -0,0 +1,84 @@ +// Copyright (C) 2021 Jérôme "Lynix" Leclercq (lynix680@gmail.com) +// This file is part of the "Nazara Engine - Widgets module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#pragma once + +#ifndef NAZARA_WIDGETS_SIMPLEWIDGETSTYLES_HPP +#define NAZARA_WIDGETS_SIMPLEWIDGETSTYLES_HPP + +#include +#include +#include +#include + +namespace Nz +{ + class NAZARA_WIDGETS_API SimpleButtonWidgetStyle : public ButtonWidgetStyle + { + public: + SimpleButtonWidgetStyle(ButtonWidget* buttonWidget, std::shared_ptr material, std::shared_ptr hoveredMaterial = {}, std::shared_ptr pressedMaterial = {}, std::shared_ptr pressedHoveredMaterial = {}); + SimpleButtonWidgetStyle(const SimpleButtonWidgetStyle&) = delete; + SimpleButtonWidgetStyle(SimpleButtonWidgetStyle&&) = default; + ~SimpleButtonWidgetStyle() = default; + + void Layout(const Vector2f& size) override; + + void OnHoverBegin() override; + void OnHoverEnd() override; + void OnPress() override; + void OnRelease() override; + + void UpdateText(const AbstractTextDrawer& drawer) override; + + SimpleButtonWidgetStyle& operator=(const SimpleButtonWidgetStyle&) = delete; + SimpleButtonWidgetStyle& operator=(SimpleButtonWidgetStyle&&) = default; + + protected: + virtual void UpdateMaterial(bool hovered, bool pressed); + + private: + std::shared_ptr m_hoveredMaterial; + std::shared_ptr m_material; + std::shared_ptr m_pressedMaterial; + std::shared_ptr m_pressedHoveredMaterial; + std::shared_ptr m_sprite; + std::shared_ptr m_textSprite; + entt::entity m_spriteEntity; + entt::entity m_textEntity; + bool m_isHovered; + bool m_isPressed; + }; + + class NAZARA_WIDGETS_API SimpleLabelWidgetStyle : public LabelWidgetStyle + { + public: + SimpleLabelWidgetStyle(LabelWidget* labelWidget, std::shared_ptr material, std::shared_ptr hoveredMaterial = {}); + SimpleLabelWidgetStyle(const SimpleLabelWidgetStyle&) = delete; + SimpleLabelWidgetStyle(SimpleLabelWidgetStyle&&) = default; + ~SimpleLabelWidgetStyle() = default; + + void Layout(const Vector2f& size) override; + + void OnHoverBegin() override; + void OnHoverEnd() override; + + void UpdateText(const AbstractTextDrawer& drawer) override; + + SimpleLabelWidgetStyle& operator=(const SimpleLabelWidgetStyle&) = delete; + SimpleLabelWidgetStyle& operator=(SimpleLabelWidgetStyle&&) = default; + + protected: + virtual void UpdateMaterial(bool hovered); + + private: + std::shared_ptr m_hoveredMaterial; + std::shared_ptr m_material; + std::shared_ptr m_textSprite; + entt::entity m_entity; + }; +} + +#include + +#endif // NAZARA_WIDGETS_SIMPLEWIDGETSTYLES_HPP diff --git a/include/Nazara/Widgets/SimpleWidgetStyles.inl b/include/Nazara/Widgets/SimpleWidgetStyles.inl new file mode 100644 index 000000000..0ce28d29a --- /dev/null +++ b/include/Nazara/Widgets/SimpleWidgetStyles.inl @@ -0,0 +1,13 @@ +// Copyright (C) 2021 Jérôme "Lynix" Leclercq (lynix680@gmail.com) +// This file is part of the "Nazara Engine - Widgets module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include +#include + +namespace Nz +{ +} + +#include diff --git a/include/Nazara/Widgets/WidgetTheme.hpp b/include/Nazara/Widgets/WidgetTheme.hpp index 7ad59065d..8cfe8e4a2 100644 --- a/include/Nazara/Widgets/WidgetTheme.hpp +++ b/include/Nazara/Widgets/WidgetTheme.hpp @@ -17,6 +17,8 @@ namespace Nz class AbstractTextDrawer; class ButtonWidget; class ButtonWidgetStyle; + class LabelWidget; + class LabelWidgetStyle; class NAZARA_WIDGETS_API WidgetTheme { @@ -27,6 +29,7 @@ namespace Nz virtual ~WidgetTheme(); virtual std::unique_ptr CreateStyle(ButtonWidget* buttonWidget) const = 0; + virtual std::unique_ptr CreateStyle(LabelWidget* buttonWidget) const = 0; WidgetTheme& operator=(const WidgetTheme&) = delete; WidgetTheme& operator=(WidgetTheme&&) = default; @@ -43,6 +46,7 @@ namespace Nz virtual ~BaseWidgetStyle(); inline entt::entity CreateEntity(); + entt::entity CreateGraphicsEntity(); inline void DestroyEntity(entt::entity entity); inline entt::registry& GetRegistry(); @@ -75,7 +79,25 @@ namespace Nz ButtonWidgetStyle& operator=(const ButtonWidgetStyle&) = delete; ButtonWidgetStyle& operator=(ButtonWidgetStyle&&) = default; + }; + class NAZARA_WIDGETS_API LabelWidgetStyle : public BaseWidgetStyle + { + public: + using BaseWidgetStyle::BaseWidgetStyle; + LabelWidgetStyle(const LabelWidgetStyle&) = delete; + LabelWidgetStyle(LabelWidgetStyle&&) = default; + ~LabelWidgetStyle() = default; + + virtual void Layout(const Vector2f& size) = 0; + + virtual void OnHoverBegin(); + virtual void OnHoverEnd(); + + virtual void UpdateText(const AbstractTextDrawer& drawer) = 0; + + LabelWidgetStyle& operator=(const LabelWidgetStyle&) = delete; + LabelWidgetStyle& operator=(LabelWidgetStyle&&) = default; }; } diff --git a/src/Nazara/Widgets/DefaultWidgetTheme.cpp b/src/Nazara/Widgets/DefaultWidgetTheme.cpp index 5fc0f7a1a..1af563d9a 100644 --- a/src/Nazara/Widgets/DefaultWidgetTheme.cpp +++ b/src/Nazara/Widgets/DefaultWidgetTheme.cpp @@ -6,10 +6,7 @@ #include #include #include -#include -#include -#include -#include +#include #include #include @@ -21,9 +18,17 @@ namespace Nz #include }; + const UInt8 ButtonHoveredImage[] = { + #include + }; + const UInt8 ButtonPressedImage[] = { #include }; + + const UInt8 ButtonPressedHoveredImage[] = { + #include + }; } DefaultWidgetTheme::DefaultWidgetTheme() @@ -32,90 +37,35 @@ namespace Nz texParams.renderDevice = Graphics::Instance()->GetRenderDevice(); texParams.loadFormat = PixelFormat::RGBA8_SRGB; + auto CreateMaterialFromTexture = [](std::shared_ptr texture) + { + std::shared_ptr buttonMaterialPass = std::make_shared(BasicMaterial::GetSettings()); + buttonMaterialPass->EnableDepthBuffer(true); + buttonMaterialPass->EnableDepthWrite(false); + + std::shared_ptr material = std::make_shared(); + material->AddPass("ForwardPass", buttonMaterialPass); + + BasicMaterial buttonBasicMat(*buttonMaterialPass); + buttonBasicMat.SetDiffuseMap(texture); + + return material; + }; + // Button material - { - std::shared_ptr buttonMaterialPass = std::make_shared(BasicMaterial::GetSettings()); - buttonMaterialPass->EnableDepthBuffer(true); - buttonMaterialPass->EnableDepthWrite(false); - - m_buttonMaterial = std::make_shared(); - m_buttonMaterial->AddPass("ForwardPass", buttonMaterialPass); - - BasicMaterial buttonBasicMat(*buttonMaterialPass); - buttonBasicMat.SetDiffuseMap(Texture::LoadFromMemory(ButtonImage, sizeof(ButtonImage), texParams)); - } - - // Button (pressed) material - { - std::shared_ptr buttonMaterialPass = std::make_shared(BasicMaterial::GetSettings()); - buttonMaterialPass->EnableDepthBuffer(true); - buttonMaterialPass->EnableDepthWrite(false); - - m_pressedButtonMaterial = std::make_shared(); - m_pressedButtonMaterial->AddPass("ForwardPass", buttonMaterialPass); - - BasicMaterial buttonBasicMat(*buttonMaterialPass); - buttonBasicMat.SetDiffuseMap(Texture::LoadFromMemory(ButtonPressedImage, sizeof(ButtonPressedImage), texParams)); - } + m_buttonMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonImage, sizeof(ButtonImage), texParams)); + m_hoveredButtonMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonHoveredImage, sizeof(ButtonHoveredImage), texParams)); + m_pressedButtonMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonPressedImage, sizeof(ButtonPressedImage), texParams)); + m_pressedHoveredMaterial = CreateMaterialFromTexture(Texture::LoadFromMemory(ButtonPressedHoveredImage, sizeof(ButtonPressedHoveredImage), texParams)); } std::unique_ptr DefaultWidgetTheme::CreateStyle(ButtonWidget* buttonWidget) const { - return std::make_unique(buttonWidget, m_buttonMaterial, m_pressedButtonMaterial); + return std::make_unique(buttonWidget, m_buttonMaterial, m_hoveredButtonMaterial, m_pressedButtonMaterial, m_pressedHoveredMaterial); } - DefaultButtonWidgetStyle::DefaultButtonWidgetStyle(ButtonWidget* buttonWidget, std::shared_ptr defaultMaterial, std::shared_ptr pressedMaterial) : - ButtonWidgetStyle(buttonWidget), - m_defaultMaterial(std::move(defaultMaterial)), - m_pressedMaterial(std::move(pressedMaterial)) + std::unique_ptr DefaultWidgetTheme::CreateStyle(LabelWidget* buttonWidget) const { - auto& registry = GetRegistry(); - UInt32 renderMask = GetRenderMask(); - - m_sprite = std::make_shared(m_defaultMaterial); - - m_gradientEntity = CreateEntity(); - registry.emplace(m_gradientEntity).SetParent(buttonWidget); - registry.emplace(m_gradientEntity).AttachRenderable(m_sprite, renderMask); - - m_textSprite = std::make_shared(Widgets::Instance()->GetTransparentMaterial()); - - m_textEntity = CreateEntity(); - registry.emplace(m_textEntity).SetParent(buttonWidget); - registry.emplace(m_textEntity).AttachRenderable(m_textSprite, renderMask); - } - - void DefaultButtonWidgetStyle::Layout(const Vector2f& size) - { - m_sprite->SetSize(size); - - entt::registry& registry = GetRegistry(); - - Boxf textBox = m_textSprite->GetAABB(); - registry.get(m_textEntity).SetPosition(size.x / 2.f - textBox.width / 2.f, size.y / 2.f - textBox.height / 2.f); - } - - void DefaultButtonWidgetStyle::OnHoverBegin() - { - } - - void DefaultButtonWidgetStyle::OnHoverEnd() - { - m_sprite->SetMaterial(m_defaultMaterial); - } - - void DefaultButtonWidgetStyle::OnPress() - { - m_sprite->SetMaterial(m_pressedMaterial); - } - - void DefaultButtonWidgetStyle::OnRelease() - { - m_sprite->SetMaterial(m_defaultMaterial); - } - - void DefaultButtonWidgetStyle::UpdateText(const AbstractTextDrawer& drawer) - { - m_textSprite->Update(drawer); + return std::make_unique(buttonWidget, Widgets::Instance()->GetTransparentMaterial()); } } diff --git a/src/Nazara/Widgets/LabelWidget.cpp b/src/Nazara/Widgets/LabelWidget.cpp index 531f1f2e9..092ce38eb 100644 --- a/src/Nazara/Widgets/LabelWidget.cpp +++ b/src/Nazara/Widgets/LabelWidget.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -15,18 +16,29 @@ namespace Nz LabelWidget::LabelWidget(BaseWidget* parent) : BaseWidget(parent) { - m_textSprite = std::make_shared(Widgets::Instance()->GetTransparentMaterial()); - - auto& registry = GetRegistry(); - - m_entity = CreateEntity(); - - auto& gfxComponent = registry.emplace(m_entity, IsVisible()); - gfxComponent.AttachRenderable(m_textSprite, GetCanvas()->GetRenderMask()); - - auto& nodeComponent = registry.emplace(m_entity); - nodeComponent.SetParent(this); + m_style = GetTheme()->CreateStyle(this); Layout(); } + + void LabelWidget::UpdateText(const AbstractTextDrawer& drawer, float scale) + { + m_style->UpdateText(drawer); + + Vector2f size(drawer.GetBounds().GetLengths()); + SetMinimumSize(size); + SetPreferredSize(size + Vector2f(20.f, 10.f)); + + Layout(); + } + + void LabelWidget::OnMouseEnter() + { + m_style->OnHoverBegin(); + } + + void LabelWidget::OnMouseExit() + { + m_style->OnHoverEnd(); + } } diff --git a/src/Nazara/Widgets/SimpleWidgetStyles.cpp b/src/Nazara/Widgets/SimpleWidgetStyles.cpp new file mode 100644 index 000000000..112502396 --- /dev/null +++ b/src/Nazara/Widgets/SimpleWidgetStyles.cpp @@ -0,0 +1,138 @@ +// Copyright (C) 2021 Jérôme "Lynix" Leclercq (lynix680@gmail.com) +// This file is part of the "Nazara Engine - Widgets module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Nz +{ + SimpleButtonWidgetStyle::SimpleButtonWidgetStyle(ButtonWidget* buttonWidget, std::shared_ptr material, std::shared_ptr hoveredMaterial, std::shared_ptr pressedMaterial, std::shared_ptr pressedHoveredMaterial) : + ButtonWidgetStyle(buttonWidget), + m_hoveredMaterial(std::move(hoveredMaterial)), + m_material(std::move(material)), + m_pressedMaterial(std::move(pressedMaterial)), + m_pressedHoveredMaterial(std::move(pressedHoveredMaterial)), + m_isHovered(false), + m_isPressed(false) + { + assert(m_material); + + auto& registry = GetRegistry(); + UInt32 renderMask = GetRenderMask(); + + m_sprite = std::make_shared(m_material); + m_textSprite = std::make_shared(Widgets::Instance()->GetTransparentMaterial()); + + m_spriteEntity = CreateGraphicsEntity(); + registry.get(m_spriteEntity).AttachRenderable(m_sprite, renderMask); + + m_textEntity = CreateGraphicsEntity(); + registry.get(m_textEntity).AttachRenderable(m_textSprite, renderMask); + } + + void SimpleButtonWidgetStyle::Layout(const Vector2f& size) + { + m_sprite->SetSize(size); + + entt::registry& registry = GetRegistry(); + + Boxf textBox = m_textSprite->GetAABB(); + registry.get(m_textEntity).SetPosition(size.x / 2.f - textBox.width / 2.f, size.y / 2.f - textBox.height / 2.f); + } + + void SimpleButtonWidgetStyle::OnHoverBegin() + { + m_isHovered = true; + UpdateMaterial(m_isHovered, m_isPressed); + } + + void SimpleButtonWidgetStyle::OnHoverEnd() + { + m_isHovered = false; + UpdateMaterial(m_isHovered, m_isPressed); + } + + void SimpleButtonWidgetStyle::OnPress() + { + m_isPressed = true; + UpdateMaterial(m_isHovered, m_isPressed); + } + + void SimpleButtonWidgetStyle::OnRelease() + { + m_isPressed = false; + UpdateMaterial(m_isHovered, m_isPressed); + } + + void SimpleButtonWidgetStyle::UpdateText(const AbstractTextDrawer& drawer) + { + m_textSprite->Update(drawer); + } + + void SimpleButtonWidgetStyle::UpdateMaterial(bool hovered, bool pressed) + { + if (pressed && hovered && m_pressedHoveredMaterial) + m_sprite->SetMaterial(m_pressedHoveredMaterial); + else if (pressed && m_pressedMaterial) + m_sprite->SetMaterial(m_pressedMaterial); + else if (hovered && m_hoveredMaterial) + m_sprite->SetMaterial(m_hoveredMaterial); + else + m_sprite->SetMaterial(m_material); + } + + + SimpleLabelWidgetStyle::SimpleLabelWidgetStyle(LabelWidget* labelWidget, std::shared_ptr material, std::shared_ptr hoveredMaterial) : + LabelWidgetStyle(labelWidget), + m_hoveredMaterial(std::move(hoveredMaterial)), + m_material(std::move(material)) + { + assert(m_material); + + auto& registry = GetRegistry(); + UInt32 renderMask = GetRenderMask(); + + m_textSprite = std::make_shared(m_material); + + m_entity = CreateGraphicsEntity(); + registry.get(m_entity).AttachRenderable(m_textSprite, renderMask); + } + + void SimpleLabelWidgetStyle::Layout(const Vector2f& size) + { + entt::registry& registry = GetRegistry(); + + Boxf textBox = m_textSprite->GetAABB(); + registry.get(m_entity).SetPosition(size.x / 2.f - textBox.width / 2.f, size.y / 2.f - textBox.height / 2.f); + } + + void SimpleLabelWidgetStyle::OnHoverBegin() + { + UpdateMaterial(true); + } + + void SimpleLabelWidgetStyle::OnHoverEnd() + { + UpdateMaterial(false); + } + + void SimpleLabelWidgetStyle::UpdateMaterial(bool hovered) + { + if (hovered && m_hoveredMaterial) + m_textSprite->SetMaterial(m_hoveredMaterial); + else + m_textSprite->SetMaterial(m_material); + } + + void SimpleLabelWidgetStyle::UpdateText(const AbstractTextDrawer& drawer) + { + m_textSprite->Update(drawer); + } +} diff --git a/src/Nazara/Widgets/WidgetTheme.cpp b/src/Nazara/Widgets/WidgetTheme.cpp index 741295e92..823a58137 100644 --- a/src/Nazara/Widgets/WidgetTheme.cpp +++ b/src/Nazara/Widgets/WidgetTheme.cpp @@ -3,6 +3,8 @@ // For conditions of distribution and use, see copyright notice in Config.hpp #include +#include +#include #include #include @@ -12,11 +14,23 @@ namespace Nz BaseWidgetStyle::~BaseWidgetStyle() = default; + entt::entity BaseWidgetStyle::CreateGraphicsEntity() + { + auto& registry = GetRegistry(); + + entt::entity entity = CreateEntity(); + registry.emplace(entity, m_widgetOwner->IsVisible()); + registry.emplace(entity).SetParent(m_widgetOwner); + + return entity; + } + UInt32 BaseWidgetStyle::GetRenderMask() const { return m_widgetOwner->GetCanvas()->GetRenderMask(); } + void ButtonWidgetStyle::OnHoverBegin() { } @@ -32,4 +46,13 @@ namespace Nz void ButtonWidgetStyle::OnRelease() { } + + + void LabelWidgetStyle::OnHoverBegin() + { + } + + void LabelWidgetStyle::OnHoverEnd() + { + } }