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

Function _xCameraUpdate

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

Source from the content-addressed store, hash-verified

470}
471
472static void _xCameraUpdate(xCamera* cam, F32 dt)
473// NONMATCH("https://decomp.me/scratch/2q6zO")
474{
475 if (!cam->tgt_mat)
476 return;
477
478 static F32 last_dt = 1.0f / 60;
479
480 xCam_worldtocyl(cam->dcur, cam->hcur, cam->pcur, cam->tgt_mat, &cam->mat.pos, cam->flags);
481
482 F32 wcvx = cam->mat.pos.x - cam->omat.pos.x;
483 F32 wcvy = cam->mat.pos.y - cam->omat.pos.y;
484 F32 wcvz = cam->mat.pos.z - cam->omat.pos.z;
485 F32 m = 1.0f / last_dt;
486 wcvx *= m;
487 wcvy *= m;
488 wcvz *= m;
489
490 cam->omat.pos = cam->mat.pos;
491
492 xCam_buildbasis(cam);
493
494 F32 dcv = wcvx * cam->mbasis.at.x + wcvz * cam->mbasis.at.z;
495 F32 hcv = wcvy;
496 F32 pcv = wcvx * cam->mbasis.right.x + wcvz * cam->mbasis.right.z;
497 wcvx *= dt;
498 wcvy *= dt;
499 wcvz *= dt;
500
501 cam->mat.pos.x += wcvx;
502 cam->mat.pos.y += wcvy;
503 cam->mat.pos.z += wcvz;
504
505 if (cam->flags & 0x1)
506 {
507 F32 tnext = cam->tmr - dt;
508 if (tnext <= 0.0f)
509 {
510 cam->flags &= ~0x1;
511 cam->tmr = 0.0f;
512 cam->omat.pos = cam->mat.pos;
513 }
514 else
515 {
516 F32 dtg = cam->dgoal - cam->dcur;
517 F32 htg = cam->hgoal - cam->hcur;
518 F32 ptg = (cam->dgoal + cam->dcur) * xDangleClamp(cam->pgoal - cam->pcur) * 0.5f;
519 F32 dsv, hsv, psv;
520 if (tnext <= cam->tm_dec)
521 {
522 F32 T_inv = 1.0f / cam->tmr;
523 dsv = (2.0f * dtg - dcv * dt) * T_inv;
524 hsv = (2.0f * htg - hcv * dt) * T_inv;
525 psv = (2.0f * ptg - pcv * dt) * T_inv;
526 }
527 else if (tnext <= cam->tm_acc)
528 {
529 F32 T_inv = 1.0f / (2.0f * cam->tmr - dt - cam->tm_dec);

Callers 1

xCameraUpdateFunction · 0.70

Calls 15

xCam_CorrectDFunction · 0.85
xCam_CorrectHFunction · 0.85
xCam_CorrectPFunction · 0.85
xCam_DampPFunction · 0.85
xMat3x3EulerFunction · 0.85
xCam_CorrectYawFunction · 0.85
xCam_CorrectPitchFunction · 0.85
xCam_CorrectRollFunction · 0.85
xQuatDiffFunction · 0.85
xQuatToAxisAngleFunction · 0.85
xVec3AddToFunction · 0.85
xMat3x3LookAtFunction · 0.85

Tested by

no test coverage detected