Bladeren bron

add show and hide methods in Gui

mikymod 12 jaren geleden
bovenliggende
commit
6e7828ed46
3 gewijzigde bestanden met toevoegingen van 60 en 14 verwijderingen
  1. 17 2
      engine/gui/Gui.cpp
  2. 5 0
      engine/gui/Gui.h
  3. 38 12
      engine/lua/LuaGui.cpp

+ 17 - 2
engine/gui/Gui.cpp

@@ -130,7 +130,8 @@ Gui::Gui(RenderWorld& render_world, GuiResource* gr, Renderer& r)
 	: m_render_world(render_world)
 	, m_resource(gr)
 	, m_r(r)
-	, m_resolution(1000, 625) // hardcoded -> must be == Application::resolution()
+	, m_resolution(1000, 625)
+	, m_visible(true)
 	, m_rect_pool(default_allocator(), MAX_GUI_RECTS, sizeof(GuiRect), CE_ALIGNOF(GuiRect))
 	, m_triangle_pool(default_allocator(), MAX_GUI_TRIANGLES, sizeof(GuiTriangle), CE_ALIGNOF(GuiTriangle))
 	, m_image_pool(default_allocator(), MAX_GUI_IMAGES, sizeof(GuiImage), CE_ALIGNOF(GuiImage))
@@ -210,7 +211,7 @@ Gui::~Gui()
 //-----------------------------------------------------------------------------
 Vector2 Gui::resolution() const
 {
-	return Vector2(1000, 625);
+	return m_resolution;
 }
 
 //-----------------------------------------------------------------------------
@@ -220,6 +221,18 @@ void Gui::move(const Vector3& pos)
 	m_pose.set_translation(pos);
 }
 
+//-----------------------------------------------------------------------------
+void Gui::show()
+{
+	m_visible = true;
+}
+
+//-----------------------------------------------------------------------------
+void Gui::hide()
+{
+	m_visible = false;
+}
+
 //-----------------------------------------------------------------------------
 GuiRectId Gui::create_rect(const Vector3& pos, const Vector2& size, const Color4& color)
 {
@@ -338,6 +351,8 @@ void Gui::render()
 	m_r.set_layer_projection(1, m_projection);
 	m_r.set_layer_viewport(1, m_pose.translation().x, m_pose.translation().y, m_resolution.x, m_resolution.y);
 
+	if (!m_visible) return;
+
 	// Render all Rects
 	for (uint32_t i = 0; i < m_rects.size(); i++)
 	{

+ 5 - 0
engine/gui/Gui.h

@@ -67,6 +67,9 @@ struct Gui
 	Vector2				resolution() const;
 	void				move(const Vector3& pos);
 
+	void				show();
+	void				hide();
+
 	GuiRectId			create_rect(const Vector3& pos, const Vector2& size, const Color4& color);
 	void				update_rect(GuiRectId id, const Vector3& pos, const Vector2& size, const Color4& color);
 	void				destroy_rect(GuiRectId id);
@@ -101,6 +104,8 @@ public:
 	Matrix4x4			m_pose;
 	Vector2				m_resolution;
 
+	bool				m_visible;
+
 	PoolAllocator		m_rect_pool;
 	PoolAllocator		m_triangle_pool;
 	PoolAllocator		m_image_pool;

+ 38 - 12
engine/lua/LuaGui.cpp

@@ -65,7 +65,31 @@ CE_EXPORT int gui_move(lua_State* L)
 	return 0;
 }
 
-//-------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+CE_EXPORT int gui_show(lua_State* L)
+{
+	LuaStack stack(L);
+
+	Gui* gui = stack.get_gui(1);
+
+	gui->show();
+
+	return 0;
+}
+
+//-----------------------------------------------------------------------------
+CE_EXPORT int gui_hide(lua_State* L)
+{
+	LuaStack stack(L);
+
+	Gui* gui = stack.get_gui(1);
+
+	gui->hide();
+
+	return 0;
+}
+
+//-----------------------------------------------------------------------------
 CE_EXPORT int gui_create_rect(lua_State* L)
 {
 	LuaStack stack(L);
@@ -82,7 +106,7 @@ CE_EXPORT int gui_create_rect(lua_State* L)
 	return 1;
 }
 
-//-------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 CE_EXPORT int gui_update_rect(lua_State* L)
 {
 	LuaStack stack(L);
@@ -99,7 +123,7 @@ CE_EXPORT int gui_update_rect(lua_State* L)
 	return 0;
 }
 
-//-------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 CE_EXPORT int gui_destroy_rect(lua_State* L)
 {
 	LuaStack stack(L);
@@ -112,7 +136,7 @@ CE_EXPORT int gui_destroy_rect(lua_State* L)
 	return 0;
 }
 
-//-------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 CE_EXPORT int gui_create_triangle(lua_State* L)
 {
 	LuaStack stack(L);
@@ -131,7 +155,7 @@ CE_EXPORT int gui_create_triangle(lua_State* L)
 	return 1;
 }
 
-//-------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 CE_EXPORT int gui_update_triangle(lua_State* L)
 {
 	LuaStack stack(L);
@@ -149,7 +173,7 @@ CE_EXPORT int gui_update_triangle(lua_State* L)
 	return 0;
 }
 
-//-------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 CE_EXPORT int gui_destroy_triangle(lua_State* L)
 {
 	LuaStack stack(L);
@@ -162,7 +186,7 @@ CE_EXPORT int gui_destroy_triangle(lua_State* L)
 	return 0;
 }
 
-//-------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 CE_EXPORT int gui_create_image(lua_State* L)
 {
 	LuaStack stack(L);
@@ -182,7 +206,7 @@ CE_EXPORT int gui_create_image(lua_State* L)
 	return 1;
 }
 
-//-------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 CE_EXPORT int gui_update_image(lua_State* L)
 {
 	LuaStack stack(L);
@@ -197,7 +221,7 @@ CE_EXPORT int gui_update_image(lua_State* L)
 	return 0;
 }
 
-//-------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 CE_EXPORT int gui_destroy_image(lua_State* L)
 {
 	LuaStack stack(L);
@@ -210,7 +234,7 @@ CE_EXPORT int gui_destroy_image(lua_State* L)
 	return 0;
 }
 
-//-------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 CE_EXPORT int gui_create_text(lua_State* L)
 {
 	LuaStack stack(L);
@@ -230,7 +254,7 @@ CE_EXPORT int gui_create_text(lua_State* L)
 	return 1;
 }
 
-//-------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 CE_EXPORT int gui_update_text(lua_State* L)
 {
 	LuaStack stack(L);
@@ -246,7 +270,7 @@ CE_EXPORT int gui_update_text(lua_State* L)
 	return 0;
 }
 
-//-------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 CE_EXPORT int gui_destroy_text(lua_State* L)
 {
 	LuaStack stack(L);
@@ -264,6 +288,8 @@ void load_gui(LuaEnvironment& env)
 {
 	env.load_module_function("Gui", "resolution",		gui_resolution);
 	env.load_module_function("Gui", "move",				gui_move);
+	env.load_module_function("Gui", "show",				gui_show);
+	env.load_module_function("Gui", "hide",				gui_hide);
 	env.load_module_function("Gui", "create_rect",		gui_create_rect);
 	env.load_module_function("Gui", "update_rect",		gui_update_rect);
 	env.load_module_function("Gui", "destroy_rect",		gui_destroy_rect);