Add placed actor persistence foundation

This commit is contained in:
2026-05-11 01:00:41 -07:00
parent e81138425b
commit 9a0a3608fb
7 changed files with 234 additions and 1 deletions
@@ -0,0 +1,44 @@
// Copyright Pacificao. All Rights Reserved.
#include "AgrarianPersistentActorComponent.h"
UAgrarianPersistentActorComponent::UAgrarianPersistentActorComponent()
{
PrimaryComponentTick.bCanEverTick = false;
}
bool UAgrarianPersistentActorComponent::IsSaveable() const
{
return ActorTypeId != NAME_None && GetOwner() != nullptr;
}
FAgrarianSavedWorldActor UAgrarianPersistentActorComponent::CaptureSaveState() const
{
FAgrarianSavedWorldActor SavedActor;
SavedActor.ActorTypeId = ActorTypeId;
SavedActor.StringState = StringState;
SavedActor.NumberState = NumberState;
if (bSaveTransform && GetOwner())
{
SavedActor.Transform = GetOwner()->GetActorTransform();
}
return SavedActor;
}
void UAgrarianPersistentActorComponent::ApplySaveState(const FAgrarianSavedWorldActor& SavedActor)
{
StringState = SavedActor.StringState;
NumberState = SavedActor.NumberState;
if (ActorTypeId == NAME_None)
{
ActorTypeId = SavedActor.ActorTypeId;
}
if (bSaveTransform && GetOwner())
{
GetOwner()->SetActorTransform(SavedActor.Transform);
}
}