MCPcopy Create free account
hub / github.com/OpenNFS/OpenNFS / FreeFRD

Method FreeFRD

src/Loaders/nfs3_loader.cpp:713–780  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

711}
712
713void NFS3::FreeFRD(const std::shared_ptr<TRACK> &track) {
714 // Free FRD data
715 // TRKBLOCKs
716 for (uint32_t block_Idx = 0; block_Idx < track->nBlocks; block_Idx++) {
717 TRKBLOCK *trackBlock = &(track->trk[block_Idx]);
718 delete[]trackBlock->vert;
719 delete[]trackBlock->unknVertices;
720 delete[]trackBlock->posData;
721 delete[] trackBlock->polyData;
722 delete[] trackBlock->vroadData;
723 if (trackBlock->nXobj > 0) {
724 delete[]trackBlock->xobj;
725 }
726 if (trackBlock->nSoundsrc > 0) {
727 delete[]trackBlock->soundsrc;
728 }
729 if (trackBlock->nLightsrc > 0) {
730 delete[]trackBlock->lightsrc;
731 }
732 //delete trackBlock;
733 }
734 //delete []track->trk;
735
736 // POLYGONBLOCKs
737 for (uint32_t block_Idx = 0; block_Idx < track->nBlocks; block_Idx++) {
738 POLYGONBLOCK *p = &(track->poly[block_Idx]);
739 for (uint32_t j = 0; j < 7; j++) {
740 if (p->sz[j] != 0) {
741 free(p->poly[j]);
742 }
743 }
744 for (uint32_t obj_Idx = 0; obj_Idx < 4; obj_Idx++) {
745 OBJPOLYBLOCK *o = &(p->obj[obj_Idx]);
746 if (o->n1 > 0) {
747 delete[]o->types;
748 delete[]o->numpoly;
749 for (uint32_t k = 0; k < o->n2; k++) {
750 if (o->types[k] == 1) {
751 // free(o->poly[o->nobj]);
752 }
753 }
754 }
755 }
756 }
757
758 // XOBJBLOCKs
759 for (uint32_t xblock_Idx = 0; xblock_Idx <= 4 * track->nBlocks; xblock_Idx++) {
760 if (track->xobj[xblock_Idx].nobj > 0) {
761 delete[]track->xobj[xblock_Idx].obj;
762 }
763 for (uint32_t xobj_Idx = 0; xobj_Idx < track->xobj[xblock_Idx].nobj; xobj_Idx++) {
764 XOBJDATA *x = &(track->xobj[xblock_Idx].obj[xobj_Idx]);
765 if (x->crosstype == 3) { // animated objects
766 delete[]x->animData;
767 }
768 //delete[]x->vert;
769 delete[]x->unknVertices;
770 delete[]x->polyData;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected