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]);
                }
            }

        }

    }

}