48 lines
1.3 KiB
C++
48 lines
1.3 KiB
C++
|
|
#pragma once
|
||
|
|
|
||
|
|
#include <optional>
|
||
|
|
#include <type_traits>
|
||
|
|
|
||
|
|
#include <DynamicOutput/DynamicOutput.hpp>
|
||
|
|
|
||
|
|
#include <Unreal/UObjectGlobals.hpp>
|
||
|
|
#include <Unreal/UObject.hpp>
|
||
|
|
#include <Unreal/UClass.hpp>
|
||
|
|
|
||
|
|
#include <Reflection/UnrealObjectRef.hpp>
|
||
|
|
#include <Reflection/UnrealApiCall.hpp>
|
||
|
|
|
||
|
|
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<struct Tag_KismetText, FText> 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;
|
||
|
|
};
|
||
|
|
|
||
|
|
}
|