void ModelDisplayState::PrepareStaticModels(ModelManager& modelManager, const ModelBlueprint& blueprint) { const std::vector<CompositeModel3d::StaticModelData>& vecStaticModels = m_spModel->StaticList(); // blueprint must contain same number of statics as composite models ATLASSERT(blueprint.m_vecStaticBlueprints.size() == vecStaticModels.size()); m_vecStaticModelTextures.resize(vecStaticModels.size()); for (size_t i=0, iMax=vecStaticModels.size(); i<iMax; i++) { // static model must contain only one material; get texture name of it CString cszTexture = vecStaticModels[i].m_spStatic->SingleMaterialTextureName(); cszTexture.Replace(_T(".\\"), _T("")); // add texture name prefix, if any const ModelBlueprint::StaticModelBlueprint& staticBlueprint = blueprint.m_vecStaticBlueprints[i]; if (!staticBlueprint.m_cszStaticTexturePrefix.IsEmpty()) cszTexture = staticBlueprint.m_cszStaticTexturePrefix + cszTexture; m_vecStaticModelTextures[i] = modelManager.LoadTexture(cszTexture); } }
void ModelDisplayState::PrepareAnimatedModelTextures(ModelManager& modelManager, const ModelBlueprint& blueprint) { AnimatedModel3d& model = *m_spModel->GetAnimated(); Data& data = model.GetData(); // prepare textures for each material m_vecMaterialTextureData.resize(data.m_vecMaterials.size()); ATLASSERT(blueprint.m_vecAnimatedMaterialTextures.size() == data.m_vecMaterials.size()); for (size_t i=0, iMax=m_vecMaterialTextureData.size(); i<iMax; i++) { const Material& material = data.m_vecMaterials[i]; CString cszTexture = material.cszTexture; cszTexture.Replace(_T(".\\"), _T("")); // use blueprint texture name, if set if (!blueprint.m_vecAnimatedMaterialTextures[i].IsEmpty()) cszTexture = blueprint.m_vecAnimatedMaterialTextures[i]; m_vecMaterialTextureData[i].m_spTexture = modelManager.LoadTexture(cszTexture); } }