| 460 | } |
| 461 | |
| 462 | Variant 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") { |
nothing calls this directly
no test coverage detected