#pragma once #include #include #include #include #include #include #include #include namespace PalUIExtension::Helpers { using namespace RC; using namespace RC::Unreal; class FTextFromString { public: explicit FTextFromString(const TCHAR* Str) { static Reflection::UnrealObjectRef KismetTextCDO{ STR("/Script/Engine.Default__KismetTextLibrary"), STR("KismetText") }; static Reflection::UnrealApiCall Api{ STR("/Script/Engine.KismetTextLibrary"), STR("KismetText") }; UObject* CDO = KismetTextCDO.Get(); if (!CDO) return; m_params.InString = FString(Str); m_ok = Api.Invoke(CDO, STR("Conv_StringToText"), m_params); } auto IsValid() const -> bool { return m_ok; } auto Get() -> FText& { return m_params.ReturnValue; } private: // Value-initialized deliberately -- see caveat 1. struct Params { FString InString; FText ReturnValue; }; Params m_params{}; bool m_ok = false; }; }