Bläddra i källkod

tools-imgui: cleanup

Daniele Bartolini 7 år sedan
förälder
incheckning
21417cee9d
3 ändrade filer med 23 tillägg och 22 borttagningar
  1. 1 1
      tools-imgui/level_editor.cpp
  2. 3 1
      tools-imgui/widgets/console.h
  3. 19 20
      tools-imgui/widgets/console.inl

+ 1 - 1
tools-imgui/level_editor.cpp

@@ -932,7 +932,7 @@ struct LevelEditor
 						_console.add_log(LogSeverity::LOG_ERROR, "Unknown message type");
 					}
 
-					console_scroll_to_bottom();
+					console_scroll_to_bottom(_console);
 				}
 			}
 		}

+ 3 - 1
tools-imgui/widgets/console.h

@@ -27,6 +27,8 @@ namespace crown
 
 		bool _has_focus;
 		s32 _history_pos; // -1: new line, 0 -> (history.size - 1): navigation
+		bool _scroll_to_bottom;
+		char _input_text[1024];
 
 		///
 		Console();
@@ -45,6 +47,6 @@ namespace crown
 	void console_execute_command(Console& console, const char* command);
 
 	// Scroll the console to the latest log message
-	void console_scroll_to_bottom();
+	void console_scroll_to_bottom(Console& console);
 
 } // namespace crown

+ 19 - 20
tools-imgui/widgets/console.inl

@@ -4,9 +4,6 @@
 namespace crown
 {
 
-static bool scroll_to_bottom = false;
-static char input_text_buffer[1024] = "";
-
 Console::Console()
 	: _num_items(0)
 	, _history(default_allocator())
@@ -14,6 +11,7 @@ Console::Console()
 	, _open(true)
 	, _has_focus(false)
 	, _history_pos(-1)
+	, _scroll_to_bottom(true)
 {
 	_client.connect(IP_ADDRESS_LOOPBACK, CROWN_DEFAULT_CONSOLE_PORT);
 
@@ -40,6 +38,7 @@ void Console::add_log(LogSeverity::Enum severity, const char* message)
 {
 	_items[_num_items].severity = severity;
 	strncpy(_items[_num_items].message, message, sizeof(_items[_num_items].message)-1);
+	_items[_num_items].message[sizeof(_items[_num_items].message)-1] = '\0';
 	_num_items = (_num_items + 1) % countof(_items);
 }
 
@@ -121,42 +120,42 @@ void console_draw(Console& console)
 		ImGui::PopStyleColor();
 	}
 
-	if (scroll_to_bottom)
+	if (console._scroll_to_bottom)
 		ImGui::SetScrollHere();
 
-	scroll_to_bottom = false;
+	console._scroll_to_bottom = false;
 	ImGui::PopStyleVar();
 	ImGui::EndChild();
 	ImGui::Separator();
 
 	ImGui::PushItemWidth(-1);
 	if (ImGui::InputText("##label"
-		, input_text_buffer
-		, IM_ARRAYSIZE(input_text_buffer)
+		, console._input_text
+		, IM_ARRAYSIZE(console._input_text)
 		, ImGuiInputTextFlags_EnterReturnsTrue | ImGuiInputTextFlags_CallbackHistory
 		, console_inputtext_callback
 		, &console
 		))
 	{
-		char* input_end = input_text_buffer + strlen(input_text_buffer);
-		while (input_end > input_text_buffer && input_end[-1] == ' ')
+		char* input_end = console._input_text + strlen(console._input_text);
+		while (input_end > console._input_text && input_end[-1] == ' ')
 		{
 			input_end--;
 		}
 
 		*input_end = 0;
 
-		if (input_text_buffer[0])
+		if (console._input_text[0])
 		{
-			console.add_log(LogSeverity::LOG_INFO, input_text_buffer);
-			console_execute_command(console, input_text_buffer);
+			console.add_log(LogSeverity::LOG_INFO, console._input_text);
+			console_execute_command(console, console._input_text);
 		}
 
-		strcpy(input_text_buffer, "");
+		strcpy(console._input_text, "");
 		console._history_pos = -1;
 
 		ImGui::SetKeyboardFocusHere(-1);
-		scroll_to_bottom = true;
+		console._scroll_to_bottom = true;
 	}
 	ImGui::PopItemWidth();
 }
@@ -184,9 +183,9 @@ void console_execute_command(Console& console, const char* command)
 		int first = vector::size(history)-10;
 		for (uint32_t i = first > 0 ? first : 0; i < vector::size(history); i++)
 		{
-			char buffer[1024] = "";
-			sprintf(buffer, "%3d: %s\n", i, history[i].c_str());
-			console.add_log(LogSeverity::LOG_INFO, buffer);
+			char buf[64];
+			sprintf(buf, "%3d: %s\n", i, history[i].c_str());
+			console.add_log(LogSeverity::LOG_INFO, buf);
 		}
 	}
 	else if (strcmp(command, "help") == 0)
@@ -218,12 +217,12 @@ void console_execute_command(Console& console, const char* command)
 		client.write(cmd, size);
 	}
 
-	scroll_to_bottom = true;
+	console._scroll_to_bottom = true;
 }
 
-void console_scroll_to_bottom()
+void console_scroll_to_bottom(Console& console)
 {
-	scroll_to_bottom = true;
+	console._scroll_to_bottom = true;
 }
 
 } // namespace crown