Add Ground Zero terrain pipeline and playable assets

This commit is contained in:
2026-05-14 00:09:40 -07:00
parent 46d0e080b5
commit 6d25ff690d
77 changed files with 5770 additions and 84 deletions
@@ -0,0 +1,109 @@
// Copyright Pacificao. All Rights Reserved.
#if WITH_EDITOR && WITH_DEV_AUTOMATION_TESTS
#include "AgrarianEditorAutomationLibrary.h"
#include "HAL/PlatformTime.h"
#include "Misc/AutomationTest.h"
#include "Tests/AutomationEditorCommon.h"
namespace
{
constexpr const TCHAR* ShelterClassPath = TEXT("/Game/Agrarian/Blueprints/Structures/BP_PrimitiveShelter.BP_PrimitiveShelter_C");
constexpr const TCHAR* PersistenceTestSlot = TEXT("AgrarianAutomationPersistence");
class FAgrarianCreateBlankMapCommand final : public IAutomationLatentCommand
{
public:
explicit FAgrarianCreateBlankMapCommand(FAutomationTestBase* InTest)
: Test(InTest)
{
}
virtual bool Update() override
{
UWorld* EditorWorld = FAutomationEditorCommonUtils::CreateNewMap();
if (!EditorWorld && Test)
{
Test->AddError(TEXT("Could not create blank editor map for persistence subsystem test"));
}
return true;
}
private:
FAutomationTestBase* Test = nullptr;
};
class FAgrarianWaitSecondsCommand final : public IAutomationLatentCommand
{
public:
explicit FAgrarianWaitSecondsCommand(const double InWaitSeconds)
: EndTime(FPlatformTime::Seconds() + InWaitSeconds)
{
}
virtual bool Update() override
{
return FPlatformTime::Seconds() >= EndTime;
}
private:
double EndTime = 0.0;
};
class FAgrarianRunPersistenceSubsystemCommand final : public IAutomationLatentCommand
{
public:
explicit FAgrarianRunPersistenceSubsystemCommand(FAutomationTestBase* InTest)
: Test(InTest)
{
}
virtual bool Update() override
{
if (!Test)
{
return true;
}
UClass* ShelterClass = StaticLoadClass(AActor::StaticClass(), nullptr, ShelterClassPath);
if (!ShelterClass)
{
Test->AddError(FString::Printf(TEXT("Could not load shelter class: %s"), ShelterClassPath));
return true;
}
const FString Result = UAgrarianEditorAutomationLibrary::RunPersistenceSubsystemSmokeTest(ShelterClass, PersistenceTestSlot);
if (!Result.StartsWith(TEXT("PASS:")))
{
Test->AddError(Result);
return true;
}
Test->AddInfo(Result);
return true;
}
private:
FAutomationTestBase* Test = nullptr;
};
}
IMPLEMENT_SIMPLE_AUTOMATION_TEST(
FAgrarianPersistenceSubsystemAutomationTest,
"Agrarian.PersistenceSubsystem.LiveGameInstance",
EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter)
bool FAgrarianPersistenceSubsystemAutomationTest::RunTest(const FString& Parameters)
{
ADD_LATENT_AUTOMATION_COMMAND(FAgrarianCreateBlankMapCommand(this));
ADD_LATENT_AUTOMATION_COMMAND(FStartPIECommand(true));
ADD_LATENT_AUTOMATION_COMMAND(FAgrarianWaitSecondsCommand(1.0));
ADD_LATENT_AUTOMATION_COMMAND(FAgrarianRunPersistenceSubsystemCommand(this));
ADD_LATENT_AUTOMATION_COMMAND(FEndPlayMapCommand());
return true;
}
#endif