diff --git a/engine/core/src/debug.cpp b/engine/core/src/debug.cpp index 276557d..46bfe98 100644 --- a/engine/core/src/debug.cpp +++ b/engine/core/src/debug.cpp @@ -248,18 +248,34 @@ std::string_view get_shader_source_directory() { } void draw_console() { + const auto font_size = ImGui::GetFontSize(); + const auto frame_size = ImGui::GetStyle().FrameBorderSize; + const auto padding = ImGui::GetStyle().FramePadding; + const auto inner_padding = ImGui::GetStyle().ItemInnerSpacing; + const auto text_edit_height = font_size + (frame_size + padding.y + inner_padding.y) * 2; + + const auto content_size = ImGui::GetContentRegionAvail(); + + ImGui::BeginChild("console", ImVec2(-1, content_size.y - text_edit_height), true); + ImGui::Text("%s", prism::log_output.c_str()); + ImGui::EndChild(); + static std::string console_input; ImGui::SetNextItemWidth(-1.0f); + ImGui::PushItemWidth(-60.0f); // todo: lol + const bool input_return = ImGui::InputText("##console_input", &console_input, ImGuiInputTextFlags_EnterReturnsTrue); if(input_return) ImGui::SetKeyboardFocusHere(-1); - const bool button_return = ImGui::Button("Input"); + ImGui::SameLine(); + + const bool button_return = ImGui::Button("Submit"); if(input_return || button_return) { prism::console::parse_and_invoke_command(console_input); diff --git a/tools/common/src/commoneditor.cpp b/tools/common/src/commoneditor.cpp index 8e74c2a..c727df2 100755 --- a/tools/common/src/commoneditor.cpp +++ b/tools/common/src/commoneditor.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include "engine.hpp" #include "file.hpp" @@ -1010,24 +1011,7 @@ GFXTexture* CommonEditor::generate_common_preview(Scene& scene, const prism::flo } void CommonEditor::drawConsole() { - static std::string command_buffer; - ImGui::InputText("Command", &command_buffer); - - ImGui::SameLine(); - - if(ImGui::Button("Run")) { - prism::console::parse_and_invoke_command(command_buffer); - command_buffer.clear(); - } - - ImGui::BeginChild("console_output", ImVec2(-1, -1), true); - - // TODO: implement for new log system - //for(const auto& message : prism::log::stored_output) - // ImGui::TextWrapped("%s", message.c_str()); - ImGui::Text("unimplemented :-("); - - ImGui::EndChild(); + draw_console(); } void CommonEditor::load_options() {