78 lines
2.0 KiB
C
78 lines
2.0 KiB
C
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "CoreMinimal.h"
|
||
|
#include "GameFramework/CharacterMovementComponent.h"
|
||
|
#include "NativeGameplayTags.h"
|
||
|
#include "LyraCharacterMovementComponent.generated.h"
|
||
|
|
||
|
LYRAGAME_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_Gameplay_MovementStopped);
|
||
|
|
||
|
/**
|
||
|
* FLyraCharacterGroundInfo
|
||
|
*
|
||
|
* Information about the ground under the character. It only gets updated as needed.
|
||
|
*/
|
||
|
USTRUCT(BlueprintType)
|
||
|
struct FLyraCharacterGroundInfo
|
||
|
{
|
||
|
GENERATED_BODY()
|
||
|
|
||
|
FLyraCharacterGroundInfo()
|
||
|
: LastUpdateFrame(0)
|
||
|
, GroundDistance(0.0f)
|
||
|
{}
|
||
|
|
||
|
uint64 LastUpdateFrame;
|
||
|
|
||
|
UPROPERTY(BlueprintReadOnly)
|
||
|
FHitResult GroundHitResult;
|
||
|
|
||
|
UPROPERTY(BlueprintReadOnly)
|
||
|
float GroundDistance;
|
||
|
};
|
||
|
|
||
|
|
||
|
/**
|
||
|
* ULyraCharacterMovementComponent
|
||
|
*
|
||
|
* The base character movement component class used by this project.
|
||
|
*/
|
||
|
UCLASS(Config = Game)
|
||
|
class LYRAGAME_API ULyraCharacterMovementComponent : public UCharacterMovementComponent
|
||
|
{
|
||
|
GENERATED_BODY()
|
||
|
|
||
|
public:
|
||
|
|
||
|
ULyraCharacterMovementComponent(const FObjectInitializer& ObjectInitializer);
|
||
|
|
||
|
virtual void SimulateMovement(float DeltaTime) override;
|
||
|
|
||
|
virtual bool CanAttemptJump() const override;
|
||
|
|
||
|
// Returns the current ground info. Calling this will update the ground info if it's out of date.
|
||
|
UFUNCTION(BlueprintCallable, Category = "Lyra|CharacterMovement")
|
||
|
const FLyraCharacterGroundInfo& GetGroundInfo();
|
||
|
|
||
|
void SetReplicatedAcceleration(const FVector& InAcceleration);
|
||
|
|
||
|
//~UMovementComponent interface
|
||
|
virtual FRotator GetDeltaRotation(float DeltaTime) const override;
|
||
|
virtual float GetMaxSpeed() const override;
|
||
|
//~End of UMovementComponent interface
|
||
|
|
||
|
protected:
|
||
|
|
||
|
virtual void InitializeComponent() override;
|
||
|
|
||
|
protected:
|
||
|
|
||
|
// Cached ground info for the character. Do not access this directly! It's only updated when accessed via GetGroundInfo().
|
||
|
FLyraCharacterGroundInfo CachedGroundInfo;
|
||
|
|
||
|
UPROPERTY(Transient)
|
||
|
bool bHasReplicatedAcceleration = false;
|
||
|
};
|