//----------------------------------------------------------------------------- void MaterialManager::loadMaterial() { // Use temp material for reading, but then set the shared // material index later, so that these materials are not popped // addSharedMaterial(file_manager->getAssetChecked(FileManager::TEXTURE, "materials.xml", true)); std::string deprecated = file_manager->getAssetChecked(FileManager::TEXTURE, "deprecated/materials.xml"); if(deprecated.size()>0) addSharedMaterial(deprecated, true); // Save index of shared textures m_shared_material_index = (int)m_materials.size(); } // MaterialManager
GameComponentPtr MeshRenderComponent::clone() const noexcept { auto result = std::make_shared<MeshRenderComponent>(); result->setCastShadow(this->getCastShadow()); result->setReceiveShadow(this->getReceiveShadow()); result->setName(this->getName()); for (auto& it : this->getSharedMaterials()) { result->addMaterial(it); result->addSharedMaterial(it); } return result; }