MCPcopy Create free account
hub / github.com/Redot-Engine/redot-engine / _parse_param

Method _parse_param

editor/import/3d/collada.cpp:462–532  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

460}
461
462Variant Collada::_parse_param(XMLParser &p_parser) {
463 if (p_parser.is_empty()) {
464 return Variant();
465 }
466
467 String from = p_parser.get_node_name();
468 Variant data;
469
470 while (p_parser.read() == OK) {
471 if (p_parser.get_node_type() == XMLParser::NODE_ELEMENT) {
472 if (p_parser.get_node_name() == "float") {
473 p_parser.read();
474 if (p_parser.get_node_type() == XMLParser::NODE_TEXT) {
475 data = p_parser.get_node_data().to_float();
476 }
477 } else if (p_parser.get_node_name() == "float2") {
478 Vector<float> v2 = _read_float_array(p_parser);
479
480 if (v2.size() >= 2) {
481 data = Vector2(v2[0], v2[1]);
482 }
483 } else if (p_parser.get_node_name() == "float3") {
484 Vector<float> v3 = _read_float_array(p_parser);
485
486 if (v3.size() >= 3) {
487 data = Vector3(v3[0], v3[1], v3[2]);
488 }
489 } else if (p_parser.get_node_name() == "float4") {
490 Vector<float> v4 = _read_float_array(p_parser);
491
492 if (v4.size() >= 4) {
493 data = Color(v4[0], v4[1], v4[2], v4[3]);
494 }
495 } else if (p_parser.get_node_name() == "sampler2D") {
496 while (p_parser.read() == OK) {
497 if (p_parser.get_node_type() == XMLParser::NODE_ELEMENT) {
498 if (p_parser.get_node_name() == "source") {
499 p_parser.read();
500
501 if (p_parser.get_node_type() == XMLParser::NODE_TEXT) {
502 data = p_parser.get_node_data();
503 }
504 }
505 } else if (p_parser.get_node_type() == XMLParser::NODE_ELEMENT_END && p_parser.get_node_name() == "sampler2D") {
506 break;
507 }
508 }
509 } else if (p_parser.get_node_name() == "surface") {
510 while (p_parser.read() == OK) {
511 if (p_parser.get_node_type() == XMLParser::NODE_ELEMENT) {
512 if (p_parser.get_node_name() == "init_from") {
513 p_parser.read();
514
515 if (p_parser.get_node_type() == XMLParser::NODE_TEXT) {
516 data = p_parser.get_node_data();
517 }
518 }
519 } else if (p_parser.get_node_type() == XMLParser::NODE_ELEMENT_END && p_parser.get_node_name() == "surface") {

Callers

nothing calls this directly

Calls 11

to_floatMethod · 0.80
get_node_dataMethod · 0.80
sizeMethod · 0.65
VariantClass · 0.50
Vector2Function · 0.50
Vector3Function · 0.50
ColorClass · 0.50
is_emptyMethod · 0.45
get_node_nameMethod · 0.45
readMethod · 0.45
get_node_typeMethod · 0.45

Tested by

no test coverage detected