Compare commits

...

4 Commits

9 changed files with 80 additions and 14 deletions

BIN
Content/Input/Actions/IA_Crouch.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Input/InputMappingContext.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Player/PlayerCharacter.uasset (Stored with Git LFS)

Binary file not shown.

View File

@ -5,6 +5,11 @@
#include <GameFramework/Character.h> #include <GameFramework/Character.h>
UNakatomiCMC::UNakatomiCMC(): Safe_bWantsToSprint(false)
{
NavAgentProps.bCanCrouch = true;
}
// Checks if we can combine the NewMove with the current move to save on data. // Checks if we can combine the NewMove with the current move to save on data.
// If all the data in a saved move is identical, if true, we cam tell the server to run the existing move instead. // If all the data in a saved move is identical, if true, we cam tell the server to run the existing move instead.
bool UNakatomiCMC::FSavedMove_Nakatomi::CanCombineWith(const FSavedMovePtr& NewMove, ACharacter* InCharacter, bool UNakatomiCMC::FSavedMove_Nakatomi::CanCombineWith(const FSavedMovePtr& NewMove, ACharacter* InCharacter,
@ -83,10 +88,6 @@ FNetworkPredictionData_Client* UNakatomiCMC::GetPredictionData_Client() const
return ClientPredictionData; return ClientPredictionData;
} }
UNakatomiCMC::UNakatomiCMC(): Safe_bWantsToSprint(false)
{
}
void UNakatomiCMC::UpdateFromCompressedFlags(uint8 Flags) void UNakatomiCMC::UpdateFromCompressedFlags(uint8 Flags)
{ {
Super::UpdateFromCompressedFlags(Flags); Super::UpdateFromCompressedFlags(Flags);
@ -119,4 +120,14 @@ void UNakatomiCMC::EnableSprint()
void UNakatomiCMC::DisableSprint() void UNakatomiCMC::DisableSprint()
{ {
Safe_bWantsToSprint = false; Safe_bWantsToSprint = false;
} }
void UNakatomiCMC::EnableCrouch()
{
bWantsToCrouch = true;
}
void UNakatomiCMC::DisableCrouch()
{
bWantsToCrouch = false;
}

View File

@ -57,4 +57,10 @@ public:
UFUNCTION(BlueprintCallable) UFUNCTION(BlueprintCallable)
void DisableSprint(); void DisableSprint();
UFUNCTION(BlueprintCallable)
void EnableCrouch();
UFUNCTION(BlueprintCallable)
void DisableCrouch();
}; };

View File

@ -25,6 +25,8 @@ void ANakatomiCharacter::BeginPlay()
Super::BeginPlay(); Super::BeginPlay();
SetInventoryToDefault(); SetInventoryToDefault();
NakatomiCMC = Cast<UNakatomiCMC>(GetCharacterMovement());
} }
// Called every frame // Called every frame
@ -237,6 +239,11 @@ void ANakatomiCharacter::PushThrowableToInventory(TSubclassOf<AThrowable> Throwa
} }
} }
UNakatomiCMC* ANakatomiCharacter::GetCharacterMovementComponent()
{
return NakatomiCMC;
}
void ANakatomiCharacter::CalculateHits(TArray<FHitResult>* hits) void ANakatomiCharacter::CalculateHits(TArray<FHitResult>* hits)
{ {
} }

View File

@ -104,6 +104,8 @@ public:
void PushThrowableToInventory(TSubclassOf<AThrowable> Throwable); void PushThrowableToInventory(TSubclassOf<AThrowable> Throwable);
UNakatomiCMC* GetCharacterMovementComponent();
protected: protected:
virtual void CalculateHits(TArray<FHitResult>* hits); virtual void CalculateHits(TArray<FHitResult>* hits);

View File

@ -187,6 +187,12 @@ void APlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputCom
{ {
Input->BindAction(PauseAction, ETriggerEvent::Completed, this, &APlayerCharacter::PauseCallback); Input->BindAction(PauseAction, ETriggerEvent::Completed, this, &APlayerCharacter::PauseCallback);
} }
if (CrouchAction)
{
Input->BindAction(CrouchAction, ETriggerEvent::Started, this, &APlayerCharacter::BeginCrouchCallback);
Input->BindAction(CrouchAction, ETriggerEvent::Completed, this, &APlayerCharacter::EndCrouchCallback);
}
} }
} }
@ -268,17 +274,21 @@ void APlayerCharacter::QuitCallback(const FInputActionInstance& Instance)
void APlayerCharacter::SetSprintingCallback(const FInputActionInstance& Instance) void APlayerCharacter::SetSprintingCallback(const FInputActionInstance& Instance)
{ {
if (NakatomiCMC) UNakatomiCMC* cmc = GetCharacterMovementComponent();
if (cmc)
{ {
NakatomiCMC->EnableSprint(); cmc->EnableSprint();
} }
} }
void APlayerCharacter::SetWalkingCallback(const FInputActionInstance& Instance) void APlayerCharacter::SetWalkingCallback(const FInputActionInstance& Instance)
{ {
if (NakatomiCMC) UNakatomiCMC* cmc = GetCharacterMovementComponent();
if (cmc)
{ {
NakatomiCMC->DisableSprint(); cmc->DisableSprint();
} }
} }
@ -536,6 +546,26 @@ void APlayerCharacter::PauseCallback(const FInputActionInstance& Instance)
} }
} }
void APlayerCharacter::BeginCrouchCallback(const FInputActionInstance& Instance)
{
UNakatomiCMC* cmc = GetCharacterMovementComponent();
if (cmc)
{
cmc->EnableCrouch();
}
}
void APlayerCharacter::EndCrouchCallback(const FInputActionInstance& Instance)
{
UNakatomiCMC* cmc = GetCharacterMovementComponent();
if (cmc)
{
cmc->DisableCrouch();
}
}
void APlayerCharacter::OnFire() void APlayerCharacter::OnFire()
{ {
if (!IsFiring || CurrentWeapon->GetAmmoCount() == 0) if (!IsFiring || CurrentWeapon->GetAmmoCount() == 0)
@ -684,4 +714,4 @@ AThrowable* APlayerCharacter::ThrowThrowable()
} }
return nullptr; return nullptr;
} }

View File

@ -64,6 +64,9 @@ public:
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
UInputAction* AimDownSightsAction; UInputAction* AimDownSightsAction;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
UInputAction* CrouchAction;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
TSoftObjectPtr<UInputMappingContext> InputMappingContext; TSoftObjectPtr<UInputMappingContext> InputMappingContext;
@ -174,6 +177,10 @@ public:
void EndAimDownSightsCallback(const FInputActionInstance& Instance); void EndAimDownSightsCallback(const FInputActionInstance& Instance);
void PauseCallback(const FInputActionInstance& Instance); void PauseCallback(const FInputActionInstance& Instance);
void BeginCrouchCallback(const FInputActionInstance& Instance);
void EndCrouchCallback(const FInputActionInstance& Instance);
virtual void OnFire() override; virtual void OnFire() override;