void CModelWriterNode100_Model::calculateTexCoords(_In_ CMesh * pMesh) { nfUint32 nFaceCount = pMesh->getFaceCount(); nfUint32 nIndex; CMeshInformationHandler * pHandler = pMesh->getMeshInformationHandler(); if (pHandler) { CMeshInformation_TexCoords * pTexCoordInfo = dynamic_cast<CMeshInformation_TexCoords *> (pHandler->getInformationByType(0, emiTexCoords)); if (pTexCoordInfo) { for (nIndex = 0; nIndex < nFaceCount; nIndex++) { MESHINFORMATION_TEXCOORDS * pFaceData = (MESHINFORMATION_TEXCOORDS*)pTexCoordInfo->getFaceData(nIndex); if (pFaceData->m_TextureID != 0) { nfInt32 j; PModelWriter_TexCoordMapping pMapping = m_pTexCoordMappingContainer->findTexture(pFaceData->m_TextureID); if (pMapping.get() == nullptr) { pMapping = m_pTexCoordMappingContainer->addTexture(pFaceData->m_TextureID, generateOutputResourceID ()); } for (j = 0; j < 3; j++) { pMapping->registerTexCoords(pFaceData->m_vCoords[j].m_fields[0], pFaceData->m_vCoords[j].m_fields[1]); } } } } } }
_Ret_notnull_ CMeshInformation_NodeColors * CModelReaderNode100_Triangles::createNodeColorInformation() { CMeshInformationHandler * pMeshInformationHandler = m_pMesh->createMeshInformationHandler(); CMeshInformation * pInformation = pMeshInformationHandler->getInformation(emiNodeColors); CMeshInformation_NodeColors * pNodeColors = nullptr; if (pInformation) pNodeColors = dynamic_cast<CMeshInformation_NodeColors *> (pInformation); if (!pNodeColors) { PMeshInformation_NodeColors pNewMeshInformation = std::make_shared<CMeshInformation_NodeColors>(m_pMesh->getFaceCount()); pMeshInformationHandler->addInformation(pNewMeshInformation); pNodeColors = pNewMeshInformation.get(); } return pNodeColors; }
_Ret_notnull_ CMeshInformation_TexCoords * CModelReaderNode093_Triangles::createTexCoordInformation() { CMeshInformationHandler * pMeshInformationHandler = m_pMesh->createMeshInformationHandler(); CMeshInformation * pInformation = pMeshInformationHandler->getInformationByType(0, emiTexCoords); CMeshInformation_TexCoords * pTexCoords = nullptr; if (pInformation) pTexCoords = dynamic_cast<CMeshInformation_TexCoords *> (pInformation); if (!pTexCoords) { PMeshInformation_TexCoords pNewMeshInformation = std::make_shared<CMeshInformation_TexCoords>(m_pMesh->getFaceCount()); pMeshInformationHandler->addInformation(pNewMeshInformation); pTexCoords = pNewMeshInformation.get(); } return pTexCoords; }
void CModelWriterNode100_Model::calculateColors(_In_ CMesh * pMesh) { nfUint32 nFaceCount = pMesh->getFaceCount(); nfUint32 nIndex; CMeshInformationHandler * pHandler = pMesh->getMeshInformationHandler(); if (pHandler) { CMeshInformation_NodeColors * pNodeColorInfo = dynamic_cast<CMeshInformation_NodeColors *> (pHandler->getInformationByType(0, emiNodeColors)); if (pNodeColorInfo) { for (nIndex = 0; nIndex < nFaceCount; nIndex++) { MESHINFORMATION_NODECOLOR * pFaceData = (MESHINFORMATION_NODECOLOR*)pNodeColorInfo->getFaceData(nIndex); nfInt32 j; for (j = 0; j < 3; j++) { if (pFaceData->m_cColors[j] != 0) m_pColorMapping->registerColor(pFaceData->m_cColors[j]); } } } } }