diff --git a/Content/Input/Default_IMC.uasset b/Content/Input/Default_IMC.uasset index 8f7e89f..8b270a5 100644 Binary files a/Content/Input/Default_IMC.uasset and b/Content/Input/Default_IMC.uasset differ diff --git a/Content/Input/Look_IA.uasset b/Content/Input/Look_IA.uasset new file mode 100644 index 0000000..fb57211 Binary files /dev/null and b/Content/Input/Look_IA.uasset differ diff --git a/Content/Input/Move_IA.uasset b/Content/Input/Move_IA.uasset new file mode 100644 index 0000000..551e0e0 Binary files /dev/null and b/Content/Input/Move_IA.uasset differ diff --git a/Content/ProofOfConcept/DDIController.uasset b/Content/ProofOfConcept/DDIController.uasset index b741f3e..551ec75 100644 Binary files a/Content/ProofOfConcept/DDIController.uasset and b/Content/ProofOfConcept/DDIController.uasset differ diff --git a/Source/OpenConflict/PlayerCharacter/DDICharacter.cpp b/Source/OpenConflict/PlayerCharacter/DDICharacter.cpp index d6cc314..a713e7d 100644 --- a/Source/OpenConflict/PlayerCharacter/DDICharacter.cpp +++ b/Source/OpenConflict/PlayerCharacter/DDICharacter.cpp @@ -8,6 +8,10 @@ ADDICharacter::ADDICharacter() { // Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true; + CameraComponent = CreateDefaultSubobject(TEXT("CameraComponent")); + CameraComponent->SetupAttachment(GetMesh()); + CameraComponent->SetRelativeLocation(FVector(0.0f, 0.0f, 50.0f)); + CameraComponent->bUsePawnControlRotation = true; } @@ -25,10 +29,4 @@ void ADDICharacter::Tick(float DeltaTime) } -// Called to bind functionality to input -void ADDICharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) -{ - Super::SetupPlayerInputComponent(PlayerInputComponent); - -} diff --git a/Source/OpenConflict/PlayerCharacter/DDICharacter.h b/Source/OpenConflict/PlayerCharacter/DDICharacter.h index 3523c75..2172608 100644 --- a/Source/OpenConflict/PlayerCharacter/DDICharacter.h +++ b/Source/OpenConflict/PlayerCharacter/DDICharacter.h @@ -3,6 +3,7 @@ #pragma once #include "CoreMinimal.h" +#include "Camera/CameraComponent.h" #include "GameFramework/Character.h" #include "DDICharacter.generated.h" @@ -22,8 +23,7 @@ protected: public: // Called every frame virtual void Tick(float DeltaTime) override; - - // Called to bind functionality to input - virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; - + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera") + UCameraComponent* CameraComponent; }; diff --git a/Source/OpenConflict/PlayerCharacter/DDIPlayerController.cpp b/Source/OpenConflict/PlayerCharacter/DDIPlayerController.cpp index 69384e8..53b9fc5 100644 --- a/Source/OpenConflict/PlayerCharacter/DDIPlayerController.cpp +++ b/Source/OpenConflict/PlayerCharacter/DDIPlayerController.cpp @@ -2,11 +2,15 @@ #include "DDIPlayerController.h" - -#include "DDICharacter.h" +#include "EnhancedInputComponent.h" #include "EnhancedInputSubsystems.h" -#include "Engine/LocalPlayer.h" -#include "InputMappingContext.h" +#include "GameFramework/Character.h" + +ADDIPlayerController::ADDIPlayerController() +{ + +} + void ADDIPlayerController::BeginPlay() { @@ -24,7 +28,18 @@ void ADDIPlayerController::BeginPlay() void ADDIPlayerController::SetupInputComponent() { - // Super::SetupInputComponent(); + Super::SetupInputComponent(); + + if (UEnhancedInputComponent* Subsystem = Cast(InputComponent)) + { + if (MoveAction) Subsystem->BindAction(MoveAction, ETriggerEvent::Triggered, this, &ADDIPlayerController::Move); + if (LookAction) Subsystem->BindAction(LookAction, ETriggerEvent::Triggered, this, &ADDIPlayerController::Look); + if (JumpAction) + { + Subsystem->BindAction(JumpAction, ETriggerEvent::Started, this, &ADDIPlayerController::Jump); + Subsystem->BindAction(JumpAction, ETriggerEvent::Completed, this, &ADDIPlayerController::JumpEnd); + } + } } void ADDIPlayerController::OnPossess(APawn* InPawn) @@ -32,9 +47,54 @@ void ADDIPlayerController::OnPossess(APawn* InPawn) Super::OnPossess(InPawn); // is this a shooter character? - if (ADDICharacter* DDICharacter = Cast(InPawn)) + // if (ADDICharacter* DDICharacter = Cast(InPawn)) + // { + // // add the player tag + // DDICharacter->Tags.Add(PlayerPawnTag); + // } +} + +void ADDIPlayerController::Move(const FInputActionValue& Value) +{ + const FVector2D MovementVector = Value.Get(); + + if (APawn* ControlledPawn = GetPawn()) { - // add the player tag - DDICharacter->Tags.Add(PlayerPawnTag); + FRotator CameraRotation = GetControlRotation(); + FRotator YawRotation(0.f, CameraRotation.Yaw, 0.f); + + FVector ForwardDiection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X); + FVector RightDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y); + + ControlledPawn->AddMovementInput(ForwardDiection, MovementVector.Y); + ControlledPawn->AddMovementInput(RightDirection,MovementVector.X); + + } +} + +void ADDIPlayerController::Look(const FInputActionValue& Value) +{ + const FVector2D LookAxisVector = Value.Get(); + + if (APawn* ControlledPawn = GetPawn()) + { + AddYawInput(LookAxisVector.X); + AddPitchInput(LookAxisVector.Y); + } +} + +void ADDIPlayerController::Jump(const FInputActionValue& Value) +{ + if (ACharacter* character = GetCharacter()) + { + character->Jump(); + } +} + +void ADDIPlayerController::JumpEnd(const FInputActionValue& Value) +{ + if (ACharacter* character = GetCharacter()) + { + character->StopJumping(); } } \ No newline at end of file diff --git a/Source/OpenConflict/PlayerCharacter/DDIPlayerController.h b/Source/OpenConflict/PlayerCharacter/DDIPlayerController.h index 964cc19..5225244 100644 --- a/Source/OpenConflict/PlayerCharacter/DDIPlayerController.h +++ b/Source/OpenConflict/PlayerCharacter/DDIPlayerController.h @@ -3,6 +3,8 @@ #pragma once #include "CoreMinimal.h" +#include "EnhancedInputComponent.h" +#include "EnhancedInputSubsystems.h" #include "GameFramework/PlayerController.h" #include "DDIPlayerController.generated.h" @@ -21,9 +23,15 @@ private: protected: /*Properties*/ - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Shooter", meta = (AllowPrivateAccess = "true")) + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "INPUT", meta = (AllowPrivateAccess = "true")) TArray MappingContexts; - + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "INPUT", meta = (AllowPrivateAccess = "true")) + UInputAction* JumpAction; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "INPUT", meta = (AllowPrivateAccess = "true")) + UInputAction* MoveAction; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "INPUT", meta = (AllowPrivateAccess = "true")) + UInputAction* LookAction; UPROPERTY(EditAnywhere, Category="Shooter") FName PlayerPawnTag = FName("Player"); @@ -49,9 +57,14 @@ protected: virtual void SetupInputComponent() override; virtual void BeginPlay() override; virtual void OnPossess(APawn *InPawn) override; + void Move(const FInputActionValue& Value); + void Look(const FInputActionValue& Value); + void Jump(const FInputActionValue& Value); + void JumpEnd(const FInputActionValue& Value); public: /*Properties*/ /*Functions*/ + ADDIPlayerController(); };