I am trying to use a custom made GameUserSettings class, and replaced the default one in DefaultEngine.ini.
Now wherenver i try opening the project i get this:
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000240 UE4Editor_Engine UE4Editor_Engine UE4Editor_JourneyFrameworkMainMenuSystem!UJF_GameUserSettings::ApplyAdvancedSettings() [C:\Users\dan00\Documents\Unreal Plugins\JourneyFramework\Plugins\JourneyFrameworkMainMenuSystem\Source\JourneyFrameworkMainMenuSystem\Private\Misc\JF_GameUserSettings.cpp:36] UE4Editor_JourneyFrameworkMainMenuSystem!UJF_GameUserSettings::ApplySettings() [C:\Users\dan00\Documents\Unreal Plugins\JourneyFramework\Plugins\JourneyFrameworkMainMenuSystem\Source\JourneyFrameworkMainMenuSystem\Private\Misc\JF_GameUserSettings.cpp:21] UE4Editor_UnrealEd UE4Editor_UnrealEd UE4Editor UE4Editor_UnrealEd UE4Editor UE4Editor UE4Editor UE4Editor kernel32 ntdll i have no idea what i did wrong, i went through my code a bunch of times and couldnt find anything. Here is my source code:
.cpp:
#include "Misc/JF_GameUserSettings.h" #include "GameFramework/GameUserSettings.h" #include "AudioDevice.h" #include "Engine/Engine.h" #include "Kismet/KismetMathLibrary.h" #include "RHI.h" /* Constructor */ UJF_GameUserSettings::UJF_GameUserSettings() { LoadConfigIni(); } void UJF_GameUserSettings::ApplySettings(bool bCheckForCommandLineOverrides) { Super::ApplyNonResolutionSettings(); ApplyAdvancedSettings(); Super::ApplyResolutionSettings(bCheckForCommandLineOverrides); SaveConfig(); } void UJF_GameUserSettings::ApplyAdvancedSettings() { //Misc if (bEnableBloom) { GetWorld()->Exec(GetWorld(), TEXT("r.DefaultFeature.Bloom 1")); } else { GetWorld()->Exec(GetWorld(), TEXT("r.DefaultFeature.Bloom 0")); } if (bMotionBlur) { GetWorld()->Exec(GetWorld(), TEXT("r.DefaultFeature.MotionBlur 1")); } else { GetWorld()->Exec(GetWorld(), TEXT("r.DefaultFeature.MotionBlur 0")); } //Check for ray tracing if (bRayTracing && GRHISupportsRayTracing) { GetWorld()->Exec(GetWorld(), TEXT("r.RayTracing 1")); } else { GetWorld()->Exec(GetWorld(), TEXT("r.RayTracing 0")); } if (bRayTracing && ShadowsType == EShadowsType::RayTraced && GRHISupportsRayTracing) { GetWorld()->Exec(GetWorld(), TEXT("r.RayTracing.Shadows 1")); } else { GetWorld()->Exec(GetWorld(), TEXT("r.RayTracing.Shadows 0")); } if (bRayTracing && AmbientOcclusionType == EAmbientOcclusionType::RayTraced && GRHISupportsRayTracing) { GetWorld()->Exec(GetWorld(), TEXT("r.RayTracing.AmbientOcclusion 1")); } else { GetWorld()->Exec(GetWorld(), TEXT("r.RayTracing.AmbientOcclusion 0")); } if (bRayTracing && ReflectionsType == EReflectionsType::RayTracing && GRHISupportsRayTracing) { GetWorld()->Exec(GetWorld(), TEXT("r.RayTracing.Reflections 1")); } else { GetWorld()->Exec(GetWorld(), TEXT("r.RayTracing.Reflections 0")); } if (bRayTracing && TranslucencyType == ETranslucencyType::RayTracing && GRHISupportsRayTracing) { GetWorld()->Exec(GetWorld(), TEXT("r.RayTracing.Translucency 1")); } else { GetWorld()->Exec(GetWorld(), TEXT("r.RayTracing.Translucency 0")); } switch (GIType) { case EGlobalIlluminationType::Off: GetWorld()->Exec(GetWorld(), TEXT("r.RayTracing.GlobalIllumination 0")); GetWorld()->Exec(GetWorld(), TEXT("r.SSGI.Quality 0")); break; case EGlobalIlluminationType::RayTraced: if (bRayTracing && GRHISupportsRayTracing) { GetWorld()->Exec(GetWorld(), TEXT("r.SSGI.Quality 0")); switch (RTGIType) { case ERayTracingGlobalIlluminationType::FinalGather: GetWorld()->Exec(GetWorld(), TEXT("r.RayTracing.GlobalIllumination 1")); GetWorld()->Exec(GetWorld(), TEXT("r.RayTracing.GlobalIllumination.EnableFinalGather 1")); break; case ERayTracingGlobalIlluminationType::BruteForce: GetWorld()->Exec(GetWorld(), TEXT("r.RayTracing.GlobalIllumination 1")); GetWorld()->Exec(GetWorld(), TEXT("r.RayTracing.GlobalIllumination.EnableFinalGather 0")); break; default: break; } break; } else { break; } case EGlobalIlluminationType::ScreenSpace: GetWorld()->Exec(GetWorld(), TEXT("r.RayTracing.GlobalIllumination 0")); GetWorld()->Exec(GetWorld(), TEXT("r.SSGI.Quality " + UKismetMathLibrary::Clamp(ScreenSpaceGIQuality, 1, 4))); break; default: break; } } #pragma region Getters And Setters void UJF_GameUserSettings::SetBloom(bool Set) { bEnableBloom = Set; } bool UJF_GameUserSettings::ReturnBloom() { return bEnableBloom; } void UJF_GameUserSettings::SetMotionBlur(bool Set) { bMotionBlur = Set; } bool UJF_GameUserSettings::ReturnMotionBlur() { return bMotionBlur; } void UJF_GameUserSettings::SetRayTracing(bool Set) { bRayTracing = Set; } bool UJF_GameUserSettings::GetRayTracing() { return bRayTracing; } void UJF_GameUserSettings::SetShadowType(EShadowsType Set) { ShadowsType = Set; } EShadowsType UJF_GameUserSettings::GetShadowType() { return ShadowsType; } void UJF_GameUserSettings::SetAmbientOcclusionType(EAmbientOcclusionType Set) { AmbientOcclusionType = Set; } EAmbientOcclusionType UJF_GameUserSettings::GetAmbientOcclusionType() { return AmbientOcclusionType; } void UJF_GameUserSettings::SetReflectionType(EReflectionsType Set) { ReflectionsType = Set; } EReflectionsType UJF_GameUserSettings::GetReflectionType() { return ReflectionsType; } void UJF_GameUserSettings::SetTranslucencyType(ETranslucencyType Set) { TranslucencyType = Set; } ETranslucencyType UJF_GameUserSettings::GetTranslucencyType() { return TranslucencyType; } void UJF_GameUserSettings::SetGlobalIlluminationType(EGlobalIlluminationType Set) { GIType = Set; } EGlobalIlluminationType UJF_GameUserSettings::GetGlobalIlluminationType() { return GIType; } void UJF_GameUserSettings::SetSSGIQuality(int32 Set) { ScreenSpaceGIQuality = Set; } int32 UJF_GameUserSettings::GetSSGIQuality() { return ScreenSpaceGIQuality; } void UJF_GameUserSettings::SetRTGIType(ERayTracingGlobalIlluminationType Set) { RTGIType = Set; } ERayTracingGlobalIlluminationType UJF_GameUserSettings::GetRTGIType() { return RTGIType; } void UJF_GameUserSettings::SetVolumetricLighting(bool Set) { bVolumetricLighting = Set; } bool UJF_GameUserSettings::GetVolumetricLighting() { return bVolumetricLighting; } void UJF_GameUserSettings::SetRAPI(int32 Set) { RendAPI = Set; } int32 UJF_GameUserSettings::GetRAPI() { return RendAPI; } #pragma endregion .h:
#pragma once #include "CoreMinimal.h" #include "GameFramework/GameUserSettings.h" #include "JF_GameUserSettings.generated.h" UENUM(BlueprintType) /* Shadow types */ enum class EShadowsType : uint8 { Raster UMETA(DisplayName="Rasterized"), RayTraced UMETA(DisplayName="Ray Traced") }; UENUM(BlueprintType) /* AO Types */ enum class EAmbientOcclusionType : uint8 { ScreenSpace UMETA(DisplayName="Screen Space"), RayTraced UMETA(DisplayName="Ray Traced") }; UENUM(BlueprintType) /* GI Types */ enum class EGlobalIlluminationType : uint8 { Off UMETA(DisplayName="Off"), ScreenSpace UMETA(DisplayName="Screen Space"), RayTraced UMETA(DisplayName="Ray Traced") }; UENUM(BlueprintType) /* RAPI Types */ enum class ERenderingAPI : uint8 { DX10 UMETA(DisplayName="DirectX 10 (Legacy)"), DX11 UMETA(DisplayName="DirectX 12"), DX12 UMETA(DisplayName="DirectX 11"), Vulkan UMETA(DisplayName="Vulkan"), OpenGL UMETA(DisplayName="OpenGL") }; /* Custom GameUserSettings Class Saves to the GameUserSettings.ini file */ UCLASS(config = GameUserSettings) class JOURNEYFRAMEWORKMAINMENUSYSTEM_API UJF_GameUserSettings : public UGameUserSettings { GENERATED_BODY() public: UJF_GameUserSettings(); /* Applys all settings and saves them */ virtual void ApplySettings(bool bCheckForCommandLineOverrides) override; #pragma region Advanced Functions UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") /* Applys advanced settings. Like ray tracing, AA types and GI types */ void ApplyAdvancedSettings(); #pragma region Bloom UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") void SetBloom(bool Set); UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") bool ReturnBloom(); #pragma endregion #pragma region Motion Blur UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") void SetMotionBlur(bool Set); UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") bool ReturnMotionBlur(); #pragma endregion #pragma region Ray Tracing UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") void SetRayTracing(bool Set); UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") bool GetRayTracing(); #pragma region Shadows UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") void SetShadowType(EShadowsType Set); UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") EShadowsType GetShadowType(); #pragma endregion #pragma region Ambient Occlusion UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") void SetAmbientOcclusionType(EAmbientOcclusionType Set); UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") EAmbientOcclusionType GetAmbientOcclusionType(); #pragma endregion #pragma region Reflections UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") void SetReflectionType(EReflectionsType Set); UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") EReflectionsType GetReflectionType(); #pragma endregion #pragma region Translucency UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") void SetTranslucencyType(ETranslucencyType Set); UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") ETranslucencyType GetTranslucencyType(); #pragma endregion #pragma region Global Illumination UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") void SetGlobalIlluminationType(EGlobalIlluminationType Set); UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") EGlobalIlluminationType GetGlobalIlluminationType(); #pragma region SSGI UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") void SetSSGIQuality(int32 Set); UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") int32 GetSSGIQuality(); #pragma endregion #pragma region Ray Traced GI UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") void SetRTGIType(ERayTracingGlobalIlluminationType Set); UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") ERayTracingGlobalIlluminationType GetRTGIType(); #pragma endregion #pragma region Volumetric Lighting UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") void SetVolumetricLighting(bool Set); UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") bool GetVolumetricLighting(); #pragma endregion #pragma endregion #pragma region RAPI UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") /* Sets the rendering API. REQUIRES CUSTOM LAUNCHER PROGRAM AND INI PARSER! @param int32 Set: What to set the value to. (0 = DX10, 1 = DX11, 2 = DX12, 3 = Vulkan, 4 = OpenGL) */ void SetRAPI(int32 Set); UFUNCTION(BlueprintCallable, Category = "Journey Framework|Main Menu System|Custom Game User Settings") /* Returns the current value of RendAPI. @returns int32 RendAPI: 0 = DX10, 1 = DX11, 2 = DX12, 3 = Vulkan, 4 = OpenGL */ int32 GetRAPI(); #pragma endregion #pragma endregion protected: #pragma region Advanced Visual Variables #pragma region Quality UPROPERTY(Config, EditAnywhere, BlueprintReadWrite) bool bMotionBlur; UPROPERTY(Config, EditAnywhere, BlueprintReadWrite) bool bDynamicResolution; UPROPERTY(Config, EditAnywhere, BlueprintReadWrite) bool bEnableBloom; UPROPERTY(Config, EditAnywhere, BlueprintReadWrite) bool bVolumetricLighting; UPROPERTY(Config, EditAnywhere, BlueprintReadWrite) bool bRayTracing; UPROPERTY(Config, EditAnywhere, BlueprintReadWrite) int32 DLSSQuality; UPROPERTY(Config, EditAnywhere, BlueprintReadWrite) int32 ScreenSpaceGIQuality; #pragma endregion #pragma region Type UPROPERTY(Config, EditAnywhere, BlueprintReadWrite) EShadowsType ShadowsType; UPROPERTY(Config, EditAnywhere, BlueprintReadWrite) EReflectionsType ReflectionsType; UPROPERTY(Config, EditAnywhere, BlueprintReadWrite) ETranslucencyType TranslucencyType; UPROPERTY(Config, EditAnywhere, BlueprintReadWrite) EAmbientOcclusionType AmbientOcclusionType; UPROPERTY(Config, EditAnywhere, BlueprintReadWrite) EGlobalIlluminationType GIType; UPROPERTY(Config, EditAnywhere, BlueprintReadWrite) ERayTracingGlobalIlluminationType RTGIType; UPROPERTY(Config, EditAnywhere, BlueprintReadWrite) int32 RendAPI; #pragma endregion #pragma endregion #pragma region Sensitivity Variables UPROPERTY(Config) float XBaseSentitivity; UPROPERTY(Config) float YBaseSensitivity; #pragma endregion #pragma region Sound UPROPERTY(Config, EditAnywhere, BlueprintReadWrite) float MasterVolume; #pragma endregion }; I will be happy to provide more info if necessary.