| 720 | } |
| 721 | |
| 722 | void Collada::_parse_camera(XMLParser &p_parser) { |
| 723 | if (!(state.import_flags & IMPORT_FLAG_SCENE)) { |
| 724 | if (!p_parser.is_empty()) { |
| 725 | p_parser.skip_section(); |
| 726 | } |
| 727 | return; |
| 728 | } |
| 729 | |
| 730 | String id = p_parser.get_named_attribute_value("id"); |
| 731 | |
| 732 | state.camera_data_map[id] = CameraData(); |
| 733 | CameraData &camera = state.camera_data_map[id]; |
| 734 | |
| 735 | while (p_parser.read() == OK) { |
| 736 | if (p_parser.get_node_type() == XMLParser::NODE_ELEMENT) { |
| 737 | String name = p_parser.get_node_name(); |
| 738 | |
| 739 | if (name == "perspective") { |
| 740 | camera.mode = CameraData::MODE_PERSPECTIVE; |
| 741 | } else if (name == "orthographic") { |
| 742 | camera.mode = CameraData::MODE_ORTHOGONAL; |
| 743 | } else if (name == "xfov") { |
| 744 | p_parser.read(); |
| 745 | camera.perspective.x_fov = p_parser.get_node_data().to_float(); |
| 746 | |
| 747 | } else if (name == "yfov") { |
| 748 | p_parser.read(); |
| 749 | camera.perspective.y_fov = p_parser.get_node_data().to_float(); |
| 750 | } else if (name == "xmag") { |
| 751 | p_parser.read(); |
| 752 | camera.orthogonal.x_mag = p_parser.get_node_data().to_float(); |
| 753 | |
| 754 | } else if (name == "ymag") { |
| 755 | p_parser.read(); |
| 756 | camera.orthogonal.y_mag = p_parser.get_node_data().to_float(); |
| 757 | } else if (name == "aspect_ratio") { |
| 758 | p_parser.read(); |
| 759 | camera.aspect = p_parser.get_node_data().to_float(); |
| 760 | |
| 761 | } else if (name == "znear") { |
| 762 | p_parser.read(); |
| 763 | camera.z_near = p_parser.get_node_data().to_float(); |
| 764 | |
| 765 | } else if (name == "zfar") { |
| 766 | p_parser.read(); |
| 767 | camera.z_far = p_parser.get_node_data().to_float(); |
| 768 | } |
| 769 | |
| 770 | } else if (p_parser.get_node_type() == XMLParser::NODE_ELEMENT_END && p_parser.get_node_name() == "camera") { |
| 771 | break; //end of <asset> |
| 772 | } |
| 773 | } |
| 774 | |
| 775 | COLLADA_PRINT("Camera ID:" + id); |
| 776 | } |
| 777 | |
| 778 | void Collada::_parse_light(XMLParser &p_parser) { |
| 779 | if (!(state.import_flags & IMPORT_FLAG_SCENE)) { |
nothing calls this directly
no test coverage detected