Keep track of tick on landed was called

This commit is contained in:
Kevin Poretti 2023-11-20 22:17:55 -05:00
parent da392c03fb
commit d7920802cf
2 changed files with 20 additions and 1 deletions

View File

@ -117,6 +117,7 @@ void UFFStateMachineComponent::GoToState(UFFState* NewState, EFFStateFinishReaso
CurrentState->Exit(GetCurrentStateContext(), StateFinishReason); CurrentState->Exit(GetCurrentStateContext(), StateFinishReason);
TicksInState = 0; TicksInState = 0;
OnLandedTick = 0;
TickStateWasEntered = GetWorld()->GetGameState<AFFGameState>()->GetCurrentTick(); TickStateWasEntered = GetWorld()->GetGameState<AFFGameState>()->GetCurrentTick();
CurrentSubStateLabel = NAME_None; CurrentSubStateLabel = NAME_None;
NewState->Enter(GetCurrentStateContext()); NewState->Enter(GetCurrentStateContext());
@ -161,6 +162,8 @@ void UFFStateMachineComponent::Landed(const FHitResult& Hit)
{ {
check(CurrentState) check(CurrentState)
OnLandedTick = GetWorld()->GetGameState<AFFGameState>()->GetCurrentTick();
CurrentState->Landed(Hit, GetCurrentStateContext()); CurrentState->Landed(Hit, GetCurrentStateContext());
} }

View File

@ -104,6 +104,14 @@ public:
UFUNCTION(BlueprintPure) UFUNCTION(BlueprintPure)
FORCEINLINE int64 GetTickStateWasEntered() const { return TickStateWasEntered; } FORCEINLINE int64 GetTickStateWasEntered() const { return TickStateWasEntered; }
/**
* Returns the tick number which corresponds to when the On Landed event fired
*
* The tick number represents the ticks that have elapsed since the game began.
*/
UFUNCTION(BlueprintPure)
FORCEINLINE int64 GetOnLandedTick() const { return OnLandedTick; }
UFUNCTION(BlueprintPure) UFUNCTION(BlueprintPure)
const UFFState* GetCurrentState() const { return const_cast<UFFState*>(CurrentState); } const UFFState* GetCurrentState() const { return const_cast<UFFState*>(CurrentState); }
@ -158,12 +166,19 @@ protected:
int64 TicksInState; int64 TicksInState;
/** /**
* The tick number which corresponds to when this state was entered into. * The tick number which corresponds to when the current state was entered.
* *
* The tick number represents the ticks that have elapsed since the game began. * The tick number represents the ticks that have elapsed since the game began.
*/ */
int64 TickStateWasEntered; int64 TickStateWasEntered;
/**
* The tick number which corresponds to when the On Landed event was called for the current tick.
*
* The tick number represents the ticks that have elapsed since the game began.
*/
int64 OnLandedTick;
/** Current active state for this state machine */ /** Current active state for this state machine */
UPROPERTY() UPROPERTY()
UFFState* CurrentState; UFFState* CurrentState;
@ -171,6 +186,7 @@ protected:
/** Current SubState label or NAME_None if there is no SubState label set for the current state*/ /** Current SubState label or NAME_None if there is no SubState label set for the current state*/
FName CurrentSubStateLabel; FName CurrentSubStateLabel;
// TODO: should be a TMap
// States that have been added // States that have been added
UPROPERTY() UPROPERTY()
TArray<UFFState*> States; TArray<UFFState*> States;