| 65 | } |
| 66 | |
| 67 | void loadMaterialControlsFile(MaterialControlsContainer& controlsContainer, const Ogre::String& filename) |
| 68 | { |
| 69 | // Load material controls from config file |
| 70 | Ogre::ConfigFile cf; |
| 71 | |
| 72 | try |
| 73 | { |
| 74 | |
| 75 | cf.loadFromResourceSystem(filename, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, "\t;=", true); |
| 76 | |
| 77 | // Go through all sections & controls in the file |
| 78 | Ogre::String secName, typeName, materialName, dataString; |
| 79 | |
| 80 | Ogre::ConfigFile::SettingsBySection_::const_iterator seci; |
| 81 | for(seci = cf.getSettingsBySection().begin(); seci != cf.getSettingsBySection().end(); ++seci) { |
| 82 | secName = seci->first; |
| 83 | const Ogre::ConfigFile::SettingsMultiMap& settings = seci->second; |
| 84 | if (!secName.empty()) |
| 85 | { |
| 86 | materialName = cf.getSetting("material", secName); |
| 87 | |
| 88 | Ogre::MaterialPtr curMat = Ogre::MaterialManager::getSingleton().getByName(materialName); |
| 89 | curMat->load(); |
| 90 | Ogre::Technique * curTec = curMat->getBestTechnique(); |
| 91 | if (!curTec || !curTec->isSupported()) |
| 92 | { |
| 93 | continue; |
| 94 | } |
| 95 | |
| 96 | MaterialControls newMaaterialControls(secName, materialName); |
| 97 | controlsContainer.push_back(newMaaterialControls); |
| 98 | |
| 99 | size_t idx = controlsContainer.size() - 1; |
| 100 | |
| 101 | Ogre::ConfigFile::SettingsMultiMap::const_iterator i; |
| 102 | |
| 103 | for (i = settings.begin(); i != settings.end(); ++i) |
| 104 | { |
| 105 | typeName = i->first; |
| 106 | dataString = i->second; |
| 107 | if (typeName == "control") |
| 108 | controlsContainer[idx].addControl(dataString); |
| 109 | } |
| 110 | } |
| 111 | } |
| 112 | |
| 113 | Ogre::LogManager::getSingleton().logMessage( "Material Controls setup" ); |
| 114 | } |
| 115 | catch (Ogre::Exception& e) |
| 116 | { |
| 117 | // Guess the file didn't exist |
| 118 | } |
| 119 | } |
| 120 | |
| 121 | |
| 122 | void loadAllMaterialControlFiles(MaterialControlsContainer& controlsContainer) |
no test coverage detected