Rename IntegrationGameModeBase to LuprexGameModeBase, and other small refactors

This commit is contained in:
2025-03-17 18:04:55 -04:00
parent 6b8c86a03c
commit cc4441cb31
13 changed files with 78 additions and 78 deletions

View File

@@ -1,5 +1,4 @@
[/Script/EngineSettings.GameMapsSettings] [/Script/EngineSettings.GameMapsSettings]
GameDefaultMap=/Game/LpxLevel.LpxLevel GameDefaultMap=/Game/LpxLevel.LpxLevel
GlobalDefaultGameMode=/Game/Luprex/lxGameMode.lxGameMode_C GlobalDefaultGameMode=/Game/Luprex/lxGameMode.lxGameMode_C

Binary file not shown.

Binary file not shown.

View File

@@ -1,6 +1,6 @@
#include "LuaCall.h" #include "LuaCall.h"
#include "IntegrationGameModeBase.h" #include "LuprexGameModeBase.h"
#include "EdGraphSchema_K2.h" #include "EdGraphSchema_K2.h"
static void FatalBlueprintError(const TCHAR *message) { static void FatalBlueprintError(const TCHAR *message) {
@@ -204,7 +204,7 @@ FString UlxLuaCallLibrary::AllFunctionsWithPrefix(const TCHAR *Prefix)
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
void UlxLuaCallLibrary::LuaCallBegin(UObject *context, const FString &cname, const FString &fname) { void UlxLuaCallLibrary::LuaCallBegin(UObject *context, const FString &cname, const FString &fname) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetBuffer(); FlxStreamBuffer &sb = mode->LuaCallGetBuffer();
mode->LuaCallBegin(); mode->LuaCallBegin();
sb.write_string(cname); sb.write_string(cname);
@@ -213,7 +213,7 @@ void UlxLuaCallLibrary::LuaCallBegin(UObject *context, const FString &cname, con
void UlxLuaCallLibrary::LuaCallInvoke(UObject *context, AActor *place) { void UlxLuaCallLibrary::LuaCallInvoke(UObject *context, AActor *place) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetBuffer(); FlxStreamBuffer &sb = mode->LuaCallGetBuffer();
CheckNotEmpty(sb); CheckNotEmpty(sb);
mode->LuaCallEnd(InvocationKind::LUA_INVOKE, place); mode->LuaCallEnd(InvocationKind::LUA_INVOKE, place);
@@ -221,7 +221,7 @@ void UlxLuaCallLibrary::LuaCallInvoke(UObject *context, AActor *place) {
void UlxLuaCallLibrary::LuaCallProbe(UObject *context, AActor *place) { void UlxLuaCallLibrary::LuaCallProbe(UObject *context, AActor *place) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetBuffer(); FlxStreamBuffer &sb = mode->LuaCallGetBuffer();
CheckNotEmpty(sb); CheckNotEmpty(sb);
mode->LuaCallEnd(InvocationKind::LUA_PROBE, place); mode->LuaCallEnd(InvocationKind::LUA_PROBE, place);
@@ -229,7 +229,7 @@ void UlxLuaCallLibrary::LuaCallProbe(UObject *context, AActor *place) {
void UlxLuaCallLibrary::InvokeEngioMove(UObject *context, const FString &action, const FVector &xyz, double facing) { void UlxLuaCallLibrary::InvokeEngioMove(UObject *context, const FString &action, const FVector &xyz, double facing) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallBegin(); FlxStreamBuffer &sb = mode->LuaCallBegin();
sb.write_string("engio"); sb.write_string("engio");
sb.write_string("move"); sb.write_string("move");
@@ -244,7 +244,7 @@ void UlxLuaCallLibrary::InvokeEngioMove(UObject *context, const FString &action,
ELpxSimpleDynamicTag UlxLuaCallLibrary::LuaCallNextResultType(UObject *context) { ELpxSimpleDynamicTag UlxLuaCallLibrary::LuaCallNextResultType(UObject *context) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetResult(); FlxStreamBuffer &sb = mode->LuaCallGetResult();
if (sb.empty()) return ELpxSimpleDynamicTag::None; if (sb.empty()) return ELpxSimpleDynamicTag::None;
int64_t total_reads = sb.total_reads(); int64_t total_reads = sb.total_reads();
@@ -267,7 +267,7 @@ ELpxSimpleDynamicTag UlxLuaCallLibrary::LuaCallNextResultType(UObject *context)
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
void UlxLuaCallLibrary::LuaCallArgument_string(UObject *context, const FString &pstring) { void UlxLuaCallLibrary::LuaCallArgument_string(UObject *context, const FString &pstring) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetBuffer(); FlxStreamBuffer &sb = mode->LuaCallGetBuffer();
CheckNotEmpty(sb); CheckNotEmpty(sb);
sb.write_simple_dynamic_tag(SimpleDynamicTag::STRING); sb.write_simple_dynamic_tag(SimpleDynamicTag::STRING);
@@ -281,7 +281,7 @@ void UlxLuaCallLibrary::LuaCallArgument_name(UObject *context, const FName &pnam
if ((tokvalue == 0) && !namestr.empty()) { if ((tokvalue == 0) && !namestr.empty()) {
FatalBlueprintError(TEXT("Names passed to lua must be short, and must contain only lowercase and digits")); FatalBlueprintError(TEXT("Names passed to lua must be short, and must contain only lowercase and digits"));
} }
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetBuffer(); FlxStreamBuffer &sb = mode->LuaCallGetBuffer();
CheckNotEmpty(sb); CheckNotEmpty(sb);
sb.write_simple_dynamic_tag(SimpleDynamicTag::TOKEN); sb.write_simple_dynamic_tag(SimpleDynamicTag::TOKEN);
@@ -289,7 +289,7 @@ void UlxLuaCallLibrary::LuaCallArgument_name(UObject *context, const FName &pnam
} }
void UlxLuaCallLibrary::LuaCallArgument_float(UObject *context, double pfloat) { void UlxLuaCallLibrary::LuaCallArgument_float(UObject *context, double pfloat) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetBuffer(); FlxStreamBuffer &sb = mode->LuaCallGetBuffer();
CheckNotEmpty(sb); CheckNotEmpty(sb);
sb.write_simple_dynamic_tag(SimpleDynamicTag::NUMBER); sb.write_simple_dynamic_tag(SimpleDynamicTag::NUMBER);
@@ -297,7 +297,7 @@ void UlxLuaCallLibrary::LuaCallArgument_float(UObject *context, double pfloat) {
} }
void UlxLuaCallLibrary::LuaCallArgument_int(UObject *context, int value) { void UlxLuaCallLibrary::LuaCallArgument_int(UObject *context, int value) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetBuffer(); FlxStreamBuffer &sb = mode->LuaCallGetBuffer();
CheckNotEmpty(sb); CheckNotEmpty(sb);
sb.write_simple_dynamic_tag(SimpleDynamicTag::NUMBER); sb.write_simple_dynamic_tag(SimpleDynamicTag::NUMBER);
@@ -305,7 +305,7 @@ void UlxLuaCallLibrary::LuaCallArgument_int(UObject *context, int value) {
} }
void UlxLuaCallLibrary::LuaCallArgument_vector(UObject *context, const FVector &pvector) { void UlxLuaCallLibrary::LuaCallArgument_vector(UObject *context, const FVector &pvector) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetBuffer(); FlxStreamBuffer &sb = mode->LuaCallGetBuffer();
CheckNotEmpty(sb); CheckNotEmpty(sb);
sb.write_simple_dynamic_tag(SimpleDynamicTag::VECTOR); sb.write_simple_dynamic_tag(SimpleDynamicTag::VECTOR);
@@ -313,7 +313,7 @@ void UlxLuaCallLibrary::LuaCallArgument_vector(UObject *context, const FVector &
} }
void UlxLuaCallLibrary::LuaCallArgument_vector2d(UObject *context, const FVector2D &pvector) { void UlxLuaCallLibrary::LuaCallArgument_vector2d(UObject *context, const FVector2D &pvector) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetBuffer(); FlxStreamBuffer &sb = mode->LuaCallGetBuffer();
CheckNotEmpty(sb); CheckNotEmpty(sb);
sb.write_simple_dynamic_tag(SimpleDynamicTag::VECTOR); sb.write_simple_dynamic_tag(SimpleDynamicTag::VECTOR);
@@ -323,7 +323,7 @@ void UlxLuaCallLibrary::LuaCallArgument_vector2d(UObject *context, const FVector
} }
void UlxLuaCallLibrary::LuaCallArgument_boolean(UObject *context, bool pbool) { void UlxLuaCallLibrary::LuaCallArgument_boolean(UObject *context, bool pbool) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetBuffer(); FlxStreamBuffer &sb = mode->LuaCallGetBuffer();
CheckNotEmpty(sb); CheckNotEmpty(sb);
sb.write_simple_dynamic_tag(SimpleDynamicTag::BOOLEAN); sb.write_simple_dynamic_tag(SimpleDynamicTag::BOOLEAN);
@@ -339,7 +339,7 @@ void UlxLuaCallLibrary::LuaCallArgument_boolean(UObject *context, bool pbool) {
FString UlxLuaCallLibrary::LuaCallReturnValue_string(UObject *context) { FString UlxLuaCallLibrary::LuaCallReturnValue_string(UObject *context) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetResult(); FlxStreamBuffer &sb = mode->LuaCallGetResult();
SimpleDynamicTag tag = sb.read_simple_dynamic_tag(); SimpleDynamicTag tag = sb.read_simple_dynamic_tag();
if (tag != SimpleDynamicTag::STRING) FatalBlueprintError(TEXT("expected lua to return a string")); if (tag != SimpleDynamicTag::STRING) FatalBlueprintError(TEXT("expected lua to return a string"));
@@ -347,7 +347,7 @@ FString UlxLuaCallLibrary::LuaCallReturnValue_string(UObject *context) {
} }
FName UlxLuaCallLibrary::LuaCallReturnValue_name(UObject *context) { FName UlxLuaCallLibrary::LuaCallReturnValue_name(UObject *context) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetResult(); FlxStreamBuffer &sb = mode->LuaCallGetResult();
SimpleDynamicTag tag = sb.read_simple_dynamic_tag(); SimpleDynamicTag tag = sb.read_simple_dynamic_tag();
if (tag != SimpleDynamicTag::TOKEN) FatalBlueprintError(TEXT("expected lua to return a name")); if (tag != SimpleDynamicTag::TOKEN) FatalBlueprintError(TEXT("expected lua to return a name"));
@@ -355,7 +355,7 @@ FName UlxLuaCallLibrary::LuaCallReturnValue_name(UObject *context) {
} }
double UlxLuaCallLibrary::LuaCallReturnValue_float(UObject *context) { double UlxLuaCallLibrary::LuaCallReturnValue_float(UObject *context) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetResult(); FlxStreamBuffer &sb = mode->LuaCallGetResult();
SimpleDynamicTag tag = sb.read_simple_dynamic_tag(); SimpleDynamicTag tag = sb.read_simple_dynamic_tag();
if (tag != SimpleDynamicTag::NUMBER) FatalBlueprintError(TEXT("expected lua to return a float")); if (tag != SimpleDynamicTag::NUMBER) FatalBlueprintError(TEXT("expected lua to return a float"));
@@ -363,7 +363,7 @@ double UlxLuaCallLibrary::LuaCallReturnValue_float(UObject *context) {
} }
int UlxLuaCallLibrary::LuaCallReturnValue_int(UObject *context) { int UlxLuaCallLibrary::LuaCallReturnValue_int(UObject *context) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetResult(); FlxStreamBuffer &sb = mode->LuaCallGetResult();
SimpleDynamicTag tag = sb.read_simple_dynamic_tag(); SimpleDynamicTag tag = sb.read_simple_dynamic_tag();
if (tag != SimpleDynamicTag::NUMBER) FatalBlueprintError(TEXT("expected lua to return a number")); if (tag != SimpleDynamicTag::NUMBER) FatalBlueprintError(TEXT("expected lua to return a number"));
@@ -371,7 +371,7 @@ int UlxLuaCallLibrary::LuaCallReturnValue_int(UObject *context) {
} }
FVector UlxLuaCallLibrary::LuaCallReturnValue_vector(UObject *context) { FVector UlxLuaCallLibrary::LuaCallReturnValue_vector(UObject *context) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetResult(); FlxStreamBuffer &sb = mode->LuaCallGetResult();
SimpleDynamicTag tag = sb.read_simple_dynamic_tag(); SimpleDynamicTag tag = sb.read_simple_dynamic_tag();
if (tag != SimpleDynamicTag::VECTOR) FatalBlueprintError(TEXT("expected lua to return a vector")); if (tag != SimpleDynamicTag::VECTOR) FatalBlueprintError(TEXT("expected lua to return a vector"));
@@ -379,7 +379,7 @@ FVector UlxLuaCallLibrary::LuaCallReturnValue_vector(UObject *context) {
} }
FVector2D UlxLuaCallLibrary::LuaCallReturnValue_vector2d(UObject *context) { FVector2D UlxLuaCallLibrary::LuaCallReturnValue_vector2d(UObject *context) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetResult(); FlxStreamBuffer &sb = mode->LuaCallGetResult();
SimpleDynamicTag tag = sb.read_simple_dynamic_tag(); SimpleDynamicTag tag = sb.read_simple_dynamic_tag();
if (tag != SimpleDynamicTag::VECTOR) FatalBlueprintError(TEXT("expected lua to return a vector")); if (tag != SimpleDynamicTag::VECTOR) FatalBlueprintError(TEXT("expected lua to return a vector"));
@@ -388,7 +388,7 @@ FVector2D UlxLuaCallLibrary::LuaCallReturnValue_vector2d(UObject *context) {
} }
bool UlxLuaCallLibrary::LuaCallReturnValue_boolean(UObject *context) { bool UlxLuaCallLibrary::LuaCallReturnValue_boolean(UObject *context) {
AIntegrationGameModeBase *mode = AIntegrationGameModeBase::GetLuprexGameMode(context); ALuprexGameModeBase *mode = ALuprexGameModeBase::FromContext(context);
FlxStreamBuffer &sb = mode->LuaCallGetResult(); FlxStreamBuffer &sb = mode->LuaCallGetResult();
SimpleDynamicTag tag = sb.read_simple_dynamic_tag(); SimpleDynamicTag tag = sb.read_simple_dynamic_tag();
if (tag != SimpleDynamicTag::BOOLEAN) FatalBlueprintError(TEXT("expected lua to return a boolean")); if (tag != SimpleDynamicTag::BOOLEAN) FatalBlueprintError(TEXT("expected lua to return a boolean"));

View File

@@ -100,7 +100,7 @@ public:
// * Use LuaCallReturnValueXXX to fetch return values from the return buffer. // * Use LuaCallReturnValueXXX to fetch return values from the return buffer.
// //
// The two buffers are basically global variables, they are part of the // The two buffers are basically global variables, they are part of the
// IntegrationGameModeBase. This is okay because blueprint is single-threaded. // LuprexGameModeBase. This is okay because blueprint is single-threaded.
// //
// The following three libraries contain all the low-level functions. // The following three libraries contain all the low-level functions.
// //

View File

@@ -1,6 +1,6 @@
// Copyright Epic Games, Inc. All Rights Reserved. // Copyright Epic Games, Inc. All Rights Reserved.
#include "IntegrationGameModeBase.h" #include "LuprexGameModeBase.h"
#include "lpx-drvutil.hpp" #include "lpx-drvutil.hpp"
#include "lpx-paths.hpp" #include "lpx-paths.hpp"
#include "DebugPrint.h" #include "DebugPrint.h"
@@ -14,7 +14,7 @@
using namespace DebugPrint; using namespace DebugPrint;
using namespace CommonTypes; using namespace CommonTypes;
AIntegrationGameModeBase::AIntegrationGameModeBase() ALuprexGameModeBase::ALuprexGameModeBase()
{ {
TangibleManager = NewObject<UlxTangibleManager>(); TangibleManager = NewObject<UlxTangibleManager>();
PlayerId = 0; PlayerId = 0;
@@ -26,11 +26,11 @@ AIntegrationGameModeBase::AIntegrationGameModeBase()
SetActorTickInterval(0.0f); SetActorTickInterval(0.0f);
DebugPrintControl::EnableCollection(); DebugPrintControl::EnableCollection();
ResetToInitialState(); ResetToInitialState();
OnWorldPreActorTickHandle = FWorldDelegates::OnWorldPreActorTick.AddUObject(this, &AIntegrationGameModeBase::OnWorldPreActorTick); OnWorldPreActorTickHandle = FWorldDelegates::OnWorldPreActorTick.AddUObject(this, &ALuprexGameModeBase::OnWorldPreActorTick);
OnWorldPostActorTickHandle = FWorldDelegates::OnWorldPostActorTick.AddUObject(this, &AIntegrationGameModeBase::OnWorldPostActorTick); OnWorldPostActorTickHandle = FWorldDelegates::OnWorldPostActorTick.AddUObject(this, &ALuprexGameModeBase::OnWorldPostActorTick);
} }
AIntegrationGameModeBase::~AIntegrationGameModeBase() ALuprexGameModeBase::~ALuprexGameModeBase()
{ {
ResetToInitialState(); ResetToInitialState();
FWorldDelegates::OnWorldPreActorTick.Remove(OnWorldPreActorTickHandle); FWorldDelegates::OnWorldPreActorTick.Remove(OnWorldPreActorTickHandle);
@@ -40,7 +40,7 @@ AIntegrationGameModeBase::~AIntegrationGameModeBase()
// This method runs in the background thread, // This method runs in the background thread,
// at the moment we trigger it. // at the moment we trigger it.
// //
uint32 AIntegrationGameModeBase::Run() { uint32 ALuprexGameModeBase::Run() {
FlxLockedWrapper lockedwrap(LockableWrapper); FlxLockedWrapper lockedwrap(LockableWrapper);
Sockets->Update(lockedwrap); Sockets->Update(lockedwrap);
lockedwrap->play_update(lockedwrap.Get(), EngineSeconds); lockedwrap->play_update(lockedwrap.Get(), EngineSeconds);
@@ -48,7 +48,7 @@ uint32 AIntegrationGameModeBase::Run() {
return 0; return 0;
} }
void AIntegrationGameModeBase::ResetToInitialState() void ALuprexGameModeBase::ResetToInitialState()
{ {
Playing = false; Playing = false;
@@ -96,7 +96,7 @@ void AIntegrationGameModeBase::ResetToInitialState()
} }
void AIntegrationGameModeBase::UpdateConsoleOutput() { void ALuprexGameModeBase::UpdateConsoleOutput() {
// Copy Luprex Stdout into the console. // Copy Luprex Stdout into the console.
FlxLockedWrapper lockedwrap(LockableWrapper); FlxLockedWrapper lockedwrap(LockableWrapper);
if (Playing) { if (Playing) {
@@ -117,7 +117,7 @@ void AIntegrationGameModeBase::UpdateConsoleOutput() {
} }
#pragma optimize("", off) #pragma optimize("", off)
void AIntegrationGameModeBase::UpdateTangibles() { void ALuprexGameModeBase::UpdateTangibles() {
double radius = 1000.0; // Hardwired for now. double radius = 1000.0; // Hardwired for now.
using TanArray = UlxTangibleManager::TanArray; using TanArray = UlxTangibleManager::TanArray;
if (!Playing) return; if (!Playing) return;
@@ -145,7 +145,7 @@ void AIntegrationGameModeBase::UpdateTangibles() {
TangibleManager->DeleteFarawayTangibles(); TangibleManager->DeleteFarawayTangibles();
} }
void AIntegrationGameModeBase::UpdatePossessedTangible() { void ALuprexGameModeBase::UpdatePossessedTangible() {
UlxTangible *ptan = TangibleManager->GetPossessedTangible(); UlxTangible *ptan = TangibleManager->GetPossessedTangible();
UlxTangible *tan = TangibleManager->GetTangible(PlayerId); UlxTangible *tan = TangibleManager->GetTangible(PlayerId);
APlayerController *ctrl = GetWorld()->GetFirstPlayerController(); APlayerController *ctrl = GetWorld()->GetFirstPlayerController();
@@ -164,7 +164,7 @@ void AIntegrationGameModeBase::UpdatePossessedTangible() {
} }
} }
void AIntegrationGameModeBase::LuaCallEnd(InvocationKind kind, int64 place_id) { void ALuprexGameModeBase::LuaCallEnd(InvocationKind kind, int64 place_id) {
std::string_view datapk = LuaCallBuffer.view(); std::string_view datapk = LuaCallBuffer.view();
FlxLockedWrapper w(LockableWrapper); FlxLockedWrapper w(LockableWrapper);
if (place_id == 0) place_id = w.GetActor(); if (place_id == 0) place_id = w.GetActor();
@@ -174,11 +174,11 @@ void AIntegrationGameModeBase::LuaCallEnd(InvocationKind kind, int64 place_id) {
LuaCallResult.open(std::string_view(retpk, retpklen)); LuaCallResult.open(std::string_view(retpk, retpklen));
} }
void AIntegrationGameModeBase::LuaCallEnd(InvocationKind kind) { void ALuprexGameModeBase::LuaCallEnd(InvocationKind kind) {
LuaCallEnd(kind, int64(0)); LuaCallEnd(kind, int64(0));
} }
void AIntegrationGameModeBase::LuaCallEnd(InvocationKind kind, AActor *place) { void ALuprexGameModeBase::LuaCallEnd(InvocationKind kind, AActor *place) {
if (place == nullptr) { if (place == nullptr) {
LuaCallEnd(kind, int64(0)); LuaCallEnd(kind, int64(0));
} else { } else {
@@ -191,7 +191,7 @@ void AIntegrationGameModeBase::LuaCallEnd(InvocationKind kind, AActor *place) {
} }
} }
void AIntegrationGameModeBase::ExecuteDebuggingCommand(FlxLockedWrapper &w, const FString &fs) { void ALuprexGameModeBase::ExecuteDebuggingCommand(FlxLockedWrapper &w, const FString &fs) {
if (fs == "\\invokeplayer") { if (fs == "\\invokeplayer") {
DPrint(TEXT("Trying to invoke 'myfunction' in lua")); DPrint(TEXT("Trying to invoke 'myfunction' in lua"));
FlxStreamBuffer &sb = LuaCallBegin(); FlxStreamBuffer &sb = LuaCallBegin();
@@ -209,7 +209,7 @@ void AIntegrationGameModeBase::ExecuteDebuggingCommand(FlxLockedWrapper &w, cons
} }
} }
void AIntegrationGameModeBase::ConsoleSendInput(const FString& fs) void ALuprexGameModeBase::ConsoleSendInput(const FString& fs)
{ {
if (fs.IsEmpty()) { if (fs.IsEmpty()) {
return; return;
@@ -233,7 +233,7 @@ void AIntegrationGameModeBase::ConsoleSendInput(const FString& fs)
} }
} }
void AIntegrationGameModeBase::OnWorldPreActorTick(UWorld* InWorld, ELevelTick InLevelTick, float deltaseconds) void ALuprexGameModeBase::OnWorldPreActorTick(UWorld* InWorld, ELevelTick InLevelTick, float deltaseconds)
{ {
if(Playing && (GetWorld() == InWorld) && (InLevelTick == LEVELTICK_All)) if(Playing && (GetWorld() == InWorld) && (InLevelTick == LEVELTICK_All))
{ {
@@ -246,7 +246,7 @@ void AIntegrationGameModeBase::OnWorldPreActorTick(UWorld* InWorld, ELevelTick I
} }
} }
void AIntegrationGameModeBase::OnWorldPostActorTick(UWorld* InWorld, ELevelTick InLevelTick, float deltaseconds) void ALuprexGameModeBase::OnWorldPostActorTick(UWorld* InWorld, ELevelTick InLevelTick, float deltaseconds)
{ {
if(Playing && (GetWorld() == InWorld) && (InLevelTick == LEVELTICK_All)) if(Playing && (GetWorld() == InWorld) && (InLevelTick == LEVELTICK_All))
{ {
@@ -255,12 +255,12 @@ void AIntegrationGameModeBase::OnWorldPostActorTick(UWorld* InWorld, ELevelTick
} }
void AIntegrationGameModeBase::Tick(float deltaseconds) void ALuprexGameModeBase::Tick(float deltaseconds)
{ {
Super::Tick(deltaseconds); Super::Tick(deltaseconds);
} }
void AIntegrationGameModeBase::BeginPlay() void ALuprexGameModeBase::BeginPlay()
{ {
Super::BeginPlay(); Super::BeginPlay();
@@ -330,29 +330,29 @@ void AIntegrationGameModeBase::BeginPlay()
new FlxDebugBlueprintErrorsOutputDevice(BreakToDebuggerLogVerbosity)); new FlxDebugBlueprintErrorsOutputDevice(BreakToDebuggerLogVerbosity));
} }
void AIntegrationGameModeBase::EndPlay(const EEndPlayReason::Type EndPlayReason) void ALuprexGameModeBase::EndPlay(const EEndPlayReason::Type EndPlayReason)
{ {
ResetToInitialState(); ResetToInitialState();
} }
int64 AIntegrationGameModeBase::GetPlayerId() { int64 ALuprexGameModeBase::GetPlayerId() {
return PlayerId; return PlayerId;
} }
AIntegrationGameModeBase *AIntegrationGameModeBase::GetLuprexGameMode(UObject *context) { ALuprexGameModeBase *ALuprexGameModeBase::FromContext(UObject *context) {
AIntegrationGameModeBase *result = context->GetWorld()->GetAuthGameMode<AIntegrationGameModeBase>(); ALuprexGameModeBase *result = context->GetWorld()->GetAuthGameMode<ALuprexGameModeBase>();
if (result == nullptr) { if (result == nullptr) {
UE_LOG(LogBlueprint, Fatal, TEXT("Not currently using a Luprex Game Mode.")); UE_LOG(LogBlueprint, Fatal, TEXT("Not currently using a Luprex Game Mode."));
} }
return result; return result;
} }
bool AIntegrationGameModeBase::IsLookAtChanged(UObject *context) { bool ALuprexGameModeBase::IsLookAtChanged(UObject *context) {
AIntegrationGameModeBase *mode = GetLuprexGameMode(context); ALuprexGameModeBase *mode = FromContext(context);
return mode->CurrentLookAt.HitObjectHandle != mode->PreviousLookAt.HitObjectHandle; return mode->CurrentLookAt.HitObjectHandle != mode->PreviousLookAt.HitObjectHandle;
} }
void AIntegrationGameModeBase::UpdateLookAt() { void ALuprexGameModeBase::UpdateLookAt() {
// Rotate the variables. // Rotate the variables.
PreviousLookAt = CurrentLookAt; PreviousLookAt = CurrentLookAt;
CurrentLookAt.Init(); CurrentLookAt.Init();

View File

@@ -11,7 +11,7 @@
#include "LuprexSockets.h" #include "LuprexSockets.h"
#include "TriggeredTask.h" #include "TriggeredTask.h"
#include "BlueprintErrors.h" #include "BlueprintErrors.h"
#include "IntegrationGameModeBase.generated.h" #include "LuprexGameModeBase.generated.h"
class LookAtDetector; class LookAtDetector;
@@ -20,13 +20,13 @@ class LookAtDetector;
* *
*/ */
UCLASS() UCLASS()
class INTEGRATION_API AIntegrationGameModeBase : public AGameModeBase, public FRunnable class INTEGRATION_API ALuprexGameModeBase : public AGameModeBase, public FRunnable
{ {
GENERATED_BODY() GENERATED_BODY()
public: public:
AIntegrationGameModeBase(); ALuprexGameModeBase();
~AIntegrationGameModeBase(); ~ALuprexGameModeBase();
virtual void BeginPlay() override; virtual void BeginPlay() override;
virtual void Tick(float) override; virtual void Tick(float) override;
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason); virtual void EndPlay(const EEndPlayReason::Type EndPlayReason);
@@ -46,23 +46,20 @@ public:
UFUNCTION(BlueprintCallable, Category = "Luprex|Miscellaneous") UFUNCTION(BlueprintCallable, Category = "Luprex|Miscellaneous")
int64 GetPlayerId(); int64 GetPlayerId();
UFUNCTION(BlueprintPure, meta = (CompactNodeTitle="LxGameMode", WorldContext = "context"), Category = "Luprex|Miscellaneous")
static AIntegrationGameModeBase *GetLuprexGameMode(UObject *context);
UFUNCTION(BlueprintCallable, meta = (WorldContext = "context"),Category = "Luprex|Look-At Detection") UFUNCTION(BlueprintCallable, meta = (WorldContext = "context"),Category = "Luprex|Look-At Detection")
static void SetLookAt(UObject *context, const FHitResult &hit) { GetLuprexGameMode(context)->CurrentLookAt = hit; } static void SetLookAt(UObject *context, const FHitResult &hit) { FromContext(context)->CurrentLookAt = hit; }
UFUNCTION(BlueprintPure, meta = (WorldContext = "context"),Category = "Luprex|Look-At Detection") UFUNCTION(BlueprintPure, meta = (WorldContext = "context"),Category = "Luprex|Look-At Detection")
static const FHitResult &GetLookAt(UObject *context) { return GetLuprexGameMode(context)->CurrentLookAt; } static const FHitResult &GetLookAt(UObject *context) { return FromContext(context)->CurrentLookAt; }
UFUNCTION(BlueprintPure, meta = (WorldContext = "context"),Category = "Luprex|Look-At Detection") UFUNCTION(BlueprintPure, meta = (WorldContext = "context"),Category = "Luprex|Look-At Detection")
static const AActor *GetLookAtActor(UObject *context) { return GetLuprexGameMode(context)->CurrentLookAt.GetActor(); } static const AActor *GetLookAtActor(UObject *context) { return FromContext(context)->CurrentLookAt.GetActor(); }
UFUNCTION(BlueprintPure, meta = (WorldContext = "context"),Category = "Luprex|Look-At Detection") UFUNCTION(BlueprintPure, meta = (WorldContext = "context"),Category = "Luprex|Look-At Detection")
static const FHitResult &GetPreviousLookAt(UObject *context) { return GetLuprexGameMode(context)->PreviousLookAt; } static const FHitResult &GetPreviousLookAt(UObject *context) { return FromContext(context)->PreviousLookAt; }
UFUNCTION(BlueprintPure, meta = (WorldContext = "context"),Category = "Luprex|Look-At Detection") UFUNCTION(BlueprintPure, meta = (WorldContext = "context"),Category = "Luprex|Look-At Detection")
static const AActor *GetPreviousLookAtActor(UObject *context) { return GetLuprexGameMode(context)->PreviousLookAt.GetActor(); } static const AActor *GetPreviousLookAtActor(UObject *context) { return FromContext(context)->PreviousLookAt.GetActor(); }
UFUNCTION(BlueprintPure, meta = (WorldContext = "context"),Category = "Luprex|Look-At Detection") UFUNCTION(BlueprintPure, meta = (WorldContext = "context"),Category = "Luprex|Look-At Detection")
static bool IsLookAtChanged(UObject *context); static bool IsLookAtChanged(UObject *context);
@@ -118,6 +115,10 @@ public:
// to update luprex sockets and update luprex itself. // to update luprex sockets and update luprex itself.
virtual uint32 Run() override; virtual uint32 Run() override;
// Get the current Luprex Game Mode Base, given a context object.
static ALuprexGameModeBase *FromContext(UObject *context);
UPROPERTY() UPROPERTY()
UlxTangibleManager *TangibleManager; UlxTangibleManager *TangibleManager;

View File

@@ -3,7 +3,7 @@
#include "Tangible.h" #include "Tangible.h"
#include "TangibleManager.h" #include "TangibleManager.h"
#include "IntegrationGameModeBase.h" #include "LuprexGameModeBase.h"
#define DEFAULT_BLUEPRINT (TEXT("TangibleStaticMesh")) #define DEFAULT_BLUEPRINT (TEXT("TangibleStaticMesh"))
#define LOCTEXT_NAMESPACE "Luprex Tangible" #define LOCTEXT_NAMESPACE "Luprex Tangible"
@@ -193,7 +193,7 @@ void UlxTangible::SetTangiblePlane(AActor* target, const FString& plane) {
bool UlxTangible::IsCurrentPlayer(AActor* target) { bool UlxTangible::IsCurrentPlayer(AActor* target) {
UlxTangible *tan = GetActorTangibleQuiet(target); UlxTangible *tan = GetActorTangibleQuiet(target);
if (tan == nullptr) return false; if (tan == nullptr) return false;
AIntegrationGameModeBase *gamemode = tan->Manager->GetGameMode(); ALuprexGameModeBase *gamemode = tan->Manager->GetGameMode();
return (tan->TangibleId == gamemode->PlayerId); return (tan->TangibleId == gamemode->PlayerId);
} }

View File

@@ -4,7 +4,7 @@
#include "TangibleManager.h" #include "TangibleManager.h"
#include "Tangible.h" #include "Tangible.h"
#include "DebugPrint.h" #include "DebugPrint.h"
#include "IntegrationGameModeBase.h" #include "LuprexGameModeBase.h"
using namespace DebugPrint; using namespace DebugPrint;
using TanArray = UlxTangibleManager::TanArray; using TanArray = UlxTangibleManager::TanArray;
@@ -53,7 +53,7 @@ UlxTangibleManager::UlxTangibleManager() {
PossessedTangible = nullptr; PossessedTangible = nullptr;
} }
void UlxTangibleManager::Init(UWorld* world, AIntegrationGameModeBase *gamemode) { void UlxTangibleManager::Init(UWorld* world, ALuprexGameModeBase *gamemode) {
World = world; World = world;
GameMode = gamemode; GameMode = gamemode;
} }

View File

@@ -8,7 +8,7 @@
#include "Tangible.h" #include "Tangible.h"
#include "TangibleManager.generated.h" #include "TangibleManager.generated.h"
class AIntegrationGameModeBase; class ALuprexGameModeBase;
UCLASS() UCLASS()
class INTEGRATION_API UlxTangibleManager : public UObject class INTEGRATION_API UlxTangibleManager : public UObject
@@ -27,7 +27,7 @@ public:
// A pointer to our game mode. // A pointer to our game mode.
UPROPERTY() UPROPERTY()
TWeakObjectPtr<AIntegrationGameModeBase> GameMode; TWeakObjectPtr<ALuprexGameModeBase> GameMode;
// Given a tangible ID, look up the TangibleComponent of that actor. // Given a tangible ID, look up the TangibleComponent of that actor.
UPROPERTY() UPROPERTY()
@@ -41,14 +41,14 @@ public:
// Initialize the tangible manager. // Initialize the tangible manager.
// //
void Init(UWorld *world, AIntegrationGameModeBase *gamemode); void Init(UWorld *world, ALuprexGameModeBase *gamemode);
// Get a pointer to our world. // Get a pointer to our world.
// //
UWorld* GetWorld() const override { return World.Get(); } UWorld* GetWorld() const override { return World.Get(); }
// Get a pointer to our game mode. // Get a pointer to our game mode.
AIntegrationGameModeBase *GetGameMode() { return GameMode.Get(); } ALuprexGameModeBase *GetGameMode() { return GameMode.Get(); }
// Get the tangible if it exists, otherwise return NULL // Get the tangible if it exists, otherwise return NULL
// //