This is my Actor Component header file
#pragma once
#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include "GameFramework/Character.h"
#include "GameFramework/CharacterMovementComponent.h"
#include "SprintCrouchMovement.generated.h"
UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class SURVIVALHORRORTUT_API USprintCrouchMovement : public UActorComponent
{
GENERATED_BODY()
public:
// Sets default values for this component's properties
USprintCrouchMovement();
void Initialize(ACharacter* Character);
protected:
// Called when the game starts
virtual void BeginPlay() override;
public:
// Called every frame
virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
private:
UPROPERTY(EditAnywhere)
float SprintSpeed = 800.0f;
UPROPERTY(EditAnywhere)
float WalkSpeed = 1200.0f;
};
Initialize Function Where the problem code is called, inside the ActorComponent.cpp
void USprintCrouchMovement::Initialize(ACharacter* Character)
{
UE_LOG(LogTemp, Warning, TEXT("SprintCrouchMovementInitailized"));
if (IsValid(Character))
{
UE_LOG(LogTemp, Warning, TEXT("We Found the Player Character"));
UCharacterMovementComponent* CharacterMovement = Character->GetCharacterMovement();
if (CharacterMovement)
{
UE_LOG(LogTemp, Warning, TEXT("We Found the Player Character Movement Component"));
UE_LOG(LogTemp, Warning, TEXT("Character Address: %p"), static_cast<void*>(Character));
UE_LOG(LogTemp, Warning, TEXT("Character Movement Address: %p"), static_cast<void*>(CharacterMovement));
//CharacterMovement->MaxWalkSpeed = WalkSpeed;
}
else
{
UE_LOG(LogTemp, Warning, TEXT("Failed to Initialize Walk Speed"));
}
}
}
And Where I am passing the character from in my PlayerCharacter.cpp
void AHG_PlayerCharacter::Initialize()
{
ACharacter* PlayerCharacter = GetWorld()->GetFirstPlayerController()->GetCharacter();
if (PlayerCharacter && PlayerCharacter->GetCharacterMovement())
{
UE_LOG(LogTemp, Warning, TEXT("Character Address: %p"), static_cast<void*>(PlayerCharacter));
UE_LOG(LogTemp, Warning, TEXT("Character Movement Address: %p"), static_cast<void*>(PlayerCharacter->GetCharacterMovement()));
SprintCrouchMovementComponent->Initialize(PlayerCharacter);
}
else
{
UE_LOG(LogTemp, Warning, TEXT("Failed to get the player character."));
}
if (IsValid(WidgetClass))
{
UE_LOG(LogTemp, Warning, TEXT("WidgetClassValid"))
MainHUDWidget = Cast<UMainHUDWidget>(CreateWidget(GetWorld(), WidgetClass));
if (MainHUDWidget)
{
UE_LOG(LogTemp, Warning, TEXT("AddedMainHUDWidget to Viewport"))
MainHUDWidget->AddToViewport();
}
}
}
I have confirmed that the addresses of the components match using UE_LOG and cannot figure out why this is crashing the engine. Any help would be greatly appreciated.