From 1fdd6df6a95d2b03f2773360dea1fad62baad90b Mon Sep 17 00:00:00 2001 From: Alexei Gladkikh Date: Fri, 3 Nov 2023 20:33:15 +0300 Subject: [PATCH] #37 Added configurable console parameters --- Config/DefaultGame.ini | 9 +++- .../Blueprints/Game/BP_Cloud9Console.uasset | Bin 128434 -> 157131 bytes Source/Cloud9/Character/Cloud9Character.cpp | 11 ++-- Source/Cloud9/Character/Cloud9Character.h | 15 ------ Source/Cloud9/Cloud9.Build.cs | 1 + .../Cloud9/Game/Cloud9DeveloperSettings.cpp | 1 + Source/Cloud9/Game/Cloud9DeveloperSettings.h | 47 ++++++++++++++++++ Source/Cloud9/Game/Cloud9GameMode.cpp | 11 ++-- Source/Cloud9/Game/Cloud9GameMode.h | 10 +--- Source/Cloud9/Game/Cloud9PlayerController.cpp | 26 +++++++--- 10 files changed, 90 insertions(+), 41 deletions(-) create mode 100644 Source/Cloud9/Game/Cloud9DeveloperSettings.cpp create mode 100644 Source/Cloud9/Game/Cloud9DeveloperSettings.h diff --git a/Config/DefaultGame.ini b/Config/DefaultGame.ini index ffffe3d90..5a84013d5 100644 --- a/Config/DefaultGame.ini +++ b/Config/DefaultGame.ini @@ -5,9 +5,16 @@ ProjectName = Cloud9 [/Script/Cloud9.Cloud9Character] FixedCameraPitch = -45.0 FixedCameraDistance = 1500.0 -bIsDrawHitCursorLine = false [StartupActions] bAddPacks = True InsertPack = (PackSource="StarterContent.upack",PackName="StarterContent") +[/Script/Cloud9.Cloud9DeveloperSettings] +bIsDrawHitCursorLine = False +bIsDrawDeprojectedCursorLine = False +bIsShowMouseCursor = True +NetGraph = 0 +bIsShowMouseCursor=False +NetGraph=1 + diff --git a/Content/Blueprints/Game/BP_Cloud9Console.uasset b/Content/Blueprints/Game/BP_Cloud9Console.uasset index 591ce9bd928ae1695d26ac1fa34669f20b227b3b..b49e916c9c035e169b385d8b6566bff7f9036157 100644 GIT binary patch literal 157131 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

)Ii_yxilP- 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 z{Gg^y6M?tUz%TEFJ?O72X%C<(CharacterMovementComponentName)) { - bIsDrawHitCursorLine = false; - bIsDrawDeprojectedCursorLine = false; - bUseControllerRotationPitch = false; bUseControllerRotationYaw = false; bUseControllerRotationRoll = false; @@ -110,7 +109,9 @@ void ACloud9Character::SetViewDirection(const FHitResult& HitResult, bool bIsHit SetCursorIsHidden(false); } - if (bIsDrawHitCursorLine) + const auto Settings = UCloud9DeveloperSettings::GetCloud9DeveloperSettings(); + + if (Settings->bIsDrawHitCursorLine) { DrawDebugLine( GetWorld(), @@ -121,7 +122,7 @@ void ACloud9Character::SetViewDirection(const FHitResult& HitResult, bool bIsHit 0.0); } - if (bIsDrawDeprojectedCursorLine) + if (Settings->bIsDrawDeprojectedCursorLine) { FVector WorldLocation; FVector WorldDirection; diff --git a/Source/Cloud9/Character/Cloud9Character.h b/Source/Cloud9/Character/Cloud9Character.h index 5767875e1..c66fec461 100644 --- a/Source/Cloud9/Character/Cloud9Character.h +++ b/Source/Cloud9/Character/Cloud9Character.h @@ -61,21 +61,6 @@ class ACloud9Character : public ACharacter UPROPERTY(BlueprintReadOnly, Category=Character) uint32 bIsSneaking : 1; - // Debug section - - UFUNCTION(BlueprintCallable) - void SetIsDrawHitCursorLine(bool Value) { bIsDrawHitCursorLine = Value; } - - UFUNCTION(BlueprintCallable) - void SetIsDrawDeprojectedCursorLine(bool Value) { bIsDrawDeprojectedCursorLine = Value; } - -protected: - UPROPERTY(Config, BlueprintReadOnly, Category = Debug) - bool bIsDrawHitCursorLine; - - UPROPERTY(Config, BlueprintReadOnly, Category = Debug) - bool bIsDrawDeprojectedCursorLine; - private: UPROPERTY(EditDefaultsOnly) UMaterial* CursorDecal; diff --git a/Source/Cloud9/Cloud9.Build.cs b/Source/Cloud9/Cloud9.Build.cs index 52b06c1e9..1ad498aac 100644 --- a/Source/Cloud9/Cloud9.Build.cs +++ b/Source/Cloud9/Cloud9.Build.cs @@ -16,6 +16,7 @@ public Cloud9(ReadOnlyTargetRules Target) : base(Target) "InputCore", "HeadMountedDisplay", "NavigationSystem", + "DeveloperSettings", "AIModule", "Niagara" }); diff --git a/Source/Cloud9/Game/Cloud9DeveloperSettings.cpp b/Source/Cloud9/Game/Cloud9DeveloperSettings.cpp new file mode 100644 index 000000000..9da0ec927 --- /dev/null +++ b/Source/Cloud9/Game/Cloud9DeveloperSettings.cpp @@ -0,0 +1 @@ +#include "Cloud9DeveloperSettings.h" diff --git a/Source/Cloud9/Game/Cloud9DeveloperSettings.h b/Source/Cloud9/Game/Cloud9DeveloperSettings.h new file mode 100644 index 000000000..3fd6d84a4 --- /dev/null +++ b/Source/Cloud9/Game/Cloud9DeveloperSettings.h @@ -0,0 +1,47 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Cloud9/Cloud9.h" +#include "Cloud9DeveloperSettings.generated.h" + +UCLASS(Config=Game, defaultconfig, meta = (DisplayName="Save Game Settings")) +class CLOUD9_API UCloud9DeveloperSettings : public UDeveloperSettings +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintCallable, Category=Settings) + static const UCloud9DeveloperSettings* GetCloud9DeveloperSettings() + { + static auto bIsLoaded = false; + static const auto Settings = GetDefault(); + + if (!bIsLoaded) + { + UE_LOG(LogCloud9, Display, TEXT("IsDrawHitCursorLine: %d"), Settings->bIsShowMouseCursor); + UE_LOG(LogCloud9, Display, TEXT("IsDrawDeprojectedCursorLine: %d"), Settings->bIsDrawDeprojectedCursorLine); + UE_LOG(LogCloud9, Display, TEXT("IsShowMouseCursor: %d"), Settings->bIsShowMouseCursor); + UE_LOG(LogCloud9, Display, TEXT("NetGraph: %d"), Settings->NetGraph); + bIsLoaded = true; + } + + return Settings; + } + + UFUNCTION(BlueprintCallable) + void Save() { UpdateDefaultConfigFile(); } + + // Debug + + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Debug") + bool bIsDrawHitCursorLine; + + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Debug") + bool bIsDrawDeprojectedCursorLine; + + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Debug") + bool bIsShowMouseCursor; + + UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category = "Debug") + int NetGraph; +}; diff --git a/Source/Cloud9/Game/Cloud9GameMode.cpp b/Source/Cloud9/Game/Cloud9GameMode.cpp index c9f936531..b0c385ed2 100644 --- a/Source/Cloud9/Game/Cloud9GameMode.cpp +++ b/Source/Cloud9/Game/Cloud9GameMode.cpp @@ -1,4 +1,6 @@ #include "Cloud9GameMode.h" + +#include "Cloud9DeveloperSettings.h" #include "Cloud9PlayerController.h" #include "Cloud9/Character/Cloud9Character.h" #include "UObject/ConstructorHelpers.h" @@ -9,7 +11,6 @@ ACloud9GameMode::ACloud9GameMode() PrimaryActorTick.bStartWithTickEnabled = true; PlayerControllerClass = ACloud9PlayerController::StaticClass(); DefaultPawnClass = ACloud9Character::StaticClass(); - NetGraph = 1; } ACloud9Character* ACloud9GameMode::GetCharacter() const @@ -17,16 +18,16 @@ ACloud9Character* ACloud9GameMode::GetCharacter() const return Cast(GetWorld()->GetFirstPlayerController()->GetCharacter()); } -void ACloud9GameMode::SetNetGraph(int Value) { NetGraph = Value; } - void ACloud9GameMode::Tick(float DeltaSeconds) { Super::Tick(DeltaSeconds); - if (NetGraph > 0) + const auto Settings = UCloud9DeveloperSettings::GetCloud9DeveloperSettings(); + + if (Settings->NetGraph > 0) { const auto Fps = 1.0f / DeltaSeconds; - + const auto Location = GetCharacter()->GetActorLocation(); const auto Velocity = GetCharacter()->GetVelocity(); const auto Text = FString::Printf( diff --git a/Source/Cloud9/Game/Cloud9GameMode.h b/Source/Cloud9/Game/Cloud9GameMode.h index 2ba11dd37..539e9823c 100644 --- a/Source/Cloud9/Game/Cloud9GameMode.h +++ b/Source/Cloud9/Game/Cloud9GameMode.h @@ -6,6 +6,7 @@ #include "GameFramework/GameModeBase.h" #include "Cloud9GameMode.generated.h" +class UCloud9DeveloperSettings; class ACloud9Character; UCLASS(minimalapi) @@ -19,15 +20,6 @@ class ACloud9GameMode : public AGameModeBase UFUNCTION(BlueprintCallable) ACloud9Character* GetCharacter() const; - UFUNCTION(BlueprintCallable) - void SetNetGraph(int Value); - public: virtual void Tick(float DeltaSeconds) override; - -private: - int NetGraph; }; - - - diff --git a/Source/Cloud9/Game/Cloud9PlayerController.cpp b/Source/Cloud9/Game/Cloud9PlayerController.cpp index 51847fc04..3fdf279e6 100644 --- a/Source/Cloud9/Game/Cloud9PlayerController.cpp +++ b/Source/Cloud9/Game/Cloud9PlayerController.cpp @@ -1,5 +1,6 @@ #include "Cloud9PlayerController.h" +#include "Cloud9DeveloperSettings.h" #include "Cloud9KeyboardController.h" #include "Cloud9MouseController.h" #include "Cloud9/Console/Cloud9ConsoleComponent.h" @@ -11,7 +12,6 @@ const FName ACloud9PlayerController::MouseControllerName = TEXT("MouseController ACloud9PlayerController::ACloud9PlayerController() { - bShowMouseCursor = true; DefaultMouseCursor = EMouseCursor::Crosshairs; ConsoleComponent = CreateDefaultSubobject(ConsoleName); @@ -22,6 +22,9 @@ ACloud9PlayerController::ACloud9PlayerController() void ACloud9PlayerController::PlayerTick(float DeltaTime) { Super::PlayerTick(DeltaTime); + + const auto Settings = UCloud9DeveloperSettings::GetCloud9DeveloperSettings(); + bShowMouseCursor = Settings->bIsShowMouseCursor; } void ACloud9PlayerController::SetupInputComponent() @@ -30,7 +33,7 @@ void ACloud9PlayerController::SetupInputComponent() InputComponent->BindAxis("MoveForward", KeyboardController, &UCloud9KeyboardController::OnMoveForward); InputComponent->BindAxis("MoveRight", KeyboardController, &UCloud9KeyboardController::OnMoveRight); - + InputComponent->BindAction("Crouch", IE_Pressed, KeyboardController, &UCloud9KeyboardController::OnCrouchPressed); InputComponent->BindAction("Crouch", IE_Released, KeyboardController, &UCloud9KeyboardController::OnCrouchReleased); @@ -39,17 +42,26 @@ void ACloud9PlayerController::SetupInputComponent() InputComponent->BindAction("Jump", IE_Pressed, KeyboardController, &UCloud9KeyboardController::OnJumpPressed); InputComponent->BindAction("Jump", IE_Released, KeyboardController, &UCloud9KeyboardController::OnJumpReleased); - + InputComponent->BindAxis("CameraZoom", MouseController, &UCloud9MouseController::OnCameraZoom); - InputComponent->BindAction("CameraRotation", IE_Pressed, MouseController, &UCloud9MouseController::OnCameraRotationPressed); - InputComponent->BindAction("CameraRotation", IE_Released, MouseController, &UCloud9MouseController::OnCameraRotationReleased); + InputComponent->BindAction( + "CameraRotation", + IE_Pressed, + MouseController, + &UCloud9MouseController::OnCameraRotationPressed); + + InputComponent->BindAction( + "CameraRotation", + IE_Released, + MouseController, + &UCloud9MouseController::OnCameraRotationReleased); InputComponent->BindAction("Slot1", IE_Pressed, KeyboardController, &UCloud9KeyboardController::OnSlot1); InputComponent->BindAction("Slot2", IE_Pressed, KeyboardController, &UCloud9KeyboardController::OnSlot2); InputComponent->BindAction("Slot3", IE_Pressed, KeyboardController, &UCloud9KeyboardController::OnSlot3); InputComponent->BindAction("Slot4", IE_Pressed, KeyboardController, &UCloud9KeyboardController::OnSlot4); InputComponent->BindAction("Slot5", IE_Pressed, KeyboardController, &UCloud9KeyboardController::OnSlot5); - + InputComponent->BindAction("Reload", IE_Pressed, KeyboardController, &UCloud9KeyboardController::Reload); KeyboardController->OnMoveDelegate.AddDynamic(MouseController, &UCloud9MouseController::OnCharacterMove); @@ -60,7 +72,9 @@ bool ACloud9PlayerController::ProcessConsoleExec(const TCHAR* Cmd, FOutputDevice bool bHandled = Super::ProcessConsoleExec(Cmd, Ar, Executor); if (!bHandled && ConsoleComponent != nullptr) + { bHandled |= ConsoleComponent->ProcessConsoleExec(Cmd, Ar, Executor); + } return bHandled; }