| 706 | } |
| 707 | |
| 708 | void Course::loadModelData() |
| 709 | { |
| 710 | SYSDBG_SetHeapGroup("COURSE MODEL", nullptr); |
| 711 | void *courseModel = ResMgr::getPtr(ResMgr::mcCourseBmd); |
| 712 | if (courseModel) |
| 713 | { |
| 714 | J3DModelData *modelData = J3DModelLoaderDataBase::load(courseModel, 0x19220010); |
| 715 | ExModel::patchModelData(modelData); |
| 716 | mTexModel.setModelData(modelData); |
| 717 | ExModel::setFogInfo(modelData, mFogType, mFogStartZ, mFogEndZ, mFogNearZ, mFogFarZ, &mFogColor); |
| 718 | mTexModel.setLODBias(TexLODControl::getGeographyLODBias()); |
| 719 | |
| 720 | for (int i = 0; i < 3; i++) |
| 721 | { |
| 722 | void *texSRTAnm = ResMgr::getPtr(cCourseTexSRTAnmTable[i]); |
| 723 | if (texSRTAnm) |
| 724 | { |
| 725 | J3DAnmObjMaterial::setupTexSRTAnmData(&mTexSRTKey[i], modelData, texSRTAnm); |
| 726 | mTexSRTAnm[i].setExModel(&mTexModel); |
| 727 | mTexSRTAnm[i].attach(mTexSRTKey[i]); |
| 728 | } |
| 729 | } |
| 730 | |
| 731 | void *texPat = ResMgr::getPtr(ResMgr::mcCourseBtp); |
| 732 | if (texPat) |
| 733 | { |
| 734 | J3DAnmObjMaterial::setupTexPatternAnmData(&mTexPattern, modelData, texPat); |
| 735 | mTexPatAnm.setExModel(&mTexModel); |
| 736 | mTexPatAnm.attach(mTexPattern); |
| 737 | } |
| 738 | |
| 739 | for (int i = 0; i < 1; i++) |
| 740 | { |
| 741 | void *tevReg = ResMgr::getPtr(cCourseTevRegAnmTable[i]); |
| 742 | if (tevReg) |
| 743 | { |
| 744 | J3DAnmObjMaterial::setupTevRegAnmData(mTevRegKey, modelData, tevReg); |
| 745 | mTevRegAnm[i].setExModel(&mTexModel); |
| 746 | mTevRegAnm[i].attach(mTevRegKey[i]); |
| 747 | } |
| 748 | } |
| 749 | |
| 750 | modelData->newSharedDisplayList(0x40000); |
| 751 | smpCalcMaterial(modelData, modelData->getJointNodePointer(0), j3dDefaultMtx); |
| 752 | modelData->makeSharedDL(); |
| 753 | |
| 754 | mMatFlags = new u16[modelData->getMaterialNum() & 0xffff]; |
| 755 | for (u16 i = 0; i < modelData->getMaterialNum(); i++) |
| 756 | mMatFlags[i] = 0; |
| 757 | |
| 758 | mNormMatIDTable = new u32[modelData->getMaterialInitNum() & 0xffff]; |
| 759 | mHighMatIDTable = new u32[modelData->getMaterialInitNum() & 0xffff]; |
| 760 | |
| 761 | for (int i = 0; i < modelData->getMaterialInitNum(); i++) |
| 762 | { |
| 763 | mNormMatIDTable[i] = 0xffffffff; |
| 764 | mHighMatIDTable[i] = 0xffffffff; |
| 765 | } |
nothing calls this directly
no test coverage detected