ShaderProgram *MaterialManager::createProgramFromFile(String programPath) { OSFileEntry entry(programPath, OSFileEntry::TYPE_FILE); for(int m=0; m < shaderModules.size(); m++) { PolycodeShaderModule *shaderModule = shaderModules[m]; if(shaderModule->acceptsExtension(entry.extension)) { ShaderProgram *newProgram = shaderModule->createProgramFromFile(entry.extension, entry.fullPath); return newProgram; } } return NULL; }
void ResourceManager::parsePrograms(const String& dirPath, bool recursive) { vector<OSFileEntry> resourceDir; resourceDir = OSBasics::parseFolder(dirPath, false); for(int i=0; i < resourceDir.size(); i++) { if(resourceDir[i].type == OSFileEntry::TYPE_FILE) { for(int m=0; m < shaderModules.size(); m++) { PolycodeShaderModule *shaderModule = shaderModules[m]; if(shaderModule->acceptsExtension(resourceDir[i].extension)) { Resource *newProgram = shaderModule->createProgramFromFile(resourceDir[i].extension, resourceDir[i].fullPath); if(newProgram) { newProgram->setResourceName(resourceDir[i].name); newProgram->setResourcePath(resourceDir[i].fullPath); resources.push_back(newProgram); } } } } else { if(recursive) parsePrograms(dirPath+"/"+resourceDir[i].name, true); } } }