| 1943 | } |
| 1944 | |
| 1945 | void ColladaUtils::exportColladaMesh(tinyxml2::XMLElement* rootNode, const OptimizedPolyList& mesh, const String& meshName, const Vector<String>& matNames) |
| 1946 | { |
| 1947 | tinyxml2::XMLDocument* doc = rootNode->GetDocument(); |
| 1948 | |
| 1949 | tinyxml2::XMLElement* libGeomsNode = doc->NewElement("library_geometries"); |
| 1950 | rootNode->LinkEndChild(libGeomsNode); |
| 1951 | |
| 1952 | tinyxml2::XMLElement* geometryNode = doc->NewElement("geometry"); |
| 1953 | libGeomsNode->LinkEndChild(geometryNode); |
| 1954 | geometryNode->SetAttribute("id", avar("%s-mesh", meshName.c_str())); |
| 1955 | geometryNode->SetAttribute("name", avar("%s", meshName.c_str())); |
| 1956 | |
| 1957 | tinyxml2::XMLElement* meshNode = doc->NewElement("mesh"); |
| 1958 | geometryNode->LinkEndChild(meshNode); |
| 1959 | |
| 1960 | // Save out the vertices |
| 1961 | tinyxml2::XMLElement* vertsSourceNode = doc->NewElement("source"); |
| 1962 | meshNode->LinkEndChild(vertsSourceNode); |
| 1963 | vertsSourceNode->SetAttribute("id", avar("%s-mesh-positions", meshName.c_str())); |
| 1964 | |
| 1965 | tinyxml2::XMLElement* vertsNode = doc->NewElement("float_array"); |
| 1966 | vertsSourceNode->LinkEndChild(vertsNode); |
| 1967 | vertsNode->SetAttribute("id", avar("%s-mesh-positions-array", meshName.c_str())); |
| 1968 | vertsNode->SetAttribute("count", avar("%d", mesh.mPoints.size() * 3)); |
| 1969 | |
| 1970 | for (U32 i = 0; i < mesh.mPoints.size(); i++) |
| 1971 | { |
| 1972 | const Point3F& vert = mesh.mPoints[i]; |
| 1973 | |
| 1974 | tinyxml2::XMLText* vertText = doc->NewText(avar("%.4f %.4f %.4f ", vert.x, vert.y, vert.z)); |
| 1975 | vertsNode->LinkEndChild(vertText); |
| 1976 | } |
| 1977 | |
| 1978 | // Save the vertex accessor |
| 1979 | tinyxml2::XMLElement* vertsTechNode = doc->NewElement("technique_common"); |
| 1980 | vertsSourceNode->LinkEndChild(vertsTechNode); |
| 1981 | |
| 1982 | tinyxml2::XMLElement* vertsAccNode = doc->NewElement("accessor"); |
| 1983 | vertsTechNode->LinkEndChild(vertsAccNode); |
| 1984 | vertsAccNode->SetAttribute("source", avar("#%s-mesh-positions-array", meshName.c_str())); |
| 1985 | vertsAccNode->SetAttribute("count", avar("%d", mesh.mPoints.size())); |
| 1986 | vertsAccNode->SetAttribute("stride", "3"); |
| 1987 | |
| 1988 | tinyxml2::XMLElement* vertsAccXNode = doc->NewElement("param"); |
| 1989 | vertsAccNode->LinkEndChild(vertsAccXNode); |
| 1990 | vertsAccXNode->SetAttribute("name", "X"); |
| 1991 | vertsAccXNode->SetAttribute("type", "float"); |
| 1992 | |
| 1993 | tinyxml2::XMLElement* vertsAccYNode = doc->NewElement("param"); |
| 1994 | vertsAccNode->LinkEndChild(vertsAccYNode); |
| 1995 | vertsAccYNode->SetAttribute("name", "Y"); |
| 1996 | vertsAccYNode->SetAttribute("type", "float"); |
| 1997 | |
| 1998 | tinyxml2::XMLElement* vertsAccZNode = doc->NewElement("param"); |
| 1999 | vertsAccNode->LinkEndChild(vertsAccZNode); |
| 2000 | vertsAccZNode->SetAttribute("name", "Z"); |
| 2001 | vertsAccZNode->SetAttribute("type", "float"); |
| 2002 |
nothing calls this directly
no test coverage detected