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

Method exportColladaScene

Engine/source/ts/collada/colladaUtils.cpp:2503–2622  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2501}
2502
2503void ColladaUtils::exportColladaScene(tinyxml2::XMLElement* rootNode, const String& meshName, const Vector<String>& matNames)
2504{
2505 tinyxml2::XMLDocument* doc = rootNode->GetDocument();
2506
2507 tinyxml2::XMLElement* libSceneNode = doc->NewElement("library_visual_scenes");
2508 rootNode->LinkEndChild(libSceneNode);
2509
2510 tinyxml2::XMLElement* visSceneNode = doc->NewElement("visual_scene");
2511 libSceneNode->LinkEndChild(visSceneNode);
2512 visSceneNode->SetAttribute("id", "RootNode");
2513 visSceneNode->SetAttribute("name", "RootNode");
2514
2515 tinyxml2::XMLElement* nodeNode = doc->NewElement("node");
2516 visSceneNode->LinkEndChild(nodeNode);
2517 nodeNode->SetAttribute("id", avar("%s", meshName.c_str()));
2518 nodeNode->SetAttribute("name", avar("%s", meshName.c_str()));
2519 nodeNode->SetAttribute("type", "NODE");
2520
2521 tinyxml2::XMLElement* instanceGeomNode = doc->NewElement("instance_geometry");
2522 nodeNode->LinkEndChild(instanceGeomNode);
2523 instanceGeomNode->SetAttribute("url", avar("#%s-mesh", meshName.c_str()));
2524 instanceGeomNode->SetAttribute("name", avar("%s", meshName.c_str()));
2525
2526 tinyxml2::XMLElement* bindMatNode = doc->NewElement("bind_material");
2527 instanceGeomNode->LinkEndChild(bindMatNode);
2528
2529 tinyxml2::XMLElement* techniqueNode = doc->NewElement("technique_common");
2530 bindMatNode->LinkEndChild(techniqueNode);
2531
2532 // Bind the materials
2533 for (U32 i = 0; i < matNames.size(); i++)
2534 {
2535 tinyxml2::XMLElement* instMatNode = doc->NewElement("instance_material");
2536 techniqueNode->LinkEndChild(instMatNode);
2537 instMatNode->SetAttribute("symbol", avar("%s-material", matNames[i].c_str()));
2538 instMatNode->SetAttribute("target", avar("#%s-material", matNames[i].c_str()));
2539 tinyxml2::XMLElement* bindVertexNode = doc->NewElement("bind_vertex_input");
2540 instMatNode->LinkEndChild(bindVertexNode);
2541 //bindVertexNode->SetAttribute("semantic", avar("%s-mesh-map-0", meshName.c_str()));
2542 bindVertexNode->SetAttribute("semantic", "UVMap");
2543 bindVertexNode->SetAttribute("input_semantic", "TEXCOORD");
2544 bindVertexNode->SetAttribute("input_set", "0");
2545 }
2546
2547 // Extra info useful for COLLADAMax importer (OpenCOLLADA)
2548 tinyxml2::XMLElement* extraInsGeoNode = doc->NewElement("extra");
2549 nodeNode->LinkEndChild(extraInsGeoNode);
2550
2551 tinyxml2::XMLElement* extraInsGeoTechNode = doc->NewElement("technique");
2552 extraInsGeoNode->LinkEndChild(extraInsGeoTechNode);
2553 extraInsGeoTechNode->SetAttribute("profile", "OpenCOLLADA");
2554
2555 tinyxml2::XMLElement* castShadowsNode = doc->NewElement("cast_shadows");
2556 extraInsGeoTechNode->LinkEndChild(castShadowsNode);
2557 castShadowsNode->SetAttribute("sid", "cast_shadows");
2558 castShadowsNode->SetAttribute("type", "bool");
2559
2560 tinyxml2::XMLText* castShadowsText = doc->NewText("1");

Callers

nothing calls this directly

Calls 10

avarFunction · 0.85
dSprintfFunction · 0.85
NewElementMethod · 0.80
NewTextMethod · 0.80
tryGetValueMethod · 0.80
SetAttributeMethod · 0.45
c_strMethod · 0.45
sizeMethod · 0.45
getMaterialMethod · 0.45
getNameMethod · 0.45

Tested by

no test coverage detected