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

Function xAnimFileNewBilinear

src/SB/Core/x/xAnim.cpp:483–556  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

481}
482
483xAnimFile* xAnimFileNewBilinear(void** rawData, const char* name, U32 flags, xAnimFile** linkedList,
484 U32 numX, U32 numY)
485{
486 xAnimFile* afile;
487 if (gxAnimUseGrowAlloc)
488 {
489 afile = (xAnimFile*)xMemGrowAlloc(gActiveHeap, numX * numY * 4 + sizeof(xAnimFile));
490 }
491 else
492 {
493 afile = (xAnimFile*)xMemAlloc(gActiveHeap, numX * numY * 4 + sizeof(xAnimFile), 0);
494 }
495
496 if (numX > 1 || numY > 1)
497 {
498 flags |= 0x4000;
499 }
500
501 if (**(U32**)rawData == 'QSPM')
502 {
503 flags |= 0x8000;
504 }
505
506 if (linkedList != NULL)
507 {
508 afile->Next = *linkedList;
509 *linkedList = afile;
510 }
511 else
512 {
513 afile->Next = NULL;
514 }
515
516 afile->RawData = (void**)&afile[1];
517 for (S32 i = 0; i < (S32)numX * (S32)numY; ++i)
518 {
519 afile->RawData[i] = rawData[i];
520 }
521
522 afile->Name = name;
523 afile->ID = xStrHash(name);
524 afile->FileFlags = flags;
525
526 F32 dur;
527 if (afile->FileFlags & 0x2000)
528 {
529 if (afile->FileFlags & 0x8000)
530 {
531 dur = xMorphSeqDuration(*(xMorphSeqFile**)afile->RawData);
532 }
533 else
534 {
535 dur = iAnimDuration(*afile->RawData);
536 }
537 dur = dur * 2.0f;
538 }
539 else if (afile->FileFlags & 0x8000)
540 {

Callers 2

xAnimFileNewFunction · 0.70
ATBL_ReadFunction · 0.50

Calls 6

xMorphSeqDurationFunction · 0.85
iAnimDurationFunction · 0.85
iAnimBoneCountFunction · 0.85
xMemGrowAllocFunction · 0.70
xMemAllocFunction · 0.70
xStrHashFunction · 0.70

Tested by

no test coverage detected