MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / exportColladaMesh

Method exportColladaMesh

Engine/source/ts/collada/colladaUtils.cpp:1945–2125  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1943}
1944
1945void 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

Callers

nothing calls this directly

Calls 7

avarFunction · 0.85
dSprintfFunction · 0.85
NewElementMethod · 0.80
NewTextMethod · 0.80
SetAttributeMethod · 0.45
c_strMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected