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

Function zFragLoc_InitDir

src/SB/Game/zShrapnel.cpp:338–368  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

336}
337
338void zFragLoc_InitDir(zFragLocation* loc, xVec3* vec, xModelInstance* parent)
339{
340 switch ((loc->type) & 0xfffffffe)
341 {
342 case eFragLocBone:
343 xMat3x3RMulVec(vec, (xMat3x3*)parent->Mat, &loc->info.bone.offset);
344 break;
345 case eFragLocBoneLocal:
346 S32 index = loc->info.bone.index;
347 if (index >= parent->BoneCount)
348 {
349 index = 0;
350 }
351
352 if (index == 0)
353 {
354 xMat4x3Copy(&tmpMat, (xMat4x3*)parent->Mat);
355 xMat3x3RMulVec(vec, (xMat3x3*)parent->Mat, &loc->info.bone.offset);
356 }
357 else
358 {
359 xMat4x3 tmpMat;
360 xMat4x3Mul(&tmpMat, (xMat4x3*)(parent->Mat + index), (xMat4x3*)parent->Mat);
361 xMat3x3RMulVec(vec, (xMat3x3*)&tmpMat, &loc->info.bone.offset);
362 }
363 break;
364 case eFragLocTag:
365 iModelTagEval(parent->Data, &loc->info.tag, parent->Mat, vec);
366 break;
367 }
368}
369
370void zFrag_DefaultInit(zFrag* frag, zFragAsset* fasset)
371{

Callers 2

zFrag_ParticleManagerFunction · 0.70

Calls 4

xMat4x3CopyFunction · 0.85
xMat4x3MulFunction · 0.85
xMat3x3RMulVecFunction · 0.50
iModelTagEvalFunction · 0.50

Tested by

no test coverage detected