Widgets/Canvas: Add render mask parameter
This commit is contained in:
parent
8c3a0a9200
commit
237602a33f
|
|
@ -144,17 +144,20 @@ int main()
|
||||||
Nz::Physics3DSystem physSytem(registry);
|
Nz::Physics3DSystem physSytem(registry);
|
||||||
Nz::RenderSystem renderSystem(registry);
|
Nz::RenderSystem renderSystem(registry);
|
||||||
|
|
||||||
Nz::Canvas canvas(registry, window.GetEventHandler(), window.GetCursorController().CreateHandle());
|
Nz::Canvas canvas2D(registry, window.GetEventHandler(), window.GetCursorController().CreateHandle(), 2);
|
||||||
Nz::LabelWidget* labelWidget = canvas.Add<Nz::LabelWidget>();
|
Nz::LabelWidget* labelWidget = canvas2D.Add<Nz::LabelWidget>();
|
||||||
|
labelWidget->SetPosition(0.f, 300.f, 0.f);
|
||||||
//labelWidget->EnableBackground(true);
|
//labelWidget->EnableBackground(true);
|
||||||
labelWidget->UpdateText(Nz::SimpleTextDrawer::Draw("Bonjour Paris !", 72), 0.1f);
|
labelWidget->UpdateText(Nz::SimpleTextDrawer::Draw("Bonjour Paris !", 72));
|
||||||
|
|
||||||
/*entt::entity viewer2D = registry.create();
|
entt::entity viewer2D = registry.create();
|
||||||
{
|
{
|
||||||
registry.emplace<Nz::NodeComponent>(viewer2D);
|
registry.emplace<Nz::NodeComponent>(viewer2D);
|
||||||
auto& cameraComponent = registry.emplace<Nz::CameraComponent>(viewer2D, window.GetRenderTarget(), Nz::ProjectionType::Orthographic);
|
auto& cameraComponent = registry.emplace<Nz::CameraComponent>(viewer2D, window.GetRenderTarget(), Nz::ProjectionType::Orthographic);
|
||||||
|
cameraComponent.UpdateZNear(1.f);
|
||||||
|
cameraComponent.UpdateZFar(1000.f);
|
||||||
cameraComponent.UpdateRenderMask(2);
|
cameraComponent.UpdateRenderMask(2);
|
||||||
}*/
|
}
|
||||||
|
|
||||||
entt::entity text2D = registry.create();
|
entt::entity text2D = registry.create();
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -19,19 +19,20 @@ namespace Nz
|
||||||
friend BaseWidget;
|
friend BaseWidget;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
inline Canvas(entt::registry& registry, Nz::EventHandler& eventHandler, Nz::CursorControllerHandle cursorController);
|
inline Canvas(entt::registry& registry, EventHandler& eventHandler, CursorControllerHandle cursorController, UInt32 renderMask);
|
||||||
Canvas(const Canvas&) = delete;
|
Canvas(const Canvas&) = delete;
|
||||||
Canvas(Canvas&&) = delete;
|
Canvas(Canvas&&) = delete;
|
||||||
inline ~Canvas();
|
inline ~Canvas();
|
||||||
|
|
||||||
inline entt::registry& GetRegistry();
|
inline entt::registry& GetRegistry();
|
||||||
inline const entt::registry& GetRegistry() const;
|
inline const entt::registry& GetRegistry() const;
|
||||||
|
inline UInt32 GetRenderMask() const;
|
||||||
|
|
||||||
Canvas& operator=(const Canvas&) = delete;
|
Canvas& operator=(const Canvas&) = delete;
|
||||||
Canvas& operator=(Canvas&&) = delete;
|
Canvas& operator=(Canvas&&) = delete;
|
||||||
|
|
||||||
NazaraSignal(OnUnhandledKeyPressed, const Nz::EventHandler* /*eventHandler*/, const Nz::WindowEvent::KeyEvent& /*event*/);
|
NazaraSignal(OnUnhandledKeyPressed, const EventHandler* /*eventHandler*/, const WindowEvent::KeyEvent& /*event*/);
|
||||||
NazaraSignal(OnUnhandledKeyReleased, const Nz::EventHandler* /*eventHandler*/, const Nz::WindowEvent::KeyEvent& /*event*/);
|
NazaraSignal(OnUnhandledKeyReleased, const EventHandler* /*eventHandler*/, const WindowEvent::KeyEvent& /*event*/);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
inline void ClearKeyboardOwner(std::size_t canvasIndex);
|
inline void ClearKeyboardOwner(std::size_t canvasIndex);
|
||||||
|
|
@ -48,38 +49,39 @@ namespace Nz
|
||||||
void UnregisterWidget(std::size_t index);
|
void UnregisterWidget(std::size_t index);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void OnEventMouseButtonPressed(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::MouseButtonEvent& event);
|
void OnEventMouseButtonPressed(const EventHandler* eventHandler, const WindowEvent::MouseButtonEvent& event);
|
||||||
void OnEventMouseButtonRelease(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::MouseButtonEvent& event);
|
void OnEventMouseButtonRelease(const EventHandler* eventHandler, const WindowEvent::MouseButtonEvent& event);
|
||||||
void OnEventMouseLeft(const Nz::EventHandler* eventHandler);
|
void OnEventMouseLeft(const EventHandler* eventHandler);
|
||||||
void OnEventMouseMoved(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::MouseMoveEvent& event);
|
void OnEventMouseMoved(const EventHandler* eventHandler, const WindowEvent::MouseMoveEvent& event);
|
||||||
void OnEventMouseWheelMoved(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::MouseWheelEvent& event);
|
void OnEventMouseWheelMoved(const EventHandler* eventHandler, const WindowEvent::MouseWheelEvent& event);
|
||||||
void OnEventKeyPressed(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::KeyEvent& event);
|
void OnEventKeyPressed(const EventHandler* eventHandler, const WindowEvent::KeyEvent& event);
|
||||||
void OnEventKeyReleased(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::KeyEvent& event);
|
void OnEventKeyReleased(const EventHandler* eventHandler, const WindowEvent::KeyEvent& event);
|
||||||
void OnEventTextEntered(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::TextEvent& event);
|
void OnEventTextEntered(const EventHandler* eventHandler, const WindowEvent::TextEvent& event);
|
||||||
void OnEventTextEdited(const Nz::EventHandler* eventHandler, const Nz::WindowEvent::EditEvent& event);
|
void OnEventTextEdited(const EventHandler* eventHandler, const WindowEvent::EditEvent& event);
|
||||||
|
|
||||||
struct WidgetEntry
|
struct WidgetEntry
|
||||||
{
|
{
|
||||||
BaseWidget* widget;
|
BaseWidget* widget;
|
||||||
Nz::Boxf box;
|
Boxf box;
|
||||||
Nz::SystemCursor cursor;
|
SystemCursor cursor;
|
||||||
};
|
};
|
||||||
|
|
||||||
NazaraSlot(Nz::EventHandler, OnKeyPressed, m_keyPressedSlot);
|
NazaraSlot(EventHandler, OnKeyPressed, m_keyPressedSlot);
|
||||||
NazaraSlot(Nz::EventHandler, OnKeyReleased, m_keyReleasedSlot);
|
NazaraSlot(EventHandler, OnKeyReleased, m_keyReleasedSlot);
|
||||||
NazaraSlot(Nz::EventHandler, OnMouseButtonPressed, m_mouseButtonPressedSlot);
|
NazaraSlot(EventHandler, OnMouseButtonPressed, m_mouseButtonPressedSlot);
|
||||||
NazaraSlot(Nz::EventHandler, OnMouseButtonReleased, m_mouseButtonReleasedSlot);
|
NazaraSlot(EventHandler, OnMouseButtonReleased, m_mouseButtonReleasedSlot);
|
||||||
NazaraSlot(Nz::EventHandler, OnMouseLeft, m_mouseLeftSlot);
|
NazaraSlot(EventHandler, OnMouseLeft, m_mouseLeftSlot);
|
||||||
NazaraSlot(Nz::EventHandler, OnMouseMoved, m_mouseMovedSlot);
|
NazaraSlot(EventHandler, OnMouseMoved, m_mouseMovedSlot);
|
||||||
NazaraSlot(Nz::EventHandler, OnMouseWheelMoved, m_mouseWheelMovedSlot);
|
NazaraSlot(EventHandler, OnMouseWheelMoved, m_mouseWheelMovedSlot);
|
||||||
NazaraSlot(Nz::EventHandler, OnTextEntered, m_textEnteredSlot);
|
NazaraSlot(EventHandler, OnTextEntered, m_textEnteredSlot);
|
||||||
NazaraSlot(Nz::EventHandler, OnTextEdited, m_textEditedSlot);
|
NazaraSlot(EventHandler, OnTextEdited, m_textEditedSlot);
|
||||||
|
|
||||||
|
CursorControllerHandle m_cursorController;
|
||||||
|
UInt32 m_renderMask;
|
||||||
std::size_t m_keyboardOwner;
|
std::size_t m_keyboardOwner;
|
||||||
std::size_t m_hoveredWidget;
|
std::size_t m_hoveredWidget;
|
||||||
std::vector<WidgetEntry> m_widgetEntries;
|
std::vector<WidgetEntry> m_widgetEntries;
|
||||||
entt::registry& m_registry;
|
entt::registry& m_registry;
|
||||||
Nz::CursorControllerHandle m_cursorController;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,8 @@
|
||||||
|
|
||||||
namespace Nz
|
namespace Nz
|
||||||
{
|
{
|
||||||
inline Canvas::Canvas(entt::registry& registry, Nz::EventHandler& eventHandler, Nz::CursorControllerHandle cursorController) :
|
inline Canvas::Canvas(entt::registry& registry, Nz::EventHandler& eventHandler, Nz::CursorControllerHandle cursorController, UInt32 renderMask) :
|
||||||
|
m_renderMask(renderMask),
|
||||||
m_keyboardOwner(InvalidCanvasIndex),
|
m_keyboardOwner(InvalidCanvasIndex),
|
||||||
m_hoveredWidget(InvalidCanvasIndex),
|
m_hoveredWidget(InvalidCanvasIndex),
|
||||||
m_registry(registry),
|
m_registry(registry),
|
||||||
|
|
@ -51,6 +52,11 @@ namespace Nz
|
||||||
return m_registry;
|
return m_registry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline UInt32 Canvas::GetRenderMask() const
|
||||||
|
{
|
||||||
|
return m_renderMask;
|
||||||
|
}
|
||||||
|
|
||||||
inline void Canvas::ClearKeyboardOwner(std::size_t canvasIndex)
|
inline void Canvas::ClearKeyboardOwner(std::size_t canvasIndex)
|
||||||
{
|
{
|
||||||
if (m_keyboardOwner == canvasIndex)
|
if (m_keyboardOwner == canvasIndex)
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
#include <Nazara/Graphics/MaterialPass.hpp>
|
#include <Nazara/Graphics/MaterialPass.hpp>
|
||||||
#include <Nazara/Graphics/Components/GraphicsComponent.hpp>
|
#include <Nazara/Graphics/Components/GraphicsComponent.hpp>
|
||||||
#include <Nazara/Utility/Components/NodeComponent.hpp>
|
#include <Nazara/Utility/Components/NodeComponent.hpp>
|
||||||
|
#include <Nazara/Widgets/Canvas.hpp>
|
||||||
#include <Nazara/Widgets/Debug.hpp>
|
#include <Nazara/Widgets/Debug.hpp>
|
||||||
|
|
||||||
namespace Nz
|
namespace Nz
|
||||||
|
|
@ -16,12 +17,12 @@ namespace Nz
|
||||||
BaseWidget(parent)
|
BaseWidget(parent)
|
||||||
{
|
{
|
||||||
auto materialPass = std::make_shared<MaterialPass>(BasicMaterial::GetSettings());
|
auto materialPass = std::make_shared<MaterialPass>(BasicMaterial::GetSettings());
|
||||||
materialPass->EnableFlag(Nz::MaterialPassFlag::Transparent);
|
materialPass->EnableFlag(MaterialPassFlag::Transparent);
|
||||||
materialPass->EnableDepthBuffer(true);
|
materialPass->EnableDepthBuffer(true);
|
||||||
materialPass->EnableDepthWrite(false);
|
materialPass->EnableDepthWrite(false);
|
||||||
materialPass->EnableBlending(true);
|
materialPass->EnableBlending(true);
|
||||||
materialPass->SetBlendEquation(Nz::BlendEquation::Add, Nz::BlendEquation::Add);
|
materialPass->SetBlendEquation(BlendEquation::Add, BlendEquation::Add);
|
||||||
materialPass->SetBlendFunc(Nz::BlendFunc::SrcAlpha, Nz::BlendFunc::InvSrcAlpha, Nz::BlendFunc::One, Nz::BlendFunc::Zero);
|
materialPass->SetBlendFunc(BlendFunc::SrcAlpha, BlendFunc::InvSrcAlpha, BlendFunc::One, BlendFunc::Zero);
|
||||||
|
|
||||||
auto material = std::make_shared<Material>();
|
auto material = std::make_shared<Material>();
|
||||||
material->AddPass("ForwardPass", std::move(materialPass));
|
material->AddPass("ForwardPass", std::move(materialPass));
|
||||||
|
|
@ -29,7 +30,7 @@ namespace Nz
|
||||||
m_textSprite = std::make_shared<TextSprite>(std::move(material));
|
m_textSprite = std::make_shared<TextSprite>(std::move(material));
|
||||||
|
|
||||||
m_textEntity = CreateEntity();
|
m_textEntity = CreateEntity();
|
||||||
GetRegistry().emplace<GraphicsComponent>(m_textEntity).AttachRenderable(m_textSprite);
|
GetRegistry().emplace<GraphicsComponent>(m_textEntity).AttachRenderable(m_textSprite, GetCanvas()->GetRenderMask());
|
||||||
GetRegistry().emplace<NodeComponent>(m_textEntity).SetParent(this);
|
GetRegistry().emplace<NodeComponent>(m_textEntity).SetParent(this);
|
||||||
|
|
||||||
Layout();
|
Layout();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue