add remder permit

This commit is contained in:
chatlanin
2025-01-22 14:48:22 +03:00
parent 10e51b4c74
commit a000e961d8
8 changed files with 18 additions and 11 deletions

View File

@@ -85,7 +85,7 @@ namespace sandbox
class opengl_panel : public VE::layer
{
VE_FN_OVERIDE();
VE_FN_OVERIDE(opengl_panel, true);
cube m_cb_1;
cube m_cb_2;

View File

@@ -5,7 +5,7 @@ namespace sandbox
{
void test_panel::on_attach()
{
hack::log()("on_attach");
hack::log()("on_attach", VE::application::get()->get_glfw()->width());
}
void test_panel::on_detach()

View File

@@ -6,7 +6,7 @@ namespace sandbox
{
class test_panel : public VE::layer
{
VE_FN_OVERIDE();
VE_FN_OVERIDE(test_panel, false);
ImVec2 m_size = ImVec2{ 600.f, 100.f };
ImVec2 m_pos = ImVec2{ 100.f, 100.f };

View File

@@ -6,7 +6,7 @@ namespace sandbox
{
class test_panel_2 : public VE::layer
{
VE_FN_OVERIDE();
VE_FN_OVERIDE(test_panel_2, true);
ImVec2 m_size = ImVec2{ 400.f, 400.f };
ImVec2 m_pos = ImVec2{ 400.f, 400.f };

View File

@@ -21,7 +21,7 @@ namespace VE
m_glfw->clear();
m_gui->begin_frame();
for (auto l : m_layers_stack) l->render();
for (auto l : m_layers_stack) if (l->m_render_permit) l->render();
m_gui->end_frame();
m_glfw->update();

View File

@@ -91,14 +91,12 @@ namespace VE
int glfw::width() const
{
auto d = static_cast<win_data*>(glfwGetWindowUserPointer(m_win));
return d->m_width;
return m_win_data.m_width;
}
int glfw::height() const
{
auto d = static_cast<win_data*>(glfwGetWindowUserPointer(m_win));
return d->m_height;
return m_win_data.m_height;
}
void glfw::update()
@@ -200,8 +198,10 @@ namespace VE
glfwSetWindowSizeCallback(m_win, [](GLFWwindow* w, int width, int height)
{
auto d = static_cast<win_data*>(glfwGetWindowUserPointer(w));
hack::log()(d->m_width);
d->m_width = width;
d->m_height = height;
hack::log()(d->m_width);
event e{ event_type::WINDOW_RESIZE, std::pair<float, float>{ static_cast<float>(width), static_cast<float>(height) } };
d->execute(e);

View File

@@ -10,7 +10,7 @@ namespace VE
using time = time::timestep<float>;
public:
layer() = default;
layer(bool p) : m_render_permit { p } {}
virtual ~layer() = default;
layer(const layer&) = delete;
@@ -24,6 +24,11 @@ namespace VE
void set_event_fn(const event_fn<event&>& fn) { execute = fn; };
public:
// Внекоторых случаях необходимо чтобы компонент был в системе сигналов, но не
// в системе отрисовки. Например при вкладках.
bool m_render_permit;
protected:
event_fn<event&> execute;
};

View File

@@ -6,7 +6,9 @@
#define VE_EVENT_FN\
std::bind(&application::on_event, this, std::placeholders::_1)
#define VE_FN_OVERIDE()\
#define VE_FN_OVERIDE(def_class_name, def_render_permit)\
public:\
def_class_name() : VE::layer { def_render_permit } {}\
public:\
void on_attach() override;\
void on_detach() override;\