Skip to content

Commit fa5da4e

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents 545d419 + 53c9d3a commit fa5da4e

9 files changed

Lines changed: 30 additions & 30 deletions

File tree

Plugins/UnrealInk/Source/Ink/Private/Ink.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ static MonoAssembly* assembly_preload_hook(MonoAssemblyName *aname, char **assem
5959
// Run mono_assmebly_open
6060
// Return success
6161
MonoImageOpenStatus status;
62-
MonoAssembly *loaded_asm = mono_assembly_open(TCHAR_TO_ANSI(*AbsoluteAssemblyPath), &status);
62+
MonoAssembly *loaded_asm = mono_assembly_open(TCHAR_TO_UTF8(*AbsoluteAssemblyPath), &status);
6363
if (loaded_asm)
6464
{
6565
UE_LOG(LogInk, Log, TEXT("Loaded assembly from path '%s'."), *AbsoluteAssemblyPath);
@@ -117,21 +117,21 @@ void FInkModule::StartupModule()
117117
mono_install_assembly_preload_hook(assembly_preload_hook, NULL);
118118

119119
//Init mono into the main domain
120-
MainDomain = mono_jit_init(TCHAR_TO_ANSI(FApp::GetProjectName()));
120+
MainDomain = mono_jit_init(TCHAR_TO_UTF8(FApp::GetProjectName()));
121121
if (!MainDomain)
122122
{
123123
UE_LOG(LogInk, Fatal, TEXT("Initializing Mono for Ink plugin failed"));
124124
}
125125

126126
// Load Ink Runtime assembly
127127
MonoAssembly *assembly;
128-
const char* assemblyPath = TCHAR_TO_ANSI(*FString(BaseDir + "/ThirdParty/Ink/InkGlue.dll"));
128+
const char* assemblyPath = TCHAR_TO_UTF8(*FString(BaseDir + "/ThirdParty/Ink/InkGlue.dll"));
129129

130130
if(!FPaths::FileExists(FString(assemblyPath)))
131-
assemblyPath = TCHAR_TO_ANSI(*FString(FString(FPlatformProcess::BaseDir()) + "/Ink/InkGlue.dll"));
131+
assemblyPath = TCHAR_TO_UTF8(*FString(FString(FPlatformProcess::BaseDir()) + "/Ink/InkGlue.dll"));
132132

133133
if (!FPaths::FileExists(FString(assemblyPath)))
134-
assemblyPath = TCHAR_TO_ANSI(*FString(FString(FPlatformProcess::BaseDir()) + "/InkGlue.dll"));
134+
assemblyPath = TCHAR_TO_UTF8(*FString(FString(FPlatformProcess::BaseDir()) + "/InkGlue.dll"));
135135

136136
assembly = mono_domain_assembly_open(MainDomain, assemblyPath);
137137
if (!assembly)

Plugins/UnrealInk/Source/Ink/Private/InkCompiler.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ UInkCompiler* UInkCompiler::NewInkCompiler(FString inkFileContents, FString inkF
1818
{
1919
UInkCompiler* NewCompiler = NewObject<UInkCompiler>();
2020

21-
MonoString* monoInkFileContents = mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*(inkFileContents)));
22-
MonoString* monoInkFileName = mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*(inkFileName)));
21+
MonoString* monoInkFileContents = mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*(inkFileContents)));
22+
MonoString* monoInkFileName = mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*(inkFileName)));
2323
void* args[2];
2424
args[0] = monoInkFileContents;
2525
args[1] = monoInkFileName;

Plugins/UnrealInk/Source/Ink/Private/MonoBaseClass.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ void UMonoBaseClass::MonoNew(void** params, int nParams)
2020
{
2121
FInkModule& Ink = FModuleManager::GetModuleChecked<FInkModule>("Ink");
2222
FString GlueClassName = FString("Glue") + GetClass()->GetName();
23-
Class = mono_class_from_name(Ink.GetInkAssemblyImage(), "InkGlue", TCHAR_TO_ANSI(*GlueClassName));
23+
Class = mono_class_from_name(Ink.GetInkAssemblyImage(), "InkGlue", TCHAR_TO_UTF8(*GlueClassName));
2424

2525
//Create a instance of the class
2626
Instance = mono_object_new(Ink.GetMonoDomain(), Class);
@@ -39,7 +39,7 @@ void UMonoBaseClass::NewFromInstance(MonoObject* MonoInstance)
3939
{
4040
FInkModule& Ink = FModuleManager::GetModuleChecked<FInkModule>("Ink");
4141
FString GlueClassName = FString("Glue") + GetClass()->GetName();
42-
Class = mono_class_from_name(Ink.GetInkAssemblyImage(), "InkGlue", TCHAR_TO_ANSI(*GlueClassName));
42+
Class = mono_class_from_name(Ink.GetInkAssemblyImage(), "InkGlue", TCHAR_TO_UTF8(*GlueClassName));
4343
Instance = MonoInstance;
4444

4545
FindMethods();
@@ -56,7 +56,7 @@ void UMonoBaseClass::FindMethods()
5656
if (FunctionIt->GetReturnProperty())
5757
numParams--;
5858

59-
MonoMethod* Method = mono_class_get_method_from_name(Class, TCHAR_TO_ANSI(*MethodName), numParams);
59+
MonoMethod* Method = mono_class_get_method_from_name(Class, TCHAR_TO_UTF8(*MethodName), numParams);
6060

6161
if (Method)
6262
Methods.Add(MethodName, Method);
@@ -65,7 +65,7 @@ void UMonoBaseClass::FindMethods()
6565

6666
void UMonoBaseClass::ManualMethodBind(FString MethodName, int numParams)
6767
{
68-
MonoMethod* Method = mono_class_get_method_from_name(Class, TCHAR_TO_ANSI(*MethodName), numParams);
68+
MonoMethod* Method = mono_class_get_method_from_name(Class, TCHAR_TO_UTF8(*MethodName), numParams);
6969
if (Method)
7070
Methods.Add(MethodName, Method);
7171
}

Plugins/UnrealInk/Source/Ink/Private/MonoBaseClass.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ class INK_API UMonoBaseClass : public UObject
8888
MonoString* ret = (MonoString*)mono_runtime_invoke(Methods[MethodName], Instance, params, &Exception);
8989
Ink.MaybeThrowMonoException(Exception);
9090

91-
return FString(mono_string_to_utf8(ret));
91+
return FString(mono_string_to_utf16(ret));
9292
}
9393

9494

Plugins/UnrealInk/Source/Ink/Private/Story.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ UStory* UStory::NewStory(UStoryAsset* StoryAsset)
9292

9393
NewStory->InstanceId = InstanceCounter++;
9494

95-
MonoString* JsonString = mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*(StoryAsset->CompiledStory)));
95+
MonoString* JsonString = mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*(StoryAsset->CompiledStory)));
9696
void* Args[2];
9797
Args[0] = JsonString;
9898
Args[1] = &(NewStory->InstanceId);
@@ -264,7 +264,7 @@ TArray<FString> UStory::TagsForContentAtPath(FString Path)
264264
{
265265
TArray<FString> ReturnTags;
266266

267-
MonoString* MonoPath = mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*Path));
267+
MonoString* MonoPath = mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*Path));
268268
void* Args[1];
269269
Args[0] = MonoPath;
270270
MonoArray* MonoTags = MonoInvoke<MonoArray*>("TagsForContentAtPath", Args);
@@ -313,7 +313,7 @@ void UStory::ChoosePathString(FString Path, bool ResetCallstack, TArray<FInkVar>
313313
BoxedParam = mono_value_box(mono_domain_get(), mono_get_int32_class(), &Var.intVar);
314314
break;
315315
case EInkVarType::String:
316-
BoxedParam = (MonoObject*)mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*Var.stringVar));
316+
BoxedParam = (MonoObject*)mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*Var.stringVar));
317317
//BoxedParam = mono_value_box(mono_domain_get(), mono_get_string_class(), monoString);
318318
break;
319319
}
@@ -322,7 +322,7 @@ void UStory::ChoosePathString(FString Path, bool ResetCallstack, TArray<FInkVar>
322322
}
323323

324324
void* Params[3];
325-
Params[0] = mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*Path));
325+
Params[0] = mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*Path));
326326
Params[1] = ArgsArray;
327327
Params[2] = &ResetCallstack;
328328

@@ -353,7 +353,7 @@ void UStory::ObserveVariable(FString VariableName, const FVariableObserver & Obs
353353
VarObserverMap.Add(Key, Observers);
354354

355355
void* Params[1];
356-
Params[0] = mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*VariableName));
356+
Params[0] = mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*VariableName));
357357
MonoInvoke<void>("ObserveVariable", Params);
358358
}
359359
}
@@ -417,7 +417,7 @@ void UStory::RemoveVariableObserver(const FVariableObserver& Observer, FString S
417417
bool UStory::HasFunction(FString FunctionName)
418418
{
419419
void* Args[1];
420-
Args[0] = mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*FunctionName));;
420+
Args[0] = mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*FunctionName));;
421421
return MonoInvoke<bool>("HasFunction", Args);
422422
}
423423

@@ -447,7 +447,7 @@ FInkVar UStory::EvaluateFunctionOutString(FString FunctionName, FString& OutStri
447447
BoxedParam = mono_value_box(mono_domain_get(), mono_get_int32_class(), &Argument.intVar);
448448
break;
449449
case EInkVarType::String:
450-
BoxedParam = (MonoObject*)mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*Argument.stringVar));
450+
BoxedParam = (MonoObject*)mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*Argument.stringVar));
451451
break;
452452
}
453453
mono_array_set(ArgsArray, MonoObject*, i, BoxedParam);
@@ -456,7 +456,7 @@ FInkVar UStory::EvaluateFunctionOutString(FString FunctionName, FString& OutStri
456456
MonoString* OutTextString = mono_string_new(mono_domain_get(), "");
457457

458458
void* Params[3];
459-
Params[0] = mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*FunctionName));
459+
Params[0] = mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*FunctionName));
460460
Params[1] = &OutTextString;
461461
Params[2] = ArgsArray;
462462

@@ -479,7 +479,7 @@ FInkVar UStory::EvaluateFunctionOutString(FString FunctionName, FString& OutStri
479479
void UStory::RegisterExternalFunction(FString FunctionName, const FExternalFunctionHandler& function)
480480
{
481481
// Create Mono string
482-
MonoString* MonoName = mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*FunctionName));
482+
MonoString* MonoName = mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*FunctionName));
483483
void* Args[1];
484484
Args[0] = MonoName;
485485

Plugins/UnrealInk/Source/Ink/Private/StoryState.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ FString UStoryState::ToJson()
3636
////////////////////////////////////////////////////////
3737
void UStoryState::LoadJson(FString Json)
3838
{
39-
MonoString* MonoJson = mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*Json));
39+
MonoString* MonoJson = mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*Json));
4040
void* args[1];
4141
args[0] = MonoJson;
4242

@@ -46,7 +46,7 @@ void UStoryState::LoadJson(FString Json)
4646
////////////////////////////////////////////////////////
4747
int UStoryState::VisitCountAtPathString(FString PathString)
4848
{
49-
MonoString* MonoPath = mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*PathString));
49+
MonoString* MonoPath = mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*PathString));
5050
void* args[1];
5151
args[0] = MonoPath;
5252

Plugins/UnrealInk/Source/Ink/Private/VariableState.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ FInkVar UVariablesState::GetVariable(const FString& variableName)
3131
{
3232
// Single parameter: variable name
3333
void* params[1];
34-
params[0] = mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*variableName));
34+
params[0] = mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*variableName));
3535

3636
// Get result as a mono object
3737
MonoObject* result = MonoInvoke<MonoObject*>("GetVariable", params);
@@ -51,7 +51,7 @@ FInkVar UVariablesState::GetVariable(const FString& variableName)
5151
void UVariablesState::SetVariableFloat(const FString& variableName, float value)
5252
{
5353
void* params[2];
54-
params[0] = mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*variableName));
54+
params[0] = mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*variableName));
5555
params[1] = mono_value_box(mono_domain_get(), mono_get_single_class(), &value);
5656

5757
MonoInvoke<void>("SetVariable", params);
@@ -60,7 +60,7 @@ void UVariablesState::SetVariableFloat(const FString& variableName, float value)
6060
void UVariablesState::SetVariableInt(const FString& variableName, int value)
6161
{
6262
void* params[2];
63-
params[0] = mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*variableName));
63+
params[0] = mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*variableName));
6464
params[1] = mono_value_box(mono_domain_get(), mono_get_int32_class(), &value);
6565

6666
MonoInvoke<void>("SetVariable", params);
@@ -69,8 +69,8 @@ void UVariablesState::SetVariableInt(const FString& variableName, int value)
6969
void UVariablesState::SetVariableString(const FString& variableName, const FString& value)
7070
{
7171
void* params[2];
72-
params[0] = mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*variableName));
73-
params[1] = mono_string_new(mono_domain_get(), TCHAR_TO_ANSI(*value));
72+
params[0] = mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*variableName));
73+
params[1] = mono_string_new(mono_domain_get(), TCHAR_TO_UTF8(*value));
7474

7575
MonoInvoke<void>("SetVariable", params);
7676
}

Plugins/UnrealInk/Source/ThirdParty/InkGlue/InkGlue/GlueStory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public enum InkVarType
1414
}
1515

1616
// Don't change structure of this without changing matching C++ interop struct
17-
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
17+
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
1818
public struct InkVarInterop
1919
{
2020
[MarshalAs(UnmanagedType.U1)]

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Unreal Ink
22

3-
This is a plugin allowing you to use the excellent dynamic narrative scripting system, Ink, in Unreal Engine. [Visit the Ink repository for more information on it.](https://github.com/inkle/ink) The plugin still is ostensibly finished. All of the features of the C# API are available except for the profiler, which isn't hugely important. Also the ink runtime itself is up to date and fully featured. Please don't hesistate to contact me for any problems or help you need. I live at @dave_colson on twitter and you can email me at david@peripherallabs.com.
3+
This is a plugin allowing you to use the excellent dynamic narrative scripting system, Ink, in Unreal Engine. [Visit the Ink repository for more information on it.](https://github.com/inkle/ink) The plugin still is ostensibly finished. All of the features of the C# API are available except for the profiler, which isn't hugely important. Also the ink runtime itself is up to date and fully featured. Please don't hesistate to contact me for any problems or help you need. I live at @dave_colson on twitter and you can email me at davidcncolson@gmail.com.
44

55
As of current master branch, compatible with Ink 0.9.0.
66

0 commit comments

Comments
 (0)