MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / xAccelStop

Function xAccelStop

src/SB/Core/x/xMath.cpp:472–527  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

470}
471
472void xAccelStop(F32& x, F32& v, F32 a, F32 dt)
473{
474 S32 aa; // From DWARF, currently unused.
475 F32 oldv;
476
477 S32 var_r0;
478 S32 var_r5;
479
480 oldv = v;
481 if (!(oldv >= -0.00001f) || !(oldv <= 0.00001f))
482 {
483 if (oldv < 0.0f)
484 {
485 if (a > 0.0f)
486 {
487 a = -a;
488 }
489 }
490 else if (a < 0.0f)
491 {
492 a = -a;
493 }
494
495 v += -a * dt;
496
497 if (v < 0.0f)
498 {
499 var_r5 = 1;
500 }
501 else
502 {
503 var_r5 = 0;
504 }
505
506 if (oldv < 0.0f)
507 {
508 var_r0 = 1;
509 }
510 else
511 {
512 var_r0 = 0;
513 }
514
515 if (var_r0 == var_r5)
516 {
517 x += (-a * (0.5f * dt * dt)) + (oldv * dt);
518 return;
519 }
520
521 if (!(-a >= -0.00001f) || !(-a <= 0.00001f))
522 {
523 x -= (0.5f * oldv * oldv) / -a;
524 }
525 v = 0.0f;
526 }
527}
528
529F32 xFuncPiece_Eval(xFuncPiece* func, F32 param, xFuncPiece** iterator)

Callers 1

stopMethod · 0.50

Calls

no outgoing calls

Tested by

no test coverage detected