| 788 | } |
| 789 | |
| 790 | static void telemetryOpenMesh( const std::string& ext, const Mesh& mesh, const MeshLoadSettings& settings ) |
| 791 | { |
| 792 | if ( !settings.telemetrySignal ) |
| 793 | return; |
| 794 | |
| 795 | std::string signalString = "Open " + ext; |
| 796 | |
| 797 | if ( auto lv = mesh.points.size() ) // not lv = mesh.topology.lastValidVert(), since topology can be empty |
| 798 | { |
| 799 | signalString += " VP"; |
| 800 | if ( settings.normals && settings.normals->size() >= lv ) |
| 801 | signalString += 'N'; |
| 802 | if ( settings.colors && settings.colors->size() >= lv ) |
| 803 | signalString += 'C'; |
| 804 | if ( settings.uvCoords && settings.uvCoords->size() >= lv ) |
| 805 | signalString += "UV"; |
| 806 | } |
| 807 | |
| 808 | if ( auto lf = mesh.topology.lastValidFace() ) |
| 809 | { |
| 810 | signalString += " TRI"; |
| 811 | if ( settings.faceColors && settings.faceColors->size() >= lf ) |
| 812 | signalString += 'C'; |
| 813 | } |
| 814 | |
| 815 | if ( settings.texture && !settings.texture->pixels.empty() ) |
| 816 | signalString += " TEX"; |
| 817 | |
| 818 | if ( settings.skippedFaceCount && *settings.skippedFaceCount > 0 ) |
| 819 | signalString += " SKIPF"; |
| 820 | |
| 821 | if ( settings.duplicatedVertexCount && *settings.duplicatedVertexCount > 0 ) |
| 822 | signalString += " DUPV"; |
| 823 | |
| 824 | if ( settings.xf && *settings.xf != AffineXf3f{} ) |
| 825 | signalString += " XF"; |
| 826 | |
| 827 | TelemetrySignal( signalString ); |
| 828 | telemetryLogSize( mesh ); |
| 829 | } |
| 830 | |
| 831 | Expected<Mesh> fromAnySupportedFormat( const std::filesystem::path& file, const MeshLoadSettings& settings /*= {}*/ ) |
| 832 | { |
no test coverage detected