MCPcopy Create free account
hub / github.com/axmolengine/axmol / createMeshRendererNode

Method createMeshRendererNode

core/3d/MeshRenderer.cpp:373–448  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

371}
372
373MeshRenderer* 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 }

Callers

nothing calls this directly

Calls 15

createFunction · 0.85
getMeshIndexDataFunction · 0.85
getMaterialDataMethod · 0.80
setScaleZMethod · 0.80
addMeshMethod · 0.80
autoreleaseMethod · 0.80
genMaterialMethod · 0.80
setNameMethod · 0.45
emptyMethod · 0.45
setSkinMethod · 0.45
getTextureDataMethod · 0.45
getTextureMethod · 0.45

Tested by

no test coverage detected