mirror of
https://github.com/barkeser2002/flower.git
synced 2026-09-25 20:17:06 +03:00
68 lines
1.3 KiB
C++
68 lines
1.3 KiB
C++
#include "Pch.h"
|
|
#include "Widget.h"
|
|
#include "../Editor.h"
|
|
|
|
using namespace Flower;
|
|
using namespace Flower::UI;
|
|
|
|
Widget::Widget(std::string tile) :
|
|
m_title(tile), m_bShow(true), m_bLastShow(true)
|
|
{
|
|
m_renderer = GEngine->getRuntimeModule<Renderer>();
|
|
ASSERT(m_renderer, "You must register one renderer module when require widget ui.");
|
|
}
|
|
|
|
void Widget::init()
|
|
{
|
|
// register tick function on imgui pass..
|
|
m_tickFunctionHandle = m_renderer->imguiTickFunctions.addRaw(this, &Widget::tick);
|
|
|
|
onInit();
|
|
}
|
|
|
|
void Widget::tick(const RuntimeModuleTickData& tickData)
|
|
{
|
|
// Sync visible state.
|
|
if (m_bLastShow != m_bShow)
|
|
{
|
|
m_bLastShow = m_bShow;
|
|
if (m_bShow)
|
|
{
|
|
// last time is hide, current show.
|
|
onShow();
|
|
}
|
|
else
|
|
{
|
|
// last time show, current hide.
|
|
onHide();
|
|
}
|
|
}
|
|
|
|
beforeTick();
|
|
|
|
onTick(tickData);
|
|
|
|
// When project select, disable other widget visible draw disabled.
|
|
if (m_bShow && !GEditor->getProjectSelect()->getVisible())
|
|
{
|
|
ImGui::SetNextWindowSize(ImVec2(520, 600), ImGuiCond_FirstUseEver);
|
|
if (ImGui::Begin(getTile().c_str(), &m_bShow))
|
|
{
|
|
ImGui::PushID(getTile().c_str());
|
|
onVisibleTick(tickData);
|
|
ImGui::PopID();
|
|
}
|
|
|
|
ImGui::End();
|
|
}
|
|
|
|
afterTick();
|
|
}
|
|
|
|
void Widget::release()
|
|
{
|
|
// unregister tick function.
|
|
CHECK(m_renderer->imguiTickFunctions.remove(m_tickFunctionHandle));
|
|
|
|
onRelease();
|
|
} |