////////////////////////////////////////////////////////////// // // ConsoleOutput // // This class can optionally be used by the GameMode // blueprint to help implement the console window. There is // no requirement that the blueprint use this class, it can // implement the console window any way it wants, this is // just here in case it is desired. // // This class stores the text that's in the unreal console. // It stores it as one great big string, which contains // newlines to denote line breaks. // // This class also contains a 'dirty' bit. Each time // somebody appends a line of text to the console, the dirty // bit is automatically set. The bit can be checked using // 'IsDirty' and cleared using 'ClearDirty'. This makes it // so that you don't have to update the unreal widget unless // the text has actually changed. // ////////////////////////////////////////////////////////////// #pragma once #include "Containers/UnrealString.h" #include "ConsoleOutput.generated.h" UCLASS(BlueprintType) class UlxConsoleOutput : public UObject { GENERATED_BODY() private: FString Content; bool Dirty; private: // Truncate the console to a reasonable number of // lines. The length is hardwired. void Truncate(); // Add a newline if there isn't one. Returns true if it changed anything. bool MaybeAppendNewline(); // Append text. Returns true if it changed anything. bool MaybeAppendText(const FString& text); public: // Append a line of text to the console. UFUNCTION(BlueprintCallable) void Append(const FString& text); // Append a line of text to the console on a line by itself. UFUNCTION(BlueprintCallable) void AppendLine(const FString& text); // Get the console text as a string. UFUNCTION(BlueprintCallable) const FString& Get() const { return Content; } // Return if the dirty flag is set. UFUNCTION(BlueprintCallable) bool IsDirty() const { return Dirty; } // Clear the dirty flag. UFUNCTION(BlueprintCallable) void ClearDirty() { Dirty = false; } };