Wreck sink (quadratic burial) + ldbr debris field -- the 1996 script completed
Answers "does the wreck fade away?": YES, by sinking. FUN_00456410 (the 1996 sink renderable) computes offsetY = rate * t^2; the hulk's authored rate is -0.025 -> the ~7-unit hulk is fully underground ~17s after the kill. The script also pairs the standing hulk with the LDBR strewn-debris field (12x13u flat scatter), parented together and sinking together. Also verified from the mesh data: BLHDBR (1537 verts -- more than the intact torso) IS the authored Blackhawk wreck: the classic standing-leg-in-rubble sculpt. The "just a leg standing there" report is the authentic art. (THRDBR -- the mesh the 1996 script hardcoded -- parses to ZERO vertices; more evidence the hardcode was an unfinished dev shortcut.) Implementation: SwapToWreck adds the ldbr piece; TickWreck applies the quadratic sink per frame (driven from the dead mech's UpdateDeathState), hides both pieces at burial and reports it so the wreck-smoke re-arm stops with the wreck. DPLStaticChildRenderable::SetOffsetTranslation added (Execute re-reads OrientationMatrix per frame -- same in-place idiom as SetDrawObj). Lifecycle verified live: kill -> 'blhdbr.bgf' + ldbr debris -> smoke re-arm @10s -> wreck buried @~17s -> smoke stops. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
c0fa6bf21a
commit
5236d4263a
@@ -955,8 +955,14 @@ void
|
||||
// The .PFX itself trickles 3 particles/sec for 10s; re-arming it on that
|
||||
// same cadence reads as a continuously burning wreck. The one-shot death
|
||||
// visuals (dnboom + skins) stay in the kill path.
|
||||
// The wreck hulk's quadratic SINK (the 1996 script's burial): the pieces
|
||||
// settle into the ground and are gone ~17s after the kill. While the
|
||||
// wreck is still visible, keep the death/rubble smoke plume alive on its
|
||||
// authored 10s window; once buried, the smoke stops with it.
|
||||
extern int BTWreckSinkTick(Entity *victim, float dt);
|
||||
int wreck_visible = BTWreckSinkTick(this, (float)dt);
|
||||
wreckSmokeTimer -= dt;
|
||||
if (wreckSmokeTimer <= 0.0f)
|
||||
if (wreck_visible && wreckSmokeTimer <= 0.0f)
|
||||
{
|
||||
wreckSmokeTimer = 10.0f; // DDTHSMK's release window
|
||||
extern void BTStartPfx(int effect_number, float x, float y, float z);
|
||||
|
||||
Reference in New Issue
Block a user