Skip to content
This repository was archived by the owner on Mar 1, 2026. It is now read-only.

Commit 1ef1ed2

Browse files
committed
Update Value class
- Rename Value to FValue to match Unreal naming conventions. - Rename ValueType to EValueType to match Unreal naming conventions. - Utilize TVariant for core value storage in FValue. - Remove usage of std::string in FValue class. - Migrate GetXValue to templated GetValue function. - Utilize FString instead of std::string for string value in FValue class. - Add assignment operators to FValue class to simplify usage. - Create LexToString for EValueType. Remove deprecated FYarnValueHelpers.
1 parent 68e79dc commit 1ef1ed2

File tree

18 files changed

+412
-358
lines changed

18 files changed

+412
-358
lines changed

Source/YarnSpinner/Private/DialogueRunner.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,11 +109,11 @@ void ADialogueRunner::PreInitializeComponents()
109109
return YarnSubsystem()->GetYarnLibraryRegistry()->GetExpectedFunctionParamCount(FName(UTF8_TO_TCHAR(FunctionName.c_str())));
110110
};
111111

112-
VirtualMachine->CallFunction = [this](const std::string& FunctionName, const std::vector<Yarn::Value>& Parameters) -> Yarn::Value
112+
VirtualMachine->CallFunction = [this](const std::string& FunctionName, const std::vector<Yarn::FValue>& Parameters) -> Yarn::FValue
113113
{
114114
return YarnSubsystem()->GetYarnLibraryRegistry()->CallFunction(
115115
FName(UTF8_TO_TCHAR(FunctionName.c_str())),
116-
TArray<Yarn::Value>(Parameters.data(), Parameters.size())
116+
TArray<Yarn::FValue>(Parameters.data(), Parameters.size())
117117
);
118118
};
119119

@@ -336,10 +336,10 @@ bool ADialogueRunner::HasValue(std::string Name)
336336
}
337337

338338

339-
Yarn::Value ADialogueRunner::GetValue(std::string Name)
339+
Yarn::FValue ADialogueRunner::GetValue(std::string Name)
340340
{
341-
Yarn::Value Value = YarnSubsystem()->GetValue(Name);
342-
YS_LOG("Retrieving variable %s with value %s", UTF8_TO_TCHAR(Name.c_str()), UTF8_TO_TCHAR(Value.ConvertToString().c_str()))
341+
Yarn::FValue Value = YarnSubsystem()->GetValue(Name);
342+
YS_LOG("Retrieving variable %s with value %s", UTF8_TO_TCHAR(Name.c_str()), *Value.ConvertToString());
343343
return Value;
344344
}
345345

Source/YarnSpinner/Private/Library/YarnCommandLibrary.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44
#include "Library/YarnCommandLibrary.h"
55

66
#include "DialogueRunner.h"
7-
#include "AssetRegistry/ARFilter.h"
8-
#include "AssetRegistry/AssetRegistryModule.h"
97
#include "Library/YarnLibraryRegistry.h"
10-
#include "Misc/OutputDeviceNull.h"
118
#include "Misc/YSLogging.h"
129
#include "UObject/SoftObjectPtr.h"
1310

@@ -85,37 +82,39 @@ void UYarnCommandLibrary::CallCommand(FName CommandName, TSoftObjectPtr<ADialogu
8582
// DialogueRunnerProperty->SetObjectPropertyValue_InContainer(FuncParams.GetStructMemory(), DialogueRunner);
8683
// DialogueRunnerProperty->SetPropertyValue_InContainer(FuncParams.GetStructMemory(), {DialogueRunner});
8784

88-
for (auto Arg : Args)
85+
for (const FYarnBlueprintParam& Arg : Args)
8986
{
9087
// Set input properties
9188
switch (Arg.Value.GetType())
9289
{
93-
case Yarn::Value::ValueType::BOOL:
90+
case Yarn::FValue::EValueType::Bool:
9491
BoolParam = CastField<FBoolProperty>(Function->FindPropertyByName(Arg.Name));
9592
if (!BoolParam)
9693
{
9794
YS_WARN_FUNC("Could not create function parameter '%s' for command '%s' from given values", *Arg.Name.ToString(), *CommandName.ToString())
9895
return ContinueDialogue(DialogueRunner);
9996
}
100-
BoolParam->SetPropertyValue_InContainer(FuncParams.GetStructMemory(), Arg.Value.GetBooleanValue());
97+
BoolParam->SetPropertyValue_InContainer(FuncParams.GetStructMemory(), Arg.Value.GetValue<bool>());
10198
break;
102-
case Yarn::Value::ValueType::NUMBER:
99+
case Yarn::FValue::EValueType::Number:
103100
FloatParam = CastField<FFloatProperty>(Function->FindPropertyByName(Arg.Name));
104101
if (!FloatParam)
105102
{
106103
YS_WARN_FUNC("Could not create function parameter '%s' for command '%s' from given values", *Arg.Name.ToString(), *CommandName.ToString())
107104
return ContinueDialogue(DialogueRunner);
108105
}
109-
FloatParam->SetPropertyValue_InContainer(FuncParams.GetStructMemory(), Arg.Value.GetNumberValue());
106+
FloatParam->SetPropertyValue_InContainer(FuncParams.GetStructMemory(), Arg.Value.GetValue<double>());
110107
break;
111-
case Yarn::Value::ValueType::STRING:
108+
case Yarn::FValue::EValueType::String:
112109
StringParam = CastField<FStrProperty>(Function->FindPropertyByName(Arg.Name));
113110
if (!StringParam)
114111
{
115112
YS_WARN_FUNC("Could not create function parameter '%s' for command '%s' from given values", *Arg.Name.ToString(), *CommandName.ToString())
116113
return ContinueDialogue(DialogueRunner);
117114
}
118-
StringParam->SetPropertyValue_InContainer(FuncParams.GetStructMemory(), FString(Arg.Value.GetStringValue().c_str()));
115+
StringParam->SetPropertyValue_InContainer(FuncParams.GetStructMemory(), Arg.Value.GetValue<FString>());
116+
break;
117+
default:
119118
break;
120119
}
121120
}

Source/YarnSpinner/Private/Library/YarnFunctionLibrary.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ UYarnFunctionLibrary* UYarnFunctionLibrary::FromBlueprint(const UBlueprint* Blue
5656
}
5757

5858

59-
TOptional<Yarn::Value> UYarnFunctionLibrary::CallFunction(FName FunctionName, TArray<FYarnBlueprintParam> Args, TOptional<FYarnBlueprintParam> ReturnValue)
59+
TOptional<Yarn::FValue> UYarnFunctionLibrary::CallFunction(FName FunctionName, TArray<FYarnBlueprintParam> Args, TOptional<FYarnBlueprintParam> ReturnValue)
6060
{
61-
TOptional<Yarn::Value> Result;
61+
TOptional<Yarn::FValue> Result;
6262

6363
// Find the function
6464
UFunction* Function = FindFunction(FunctionName);
@@ -80,32 +80,32 @@ TOptional<Yarn::Value> UYarnFunctionLibrary::CallFunction(FName FunctionName, TA
8080
// Set input properties
8181
switch (Arg.Value.GetType())
8282
{
83-
case Yarn::Value::ValueType::BOOL:
83+
case Yarn::FValue::EValueType::Bool:
8484
BoolParam = CastField<FBoolProperty>(Function->FindPropertyByName(Arg.Name));
8585
if (!BoolParam)
8686
{
8787
YS_WARN_FUNC("Could not create function parameter '%s' for function %s from given values", *Arg.Name.ToString(), *FunctionName.ToString())
8888
return Result;
8989
}
90-
BoolParam->SetPropertyValue_InContainer(FuncParams.GetStructMemory(), Arg.Value.GetBooleanValue());
90+
BoolParam->SetPropertyValue_InContainer(FuncParams.GetStructMemory(), Arg.Value.GetValue<bool>());
9191
break;
92-
case Yarn::Value::ValueType::NUMBER:
92+
case Yarn::FValue::EValueType::Number:
9393
FloatParam = CastField<FFloatProperty>(Function->FindPropertyByName(Arg.Name));
9494
if (!FloatParam)
9595
{
9696
YS_WARN_FUNC("Could not create function parameter '%s' for function %s from given values", *Arg.Name.ToString(), *FunctionName.ToString())
9797
return Result;
9898
}
99-
FloatParam->SetPropertyValue_InContainer(FuncParams.GetStructMemory(), Arg.Value.GetNumberValue());
99+
FloatParam->SetPropertyValue_InContainer(FuncParams.GetStructMemory(), Arg.Value.GetValue<double>());
100100
break;
101-
case Yarn::Value::ValueType::STRING:
101+
case Yarn::FValue::EValueType::String:
102102
StringParam = CastField<FStrProperty>(Function->FindPropertyByName(Arg.Name));
103103
if (!StringParam)
104104
{
105105
YS_WARN_FUNC("Could not create function parameter '%s' for function %s from given values", *Arg.Name.ToString(), *FunctionName.ToString())
106106
return Result;
107107
}
108-
StringParam->SetPropertyValue_InContainer(FuncParams.GetStructMemory(), FString(Arg.Value.GetStringValue().c_str()));
108+
StringParam->SetPropertyValue_InContainer(FuncParams.GetStructMemory(), Arg.Value.GetValue<FString>());
109109
break;
110110
}
111111
}
@@ -118,32 +118,32 @@ TOptional<Yarn::Value> UYarnFunctionLibrary::CallFunction(FName FunctionName, TA
118118
{
119119
switch (ReturnValue->Value.GetType())
120120
{
121-
case Yarn::Value::ValueType::BOOL:
121+
case Yarn::FValue::EValueType::Bool:
122122
BoolParam = CastField<FBoolProperty>(Function->FindPropertyByName(ReturnValue->Name));
123123
if (!BoolParam)
124124
{
125125
YS_WARN_FUNC("Could not get return parameter '%s' for function '%s'", *ReturnValue->Name.ToString(), *FunctionName.ToString())
126126
return Result;
127127
}
128-
Result = Yarn::Value(BoolParam->GetPropertyValue_InContainer(FuncParams.GetStructMemory()));
128+
Result = Yarn::FValue(BoolParam->GetPropertyValue_InContainer(FuncParams.GetStructMemory()));
129129
break;
130-
case Yarn::Value::ValueType::NUMBER:
130+
case Yarn::FValue::EValueType::Number:
131131
FloatParam = CastField<FFloatProperty>(Function->FindPropertyByName(ReturnValue->Name));
132132
if (!FloatParam)
133133
{
134134
YS_WARN_FUNC("Could not get return parameter '%s' for function '%s'", *ReturnValue->Name.ToString(), *FunctionName.ToString())
135135
return Result;
136136
}
137-
Result = Yarn::Value(FloatParam->GetPropertyValue_InContainer(FuncParams.GetStructMemory()));
137+
Result = Yarn::FValue(FloatParam->GetPropertyValue_InContainer(FuncParams.GetStructMemory()));
138138
break;
139-
case Yarn::Value::ValueType::STRING:
139+
case Yarn::FValue::EValueType::String:
140140
StringParam = CastField<FStrProperty>(Function->FindPropertyByName(ReturnValue->Name));
141141
if (!StringParam)
142142
{
143143
YS_WARN_FUNC("Could not get return parameter '%s' for function '%s'", *ReturnValue->Name.ToString(), *FunctionName.ToString())
144144
return Result;
145145
}
146-
Result = Yarn::Value(TCHAR_TO_UTF8(*StringParam->GetPropertyValue_InContainer(FuncParams.GetStructMemory())));
146+
Result = Yarn::FValue(TCHAR_TO_UTF8(*StringParam->GetPropertyValue_InContainer(FuncParams.GetStructMemory())));
147147
break;
148148
}
149149
}

0 commit comments

Comments
 (0)