C++ Implementation GameInstance save, also some cleanup of unsued C++ classes

This literally took me days, as it turn out that the timing offset between C++ and BP Init of GameIstance caused it to not be added as a GlobalObject to SPUD correctly.
This commit is contained in:
Simeon "Waldo" Wallrath 2025-12-11 17:22:52 +01:00
parent ff4cff2b5d
commit 362b5ff23f
18 changed files with 72 additions and 112 deletions

Binary file not shown.

Binary file not shown.

View file

@ -30,7 +30,7 @@ namespace UnrealBuildTool.Rules
"Engine",
"Core",
"CoreUObject",
"VRExpansionPlugin",
"VRExpansionPlugin"
}
);

View file

@ -69,7 +69,7 @@ public class VRExpansionPlugin : ModuleRules
"AnimGraphRuntime",
"XRBase",
"GameplayTags",
"Mover"
"Mover",
});
//if(Target.bUseChaos)
@ -92,7 +92,7 @@ public class VRExpansionPlugin : ModuleRules
"ApplicationCore",
"RenderCore",
// "ShaderCore",
"NetworkReplayStreaming"
"NetworkReplayStreaming",
//"Renderer",
// "UtilityShaders"
});

View file

@ -15,22 +15,22 @@
"IsBetaVersion": false,
"Installed": true,
"SupportedTargetPlatforms": [
"Win64",
"Linux",
"Android",
"Mac",
"IOS"
],
"Win64",
"Linux",
"Android",
"Mac",
"IOS"
],
"Modules": [
{
"Name": "VRExpansionPlugin",
"Type": "RunTime",
"LoadingPhase": "Default"
},
{
{
"Name": "VRExpansionEditor",
"Type": "UnCookedOnly",
"LoadingPhase": "PostEngineInit"
"LoadingPhase": "PostEngineInit"
}
],
"Plugins": [
@ -45,6 +45,10 @@
{
"Name": "Mover",
"Enabled": true
},
{
"Name": "SPUD",
"Enabled": true
}
]
}
}

View file

@ -1,23 +0,0 @@
#include "CodeOnlyFunctionLibrary.h"
#include "GameFramework/Actor.h"
#include "Engine/Level.h"
FString UCodeOnlyFunctionLibrary::RenameActorUnique(AActor* ActorToRename, const FString& DesiredName, AActor* ReferenceActorForLevel)
{
if (!ActorToRename || !ReferenceActorForLevel)
{
return FString();
}
FString NewName = DesiredName;
while (!ActorToRename->Rename(*NewName, ReferenceActorForLevel->GetLevel(), REN_Test))
{
UE_LOG(LogTemp, Warning, TEXT("Rename conflict on drop: %s"), *NewName);
NewName.AppendChar('x');
}
ActorToRename->Rename(*NewName, ReferenceActorForLevel->GetLevel());
return NewName;
}

View file

@ -0,0 +1,19 @@
#include "CustomAdvancedFriendsGI.h"
#include "Engine/World.h"
#include "Engine/Engine.h"
#include "SpudSubsystem.h"
void UCustomAdvancedFriendsGI::Init()
{
Super::Init();
if (GEngine)
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green,
TEXT("CustomAdvancedFriendsGI::Init() called"));
}
GetSpudSubsystem(GetWorld())->AddPersistentGlobalObjectWithName(this, TEXT("ExampleGameInstance"));
}

View file

@ -1,12 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "WidgetHelper.h"
WidgetHelper::WidgetHelper()
{
}
WidgetHelper::~WidgetHelper()
{
}

View file

@ -1,16 +0,0 @@
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "CodeOnlyFunctionLibrary.generated.h"
UCLASS()
class NO_API UCodeOnlyFunctionLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category="Utilities|Actor")
static FString RenameActorUnique(AActor* ActorToRename, const FString& DesiredName, AActor* ReferenceActorForLevel);
};

View file

@ -0,0 +1,17 @@
#pragma once
#include "CoreMinimal.h"
#include "AdvancedFriendsGameInstance.h"
#include "CustomAdvancedFriendsGI.generated.h"
/**
* Custom GameInstance that registers itself with SPUD for persistence.
*/
UCLASS()
class VREXPPLUGINEXAMPLE_API UCustomAdvancedFriendsGI : public UAdvancedFriendsGameInstance
{
GENERATED_BODY()
public:
virtual void Init() override;
};

View file

@ -1,15 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
/**
*
*/
class VREXPPLUGINEXAMPLE_API WidgetHelper
{
public:
WidgetHelper();
~WidgetHelper();
};

View file

@ -10,7 +10,7 @@ public class VRExpPluginExample : ModuleRules
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
// PrivatePCHHeaderFile = "Private/WindowsMixedRealityPrecompiled.h";
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "AdvancedSessions", "VRExpansionPlugin" });
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "AdvancedSessions", "VRExpansionPlugin", "SPUD" });
PrivateDependencyModuleNames.AddRange(new string[] { });

View file

@ -9,20 +9,15 @@
"Type": "Runtime",
"LoadingPhase": "Default",
"AdditionalDependencies": [
"Engine"
"Engine",
"AdvancedSessions"
]
}
],
"Plugins": [
{
"Name": "OpenXR",
"Enabled": true,
"SupportedTargetPlatforms": [
"Win64",
"Linux",
"LinuxArm64",
"Android"
]
"Enabled": true
},
{
"Name": "VRExpansionPlugin",
@ -61,13 +56,7 @@
},
{
"Name": "OpenXRHandTracking",
"Enabled": true,
"SupportedTargetPlatforms": [
"Win64",
"Linux",
"LinuxArm64",
"Android"
]
"Enabled": true
},
{
"Name": "UdpMessaging",
@ -112,10 +101,7 @@
},
{
"Name": "TextureGraph",
"Enabled": true,
"SupportedTargetPlatforms": [
"Win64"
]
"Enabled": true
},
{
"Name": "Harmonix",