| @@ -18,6 +18,28 @@ | |||||
| using namespace lol; | using namespace lol; | ||||
| //Imgui extension --------------------------------------------------------------------------------- | |||||
| namespace ImGui | |||||
| { | |||||
| IMGUI_API void SetNextWindowSizeAndDock(const ImVec2& size, ImGuiSetDock dock, ImGuiSetCond cond) | |||||
| { | |||||
| vec2 video_size = vec2(Video::GetSize()); | |||||
| ImVec2 pos = ImVec2(); | |||||
| switch (dock) | |||||
| { | |||||
| case ImGuiSetDock_TopLeft: pos = ImVec2(0, 0); break; | |||||
| case ImGuiSetDock_TopRight: pos = ImVec2(video_size.x - size.x, 0); break; | |||||
| case ImGuiSetDock_BottomLeft: pos = ImVec2(0, video_size.y - size.y); break; | |||||
| case ImGuiSetDock_BottomRight: pos = ImVec2(video_size.x - size.x, video_size.y - size.y); break; | |||||
| } | |||||
| ImGui::SetNextWindowPos(pos, cond); | |||||
| ImGui::SetNextWindowSize(size, cond); | |||||
| } | |||||
| } | |||||
| //LolImGui ---------------------------------------------------------------------------------------- | |||||
| #define Line(s) ((s) + "\n") | #define Line(s) ((s) + "\n") | ||||
| //----------------------------------------------------------------------------- | //----------------------------------------------------------------------------- | ||||
| @@ -14,10 +14,26 @@ | |||||
| #include "imgui.h" | #include "imgui.h" | ||||
| //Imgui extension --------------------------------------------------------------------------------- | |||||
| typedef int ImGuiSetDock; // condition flags for Set*() // enum ImGuiSetCond_ | |||||
| enum ImGuiSetDock_ | |||||
| { | |||||
| ImGuiSetDock_TopLeft = 0, | |||||
| ImGuiSetDock_TopRight = 1, | |||||
| ImGuiSetDock_BottomLeft = 2, | |||||
| ImGuiSetDock_BottomRight = 3, | |||||
| }; | |||||
| namespace ImGui | |||||
| { | |||||
| IMGUI_API void SetNextWindowSizeAndDock(const ImVec2& size, ImGuiSetDock dock, ImGuiSetCond cond = 0); | |||||
| } | |||||
| //LolImGui ---------------------------------------------------------------------------------------- | |||||
| namespace lol | namespace lol | ||||
| { | { | ||||
| //LolImGui -------------------------------------------------------------------- | |||||
| class LolImGui : public Entity | class LolImGui : public Entity | ||||
| { | { | ||||
| typedef Entity super; | typedef Entity super; | ||||
| @@ -723,7 +723,7 @@ void Scene::render_tiles() // XXX: rename to Blit() | |||||
| if (!data->m_tile_api.m_shader) | if (!data->m_tile_api.m_shader) | ||||
| data->m_tile_api.m_shader = Shader::Create(LOLFX_RESOURCE_NAME(gpu_tile)); | data->m_tile_api.m_shader = Shader::Create(LOLFX_RESOURCE_NAME(gpu_tile)); | ||||
| if (!data->m_tile_api.m_palette_shader) | |||||
| if (!data->m_tile_api.m_palette_shader && data->m_tile_api.m_palettes.count()) | |||||
| data->m_tile_api.m_palette_shader = Shader::Create(LOLFX_RESOURCE_NAME(gpu_palette)); | data->m_tile_api.m_palette_shader = Shader::Create(LOLFX_RESOURCE_NAME(gpu_palette)); | ||||
| for (int p = 0; p < 2; p++) | for (int p = 0; p < 2; p++) | ||||
| @@ -749,7 +749,7 @@ void Scene::render_tiles() // XXX: rename to Blit() | |||||
| shader->SetUniform(uni_mat, mat4(1.f)); | shader->SetUniform(uni_mat, mat4(1.f)); | ||||
| uni_tex = shader->GetUniformLocation("u_texture"); | uni_tex = shader->GetUniformLocation("u_texture"); | ||||
| uni_pal = data->m_tile_api.m_palette_shader->GetUniformLocation("u_palette"); | |||||
| uni_pal = data->m_tile_api.m_palette_shader ? data->m_tile_api.m_palette_shader->GetUniformLocation("u_palette") : ShaderUniform(); | |||||
| uni_texsize = shader->GetUniformLocation("u_texsize"); | uni_texsize = shader->GetUniformLocation("u_texsize"); | ||||
| for (int buf = 0, i = 0, n; i < tiles.count(); i = n, buf += 2) | for (int buf = 0, i = 0, n; i < tiles.count(); i = n, buf += 2) | ||||
| @@ -809,6 +809,9 @@ void Scene::render_tiles() // XXX: rename to Blit() | |||||
| tiles.empty(); | tiles.empty(); | ||||
| shader->Unbind(); | shader->Unbind(); | ||||
| if (!data->m_tile_api.m_palette_shader) | |||||
| break; | |||||
| } | } | ||||
| #if (defined LOL_USE_GLEW || defined HAVE_GL_2X) && !defined HAVE_GLES_2X | #if (defined LOL_USE_GLEW || defined HAVE_GL_2X) && !defined HAVE_GLES_2X | ||||