From 4df0b16d19b3ff47a56eebf76ed68a441111e1ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Sun, 21 Nov 2021 19:07:46 +0100 Subject: [PATCH] Widgets: Fix ButtonWidget --- include/Nazara/Widgets/ButtonWidget.hpp | 6 +-- include/Nazara/Widgets/ButtonWidget.inl | 10 ++--- src/Nazara/Widgets/ButtonWidget.cpp | 60 +++++++++++++------------ 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/include/Nazara/Widgets/ButtonWidget.hpp b/include/Nazara/Widgets/ButtonWidget.hpp index 2030b9875..8fd9cd726 100644 --- a/include/Nazara/Widgets/ButtonWidget.hpp +++ b/include/Nazara/Widgets/ButtonWidget.hpp @@ -15,6 +15,7 @@ namespace Nz { class AbstractTextDrawer; + class MaterialPass; class NAZARA_WIDGETS_API ButtonWidget : public BaseWidget { @@ -31,10 +32,6 @@ namespace Nz inline const Color& GetPressColor() const; inline const Color& GetPressCornerColor() const; - inline const std::shared_ptr& GetTexture() const; - inline const std::shared_ptr& GetHoverTexture() const; - inline const std::shared_ptr& GetPressTexture() const; - inline void SetColor(const Color& color, const Color& cornerColor); inline void SetHoverColor(const Color& color, const Color& cornerColor); inline void SetPressColor(const Color& color, const Color& cornerColor); @@ -54,6 +51,7 @@ namespace Nz void OnMouseButtonRelease(int x, int y, Mouse::Button button) override; void OnMouseExit() override; + std::shared_ptr m_gradientMaterialPass; std::shared_ptr m_gradientSprite; std::shared_ptr m_textSprite; entt::entity m_textEntity; diff --git a/include/Nazara/Widgets/ButtonWidget.inl b/include/Nazara/Widgets/ButtonWidget.inl index c98adbf09..ba260f863 100644 --- a/include/Nazara/Widgets/ButtonWidget.inl +++ b/include/Nazara/Widgets/ButtonWidget.inl @@ -43,8 +43,8 @@ namespace Nz m_cornerColor = cornerColor; m_gradientSprite->SetColor(m_color); - m_gradientSprite->SetCornerColor(Nz::RectCorner::LeftBottom, m_cornerColor); - m_gradientSprite->SetCornerColor(Nz::RectCorner::RightBottom, m_cornerColor); + m_gradientSprite->SetCornerColor(RectCorner::LeftBottom, m_cornerColor); + m_gradientSprite->SetCornerColor(RectCorner::RightBottom, m_cornerColor); } inline void ButtonWidget::SetHoverColor(const Color& color, const Color& cornerColor) @@ -59,13 +59,13 @@ namespace Nz m_pressCornerColor = cornerColor; } - inline void ButtonWidget::UpdateText(const Nz::AbstractTextDrawer& drawer) + inline void ButtonWidget::UpdateText(const AbstractTextDrawer& drawer) { m_textSprite->Update(drawer); - Nz::Vector2f textSize = Nz::Vector2f(m_textSprite->GetAABB().GetLengths()); + Vector2f textSize = Vector2f(m_textSprite->GetAABB().GetLengths()); SetMinimumSize(textSize); - SetPreferredSize(textSize + Nz::Vector2f(20.f, 10.f)); + SetPreferredSize(textSize + Vector2f(20.f, 10.f)); Layout(); } diff --git a/src/Nazara/Widgets/ButtonWidget.cpp b/src/Nazara/Widgets/ButtonWidget.cpp index 4b25990dc..a8ec9b730 100644 --- a/src/Nazara/Widgets/ButtonWidget.cpp +++ b/src/Nazara/Widgets/ButtonWidget.cpp @@ -2,11 +2,14 @@ // This file is part of the "Nazara Engine - Widgets module" // For conditions of distribution and use, see copyright notice in Config.hpp -#if 0 - #include +#include +#include +#include #include #include +#include +#include #include namespace Nz @@ -21,22 +24,27 @@ namespace Nz m_pressCornerColor { 74, 74, 74 } { entt::registry& registry = GetRegistry(); + UInt32 renderMask = GetCanvas()->GetRenderMask(); - m_gradientSprite = std::make_shared(); + m_gradientMaterialPass = std::make_shared(BasicMaterial::GetSettings()); + + auto gradientMaterial = std::make_shared(); + gradientMaterial->AddPass("ForwardPass", m_gradientMaterialPass); + + m_gradientSprite = std::make_shared(gradientMaterial); m_gradientSprite->SetColor(m_color); - m_gradientSprite->SetCornerColor(Nz::RectCorner::LeftBottom, m_cornerColor); - m_gradientSprite->SetCornerColor(Nz::RectCorner::RightBottom, m_cornerColor); - m_gradientSprite->SetMaterial(Nz::Material::New("Basic2D")); + m_gradientSprite->SetCornerColor(RectCorner::LeftBottom, m_cornerColor); + m_gradientSprite->SetCornerColor(RectCorner::RightBottom, m_cornerColor); m_gradientEntity = CreateEntity(); registry.emplace(m_gradientEntity).SetParent(this); - registry.emplace(m_gradientEntity).AttachRenderable(m_gradientSprite); + registry.emplace(m_gradientEntity).AttachRenderable(m_gradientSprite, renderMask); - m_textSprite = std::make_shared(); + m_textSprite = std::make_shared(Widgets::Instance()->GetTransparentMaterial()); m_textEntity = CreateEntity(); registry.emplace(m_textEntity).SetParent(this); - registry.emplace(m_textEntity).AttachRenderable(m_textSprite); + registry.emplace(m_textEntity).AttachRenderable(m_textSprite, renderMask); Layout(); } @@ -45,34 +53,32 @@ namespace Nz { BaseWidget::Layout(); - Nz::Vector2f size = GetSize(); + Vector2f size = GetSize(); m_gradientSprite->SetSize(size); entt::registry& registry = GetRegistry(); - Nz::Boxf textBox = m_textSprite->GetAABB(); + 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 ButtonWidget::OnMouseButtonPress(int /*x*/, int /*y*/, Nz::Mouse::Button button) + void ButtonWidget::OnMouseButtonPress(int /*x*/, int /*y*/, Mouse::Button button) { - if (button == Nz::Mouse::Left) + if (button == Mouse::Left) { m_gradientSprite->SetColor(m_pressColor); - m_gradientSprite->SetCornerColor(Nz::RectCorner::LeftBottom, m_pressCornerColor); - m_gradientSprite->SetCornerColor(Nz::RectCorner::RightBottom, m_pressCornerColor); - m_gradientSprite->SetTexture(m_pressTexture, false); + m_gradientSprite->SetCornerColor(RectCorner::LeftBottom, m_pressCornerColor); + m_gradientSprite->SetCornerColor(RectCorner::RightBottom, m_pressCornerColor); } } - void ButtonWidget::OnMouseButtonRelease(int /*x*/, int /*y*/, Nz::Mouse::Button button) + void ButtonWidget::OnMouseButtonRelease(int /*x*/, int /*y*/, Mouse::Button button) { - if (button == Nz::Mouse::Left) + if (button == Mouse::Left) { m_gradientSprite->SetColor(m_hoverColor); - m_gradientSprite->SetCornerColor(Nz::RectCorner::LeftBottom, m_hoverCornerColor); - m_gradientSprite->SetCornerColor(Nz::RectCorner::RightBottom, m_hoverCornerColor); - m_gradientSprite->SetTexture(m_hoverTexture, false); + m_gradientSprite->SetCornerColor(RectCorner::LeftBottom, m_hoverCornerColor); + m_gradientSprite->SetCornerColor(RectCorner::RightBottom, m_hoverCornerColor); OnButtonTrigger(this); } @@ -81,18 +87,14 @@ namespace Nz void ButtonWidget::OnMouseEnter() { m_gradientSprite->SetColor(m_hoverColor); - m_gradientSprite->SetCornerColor(Nz::RectCorner::LeftBottom, m_hoverCornerColor); - m_gradientSprite->SetCornerColor(Nz::RectCorner::RightBottom, m_hoverCornerColor); - m_gradientSprite->SetTexture(m_hoverTexture, false); + m_gradientSprite->SetCornerColor(RectCorner::LeftBottom, m_hoverCornerColor); + m_gradientSprite->SetCornerColor(RectCorner::RightBottom, m_hoverCornerColor); } void ButtonWidget::OnMouseExit() { m_gradientSprite->SetColor(m_color); - m_gradientSprite->SetCornerColor(Nz::RectCorner::LeftBottom, m_cornerColor); - m_gradientSprite->SetCornerColor(Nz::RectCorner::RightBottom, m_cornerColor); - m_gradientSprite->SetTexture(m_texture, false); + m_gradientSprite->SetCornerColor(RectCorner::LeftBottom, m_cornerColor); + m_gradientSprite->SetCornerColor(RectCorner::RightBottom, m_cornerColor); } } - -#endif