feat(hero): facade rework — inscription, medallions, motto band, banner lettering #39

Merged
zwitschi merged 93 commits from hero-facade-0.3.0 into main 2026-11-10 15:37:40 +01:00
77 changed files with 110 additions and 76 deletions
Showing only changes of commit 410d924403 - Show all commits

No files matched your search

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -47,6 +47,16 @@ AGigLineVehicle::AGigLineVehicle(const FObjectInitializer& ObjectInitializer)
{
PrimaryActorTick.bCanEverTick = true;
// Test: if disabling the movement component's tick stops the rise, the component is the writer.
if (FParse::Param(FCommandLine::Get(), TEXT("novehmover")))
{
if (UChaosVehicleMovementComponent* Mover = FindComponentByClass<UChaosVehicleMovementComponent>())
{
Mover->SetComponentTickEnabled(false);
Mover->Deactivate();
}
}
if (USkeletalMeshComponent* Body = GetMesh())
{
static ConstructorHelpers::FObjectFinder<USkeletalMesh> MeshFinder(
@@ -370,6 +380,30 @@ void AGigLineVehicle::Tick(float DeltaSeconds)
}
}
// Name what the body is actually inside. A single huge collision proxy somewhere in this map
// would explain a positional push at any height.
{
static bool bOverlapLogged = false;
if (!bOverlapLogged && SettleElapsed > 0.3f)
{
bOverlapLogged = true;
if (USkeletalMeshComponent* Body = GetMesh())
{
TArray<UPrimitiveComponent*> Overlaps;
Body->GetOverlappingComponents(Overlaps);
FString List;
for (const UPrimitiveComponent* Comp : Overlaps)
{
List += FString::Printf(TEXT("%s/%s "),
Comp->GetOwner() ? *Comp->GetOwner()->GetName() : TEXT("?"),
*Comp->GetName());
}
UE_LOG(LogTemp, Warning, TEXT("GigLine vehicle overlaps: %d [%s]"),
Overlaps.Num(), *List);
}
}
}
// Velocity profile: an impulse shows as a spike at t=0, a force as steady growth.
{
static float NextSample = 0.0f;