RealtimeStyleTransferRuntime/Source/LyraGame/Character/LyraCharacterMovementCompon...

85 lines
2.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Engine/HitResult.h"
#include "GameFramework/CharacterMovementComponent.h"
#include "Math/Rotator.h"
#include "Math/UnrealMathSSE.h"
#include "NativeGameplayTags.h"
#include "UObject/UObjectGlobals.h"
#include "LyraCharacterMovementComponent.generated.h"
class UObject;
struct FFrame;
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;
};