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
22 changed files with 56 additions and 22 deletions
Showing only changes of commit 58095b6a33 - 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.
+25 -1
View File
@@ -233,8 +233,25 @@ void AGigLineVehicle::BeginPlay()
BodyComp->bHiddenInGame ? 1 : 0,
*BodyComp->Bounds.BoxExtent.ToString());
}
// Name the bones and check each setup against them: Chaos silently creates no wheel
// when a setup's bone is not on the mesh, which is how four setups produced zero
// wheels without a warning.
if (USkeletalMeshComponent* Body = GetMesh())
{
TArray<FName> Bones;
Body->GetBoneNames(Bones);
UE_LOG(LogTemp, Warning, TEXT("GigLine vehicle: %d bones, e.g. %s"),
Bones.Num(),
Bones.Num() > 0 ? *Bones[FMath::Min(1, Bones.Num() - 1)].ToString() : TEXT("none"));
for (const FChaosWheelSetup& Setup : Movement->WheelSetups)
{
UE_LOG(LogTemp, Warning, TEXT("GigLine vehicle: setup bone '%s' index %d"),
*Setup.BoneName.ToString(), Body->GetBoneIndex(Setup.BoneName));
}
}
UE_LOG(LogTemp, Warning,
TEXT("GigLine vehicle: %d wheel objects after register, torque %.0f"),
TEXT("GigLine vehicle: %d wheel objects at BeginPlay (wheels are created later, "
"with the physics state), torque %.0f"),
Movement->Wheels.Num(), Movement->EngineSetup.MaxTorque);
}
UE_LOG(LogTemp, Warning, TEXT("GigLine vehicle: spawned at (%.0f, %.0f, %.0f), %d wheel setups"),
@@ -285,6 +302,13 @@ void AGigLineVehicle::Tick(float DeltaSeconds)
if (!bSettleReported && SettleElapsed > 3.0f)
{
bSettleReported = true;
if (const UChaosWheeledVehicleMovementComponent* Wheeled =
Cast<UChaosWheeledVehicleMovementComponent>(GetVehicleMovementComponent()))
{
UE_LOG(LogTemp, Warning,
TEXT("GigLine vehicle: %d wheel objects once physics exists"),
Wheeled->Wheels.Num());
}
if (UWorld* World = GetWorld())
{
FHitResult Hit;
+10
View File
@@ -700,6 +700,16 @@ def build():
vehicle_origin = unreal.Vector(-12950.0, -900.0, 367.0)
vehicle_rotation = unreal.Rotator(pitch=0.0, yaw=0.0, roll=0.0)
# The physics pawn: Chaos needs it even while the visible car is a set of plain
# panels, because that is the component that owns the wheels and the movement.
vehicle_class = unreal.load_class(None, "/Script/GigLine.GigLineVehicle")
if vehicle_class:
pawn = spawn(vehicle_class, vehicle_origin, "Demo_Vehicle_Sedan")
log(f"staged: Demo_Vehicle_Sedan ({'ok' if pawn else 'FAILED'})")
else:
log("staged: Demo_Vehicle_Sedan skipped - class not found")
panel_systems = (
"SM_Vehicle_Body",
"SM_Vehicle_Trim",