test(vehicle): the body is genuinely dynamic, so the teleport is applied to a normal actor

The dynamics probe rules out the last structural explanation:

  simulate=1  instance=yes  profile=PhysicsActor

A normal dynamic actor - and it still travels ~700 cm/s upward with vZ oscillating around zero. So the
teleport is applied to a genuinely dynamic body, which is why not one of the force-shaped settings
(gravity, mass, penetration, spawn height) changed anything.

Recorded with it: the bisect plan for the next pass, because guessing at Chaos internals has stopped being
the cheap option. Spawn the pawn in ReviewMap's empty floor to separate asset from world, and spawn a stock
AWheeledVehiclePawn beside it to separate our setup from the engine's.

Pawn parked; captures unchanged.
This commit is contained in:
zwitschi committed 2026-11-09 21:58:37 +01:00
1 parent d1636f6986
commit 358673bcfc
78 files changed
+109 -77

No files matched your search

@@ -339,6 +339,26 @@ void AGigLineVehicle::Tick(float DeltaSeconds)
}
}
// Is the body actually dynamic? A kinematic body is teleported by whoever holds it and reports
// no velocity - exactly the profile measured - so this decides the next step.
{
static bool bDynamicsChecked = false;
if (!bDynamicsChecked && SettleElapsed > 0.2f)
{
bDynamicsChecked = true;
if (USkeletalMeshComponent* Body = GetMesh())
{
FBodyInstance* Instance = Body->GetBodyInstance();
UE_LOG(LogTemp, Warning,
TEXT("GigLine vehicle dynamic: simulate=%d instance=%s profile=%s"),
Body->IsSimulatingPhysics() ? 1 : 0,
Instance ? TEXT("yes") : TEXT("no"),
Body->GetCollisionProfileName().IsNone()
? TEXT("none") : *Body->GetCollisionProfileName().ToString());
}
}
}
// Velocity profile: an impulse shows as a spike at t=0, a force as steady growth.
{
static float NextSample = 0.0f;