diff --git a/framework/engine/src/mm/services/net_channeled_interface.hpp b/framework/engine/src/mm/services/net_channeled_interface.hpp index e0ccc20..67b4afe 100644 --- a/framework/engine/src/mm/services/net_channeled_interface.hpp +++ b/framework/engine/src/mm/services/net_channeled_interface.hpp @@ -28,6 +28,7 @@ namespace MM::Services { // returns wether the channel type is supported virtual bool getSupportedChannelType(channel_type type) = 0; + // in the best case, this performs a propper MTU estimation (lol) virtual size_t getMaxPacketSize(void) = 0; // TODO: add set channel type utils diff --git a/framework/imgui/src/mm/services/engine_tools.cpp b/framework/imgui/src/mm/services/engine_tools.cpp index 9e9574f..3d8a506 100644 --- a/framework/imgui/src/mm/services/engine_tools.cpp +++ b/framework/imgui/src/mm/services/engine_tools.cpp @@ -75,10 +75,46 @@ namespace MM::Services { void ImGuiEngineTools::renderServices(Engine& engine) { if (ImGui::Begin("Services##EngineTools", &_show_services)) { - ImGui::Text("TODO: use new table api"); + ImGui::Text("TODO: make sortable"); + ImGui::Checkbox("edit mode", &_services_edit_mode); - for (auto& it : engine._services) { - ImGui::Text("[%d|%s]: %s", it.first, it.second->second->name(), it.second->first ? "enabled" : "disabled"); + if (ImGui::BeginTable( + "services_table", + 3, + ImGuiTableFlags_RowBg //| + )) { + ImGui::TableSetupColumn("id", ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("name"); + ImGui::TableSetupColumn("status"); + ImGui::TableHeadersRow(); + + for (auto& it : engine._services) { + ImGui::TableNextRow(); + + ImGui::TableNextColumn(); + ImGui::Text("%d", it.first); + + ImGui::TableNextColumn(); + ImGui::Text("%s", it.second->second->name()); + + ImGui::TableNextColumn(); + if (_services_edit_mode) { + ImGui::PushID(it.first); + if (ImGui::SmallButton(it.second->first ? "enabled" : "disabled")) { + if (it.second->first) { + engine.disableService(it.first); + } else { + engine.enableService(it.first); + } + } + //ImGui::SetTooltip("click to toggle!"); the heck? + ImGui::PopID(); + } else { + ImGui::Text("%s", it.second->first ? "enabled" : "disabled"); + } + } + + ImGui::EndTable(); } } ImGui::End(); diff --git a/framework/imgui/src/mm/services/engine_tools.hpp b/framework/imgui/src/mm/services/engine_tools.hpp index be36533..a2fa4f8 100644 --- a/framework/imgui/src/mm/services/engine_tools.hpp +++ b/framework/imgui/src/mm/services/engine_tools.hpp @@ -17,6 +17,8 @@ namespace MM::Services { bool _show_about = false; bool _show_services = false; + bool _services_edit_mode = false; + private: void renderImGui(Engine& engine);