| 204 | } |
| 205 | |
| 206 | Material* MeshMaterial::clone() const |
| 207 | { |
| 208 | auto material = new MeshMaterial(); |
| 209 | |
| 210 | material->_renderState = _renderState; |
| 211 | |
| 212 | for (const auto& technique : _techniques) |
| 213 | { |
| 214 | auto t = technique->clone(); |
| 215 | t->setMaterial(material); |
| 216 | for (ssize_t i = 0; i < t->getPassCount(); i++) |
| 217 | { |
| 218 | t->getPassByIndex(i)->setTechnique(t); |
| 219 | } |
| 220 | material->_techniques.pushBack(t); |
| 221 | } |
| 222 | |
| 223 | // current technique |
| 224 | auto name = _currentTechnique->getName(); |
| 225 | material->_currentTechnique = material->getTechniqueByName(name); |
| 226 | material->_type = _type; |
| 227 | material->autorelease(); |
| 228 | |
| 229 | return material; |
| 230 | } |
| 231 | |
| 232 | MeshMaterial* MeshMaterial::createBuiltInMaterial(MaterialType type, bool skinned) |
| 233 | { |
no test coverage detected