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

Function xMat3x3Mul

src/SB/Core/x/xMath3.cpp:447–509  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

445}
446
447void xMat3x3Mul(xMat3x3* o, const xMat3x3* a, const xMat3x3* b)
448
449{
450 xMat3x3 temp;
451 xMat3x3* tp;
452 U32 usetemp;
453
454 if (o == a || o == b)
455 {
456 usetemp = 1;
457 }
458
459 if (usetemp != 0)
460 {
461 tp = &temp;
462 }
463 else
464 {
465 tp = o;
466 }
467
468 F32 arx = a->right.x;
469 F32 ary = a->right.y;
470 F32 arz = a->right.z;
471 F32 aux = a->up.x;
472 F32 auy = a->up.y;
473 F32 auz = a->up.z;
474 F32 aax = a->at.x;
475 F32 aay = a->at.y;
476 F32 aaz = a->at.z;
477
478 F32 brx = b->right.x;
479 F32 bry = b->right.y;
480 F32 brz = b->right.z;
481 F32 bux = b->up.x;
482 F32 buy = b->up.y;
483 F32 buz = b->up.z;
484 F32 bax = b->at.x;
485 //F32 bay = b->at.y;
486 F32 baz = b->at.z;
487
488 // Right
489 tp->right.x = arx * brx + ary * bux + arz * bax;
490 tp->right.y = arx * bry + ary * buy + arz * b->at.y;
491 tp->right.z = arx * brz + ary * buz + arz * baz;
492
493 // Up
494 tp->up.x = aux * brx + auy * bux + auz * bax;
495 tp->up.y = aux * bry + auy * buy + auz * b->at.y;
496 tp->up.z = aux * brz + auy * buz + auz * baz;
497
498 // At
499 tp->at.x = aax * brx + aay * bux + aaz * bax;
500 tp->at.y = aax * bry + aay * buy + aaz * b->at.y;
501 tp->at.z = aax * brz + aay * buz + aaz * baz;
502
503 tp->flags = 0;
504 if (usetemp != 0)

Callers 15

xEntDriveUpdateFunction · 0.70
xEntBoulder_UpdateFunction · 0.70
xMat4x3MulFunction · 0.70
xEntMotionResetFunction · 0.70
RotAddDeltaMethod · 0.50
PatrickGrabCBFunction · 0.50
TypData_RotMatApplyMethod · 0.50
Upd_ChuckBombMethod · 0.50
ReconChuckMethod · 0.50
ReconSlickOilMethod · 0.50
render_modelFunction · 0.50
xMat3x3MulRotCFunction · 0.50

Calls 1

xMat3x3CopyFunction · 0.85

Tested by

no test coverage detected