void MeshViewApp::loadConfig(const std::string& fileName, bool isReload) { try { if (fs::exists(fileName)) m_configFileName = fileName; else m_configFileName = getAssetPath(fileName).string(); m_fileMonitorConfig = FileMonitor::create(m_configFileName); Config cfg(m_configFileName); m_shaderFileName = cfg.getString("Shader", "FileName"); loadShader(m_shaderFileName); if (!isReload) { m_assimpLoader = AssimpLoader(getAssetPath(cfg.getString("Model", "FileName")), false); m_assimpLoader.setAnimation(0); m_assimpLoader.enableTextures(false); m_assimpLoader.enableSkinning(false); m_assimpLoader.enableAnimation(false); m_assimpLoader.enableMaterials(false); } cfg.setSection("Textures"); if(m_texDiffuse) m_texDiffuse = NULL; if (m_texNormal) m_texNormal = NULL; if (m_texSpecular) m_texSpecular = NULL; if(m_texAO) m_texAO = NULL; if(m_texEmissive) m_texEmissive = NULL; m_texDiffusePower = 1.0f; m_texNormalPower = 1.0f; m_texSpecularPower = 1.0f; m_texAOPower = 1.0f; m_texEmissivePower = 1.0f; m_diffuseEnabled = false; m_normalEnabled = false; m_specularEnabled = false; m_aoEnabled = false; m_emissiveEnabled = false; std::string diffuseFileName = cfg.getString("Diffuse"); if(diffuseFileName != std::string()) { m_texDiffuse = gl::Texture::create(loadImage(loadAsset(diffuseFileName))); m_texDiffusePower = cfg.getFloat("DiffusePower"); m_diffuseEnabled = true; } std::string normalFileName = cfg.getString("Normal"); if (normalFileName != std::string()) { m_texNormal = gl::Texture::create(loadImage(loadAsset(normalFileName))); m_texNormalPower = cfg.getFloat("NormalPower"); m_normalEnabled = true; } std::string specularFileName = cfg.getString("Specular"); if (specularFileName != std::string()) { m_texSpecular = gl::Texture::create(loadImage(loadAsset(specularFileName))); m_texSpecularPower = cfg.getFloat("SpecularPower"); m_specularEnabled = true; } std::string aoFileName = cfg.getString("AO"); if(aoFileName != std::string()) { m_texAO = gl::Texture::create(loadImage(loadAsset(aoFileName))); m_texAOPower = cfg.getFloat("AOPower"); m_aoEnabled = true; } std::string emissiveFileName = cfg.getString("Emissive"); if(emissiveFileName != std::string()) { m_texEmissive = gl::Texture::create(loadImage(loadAsset(emissiveFileName))); m_texEmissivePower = cfg.getFloat("EmissivePower"); m_emissiveEnabled = true; } cfg.setSection("Material"); m_matAmbient = cfg.getVec3f("Ambient"); m_matDiffuse = cfg.getVec3f("Diffuse"); m_matSpecular = cfg.getVec3f("Specular"); m_matShininess = cfg.getFloat("Shininess"); m_gamma = cfg.getFloat("Gamma"); } catch(const std::exception& e) { console() << "Failed to load assets:" << std::endl; console() << e.what(); } }