| 115 | } // namespace |
| 116 | |
| 117 | void ShaderNetworkAlgo::removeUnusedShaders( ShaderNetwork *network ) |
| 118 | { |
| 119 | std::unordered_set<InternedString> visited; |
| 120 | visitInputs( network, network->getOutput().shader, visited ); |
| 121 | |
| 122 | auto shaders = network->shaders(); |
| 123 | for( auto it = shaders.begin(); it != shaders.end(); ) |
| 124 | { |
| 125 | if( visited.find( it->first ) == visited.end() ) |
| 126 | { |
| 127 | it = network->removeShader( it ); |
| 128 | } |
| 129 | else |
| 130 | { |
| 131 | ++it; |
| 132 | } |
| 133 | } |
| 134 | } |
| 135 | |
| 136 | ////////////////////////////////////////////////////////////////////////// |
| 137 | // Component connection adapters |