2022-04-12 15:55:39 -04:00
// Copyright Epic Games, Inc. All Rights Reserved.
# include "StateTreeReference.h"
# include "StateTree.h"
2022-05-10 10:15:17 -04:00
2022-08-29 14:47:43 -04:00
void FStateTreeReference : : SyncParametersToMatchStateTree ( FInstancedPropertyBag & ParametersToSync ) const
2022-04-12 15:55:39 -04:00
{
if ( StateTree = = nullptr )
{
2022-05-10 10:15:17 -04:00
ParametersToSync . Reset ( ) ;
2022-04-12 15:55:39 -04:00
}
2022-05-10 10:15:17 -04:00
else
2022-04-12 15:55:39 -04:00
{
2022-05-10 10:15:17 -04:00
ParametersToSync . MigrateToNewBagInstance ( StateTree - > GetDefaultParameters ( ) ) ;
2022-04-12 15:55:39 -04:00
}
2022-05-10 10:15:17 -04:00
}
2022-04-12 15:55:39 -04:00
2022-05-10 10:15:17 -04:00
bool FStateTreeReference : : RequiresParametersSync ( ) const
{
return ( StateTree = = nullptr & & Parameters . IsValid ( ) )
| | ( StateTree ! = nullptr & & StateTree - > GetDefaultParameters ( ) . GetPropertyBagStruct ( ) ! = Parameters . GetPropertyBagStruct ( ) ) ;
2022-04-12 15:55:39 -04:00
}
2022-08-29 14:47:43 -04:00
void FStateTreeReference : : ConditionallySyncParameters ( ) const
{
if ( RequiresParametersSync ( ) )
{
FStateTreeReference * NonConstThis = const_cast < FStateTreeReference * > ( this ) ;
NonConstThis - > SyncParameters ( ) ;
UE_LOG ( LogStateTree , Warning , TEXT ( " Parameters for '%s' stored in StateTreeReference were auto-fixed to be usable at runtime. " ) , * GetNameSafe ( StateTree ) ) ;
}
}