| 371 | } |
| 372 | |
| 373 | MeshRenderer* MeshRenderer::createMeshRendererNode(NodeData* nodedata, |
| 374 | ModelData* modeldata, |
| 375 | const MaterialDatas& materialdatas) |
| 376 | { |
| 377 | auto meshRenderer = new MeshRenderer(); |
| 378 | |
| 379 | meshRenderer->setName(nodedata->id); |
| 380 | auto mesh = Mesh::create(nodedata->id, getMeshIndexData(modeldata->subMeshId)); |
| 381 | |
| 382 | if (_skeleton && !modeldata->bones.empty()) |
| 383 | { |
| 384 | auto skin = MeshSkin::create(_skeleton, modeldata->bones, modeldata->invBindPose); |
| 385 | mesh->setSkin(skin); |
| 386 | } |
| 387 | |
| 388 | if (modeldata->materialId.empty() && !materialdatas.materials.empty()) |
| 389 | { |
| 390 | const NTextureData* textureData = materialdatas.materials[0].getTextureData(NTextureData::Usage::Diffuse); |
| 391 | setMeshTexture(mesh, textureData->filename); |
| 392 | } |
| 393 | else |
| 394 | { |
| 395 | const NMaterialData* materialData = materialdatas.getMaterialData(modeldata->materialId); |
| 396 | if (materialData) |
| 397 | { |
| 398 | const NTextureData* textureData = materialData->getTextureData(NTextureData::Usage::Diffuse); |
| 399 | if (textureData) |
| 400 | { |
| 401 | setMeshTexture(mesh, textureData->filename); |
| 402 | auto tex = mesh->getTexture(); |
| 403 | if (tex) |
| 404 | { |
| 405 | Texture2D::TexParams texParams; |
| 406 | texParams.minFilter = backend::SamplerFilter::LINEAR; |
| 407 | texParams.magFilter = backend::SamplerFilter::LINEAR; |
| 408 | texParams.sAddressMode = textureData->wrapS; |
| 409 | texParams.tAddressMode = textureData->wrapT; |
| 410 | tex->setTexParameters(texParams); |
| 411 | _transparentMaterialHint = |
| 412 | materialData->getTextureData(NTextureData::Usage::Transparency) != nullptr; |
| 413 | } |
| 414 | } |
| 415 | textureData = materialData->getTextureData(NTextureData::Usage::Normal); |
| 416 | if (textureData) |
| 417 | { |
| 418 | auto tex = setMeshTexture(mesh, textureData->filename, NTextureData::Usage::Normal); |
| 419 | if (tex) |
| 420 | { |
| 421 | Texture2D::TexParams texParams; |
| 422 | texParams.minFilter = backend::SamplerFilter::LINEAR; |
| 423 | texParams.magFilter = backend::SamplerFilter::LINEAR; |
| 424 | texParams.sAddressMode = textureData->wrapS; |
| 425 | texParams.tAddressMode = textureData->wrapT; |
| 426 | tex->setTexParameters(texParams); |
| 427 | } |
| 428 | } |
| 429 | } |
| 430 | } |
nothing calls this directly
no test coverage detected