#include "resource_importer_scene.h"
#include "core/error/error_macros.h"
#include "core/io/dir_access.h"
#include "core/io/resource_saver.h"
#include "core/object/script_language.h"
#include "editor/editor_interface.h"
#include "editor/editor_node.h"
#include "editor/editor_settings.h"
#include "editor/import/3d/scene_import_settings.h"
#include "scene/3d/importer_mesh_instance_3d.h"
#include "scene/3d/mesh_instance_3d.h"
#include "scene/3d/navigation_region_3d.h"
#include "scene/3d/occluder_instance_3d.h"
#include "scene/3d/physics/area_3d.h"
#include "scene/3d/physics/collision_shape_3d.h"
#include "scene/3d/physics/physics_body_3d.h"
#include "scene/3d/physics/static_body_3d.h"
#include "scene/3d/physics/vehicle_body_3d.h"
#include "scene/animation/animation_player.h"
#include "scene/resources/3d/box_shape_3d.h"
#include "scene/resources/3d/importer_mesh.h"
#include "scene/resources/3d/separation_ray_shape_3d.h"
#include "scene/resources/3d/sphere_shape_3d.h"
#include "scene/resources/3d/world_boundary_shape_3d.h"
#include "scene/resources/animation.h"
#include "scene/resources/bone_map.h"
#include "scene/resources/packed_scene.h"
#include "scene/resources/resource_format_text.h"
#include "scene/resources/surface_tool.h"
uint32_t EditorSceneFormatImporter::get_import_flags() const { … }
void EditorSceneFormatImporter::get_extensions(List<String> *r_extensions) const { … }
Node *EditorSceneFormatImporter::import_scene(const String &p_path, uint32_t p_flags, const HashMap<StringName, Variant> &p_options, List<String> *r_missing_deps, Error *r_err) { … }
void EditorSceneFormatImporter::get_import_options(const String &p_path, List<ResourceImporter::ImportOption> *r_options) { … }
Variant EditorSceneFormatImporter::get_option_visibility(const String &p_path, const String &p_scene_import_type, const String &p_option, const HashMap<StringName, Variant> &p_options) { … }
void EditorSceneFormatImporter::_bind_methods() { … }
void EditorScenePostImport::_bind_methods() { … }
Node *EditorScenePostImport::post_import(Node *p_scene) { … }
String EditorScenePostImport::get_source_file() const { … }
void EditorScenePostImport::init(const String &p_source_file) { … }
EditorScenePostImport::EditorScenePostImport() { … }
Variant EditorScenePostImportPlugin::get_option_value(const StringName &p_name) const { … }
void EditorScenePostImportPlugin::add_import_option(const String &p_name, const Variant &p_default_value) { … }
void EditorScenePostImportPlugin::add_import_option_advanced(Variant::Type p_type, const String &p_name, const Variant &p_default_value, PropertyHint p_hint, const String &p_hint_string, int p_usage_flags) { … }
void EditorScenePostImportPlugin::get_internal_import_options(InternalImportCategory p_category, List<ResourceImporter::ImportOption> *r_options) { … }
Variant EditorScenePostImportPlugin::get_internal_option_visibility(InternalImportCategory p_category, const String &p_scene_import_type, const String &p_option, const HashMap<StringName, Variant> &p_options) const { … }
Variant EditorScenePostImportPlugin::get_internal_option_update_view_required(InternalImportCategory p_category, const String &p_option, const HashMap<StringName, Variant> &p_options) const { … }
void EditorScenePostImportPlugin::internal_process(InternalImportCategory p_category, Node *p_base_scene, Node *p_node, Ref<Resource> p_resource, const Dictionary &p_options) { … }
void EditorScenePostImportPlugin::get_import_options(const String &p_path, List<ResourceImporter::ImportOption> *r_options) { … }
Variant EditorScenePostImportPlugin::get_option_visibility(const String &p_path, const String &p_scene_import_type, const String &p_option, const HashMap<StringName, Variant> &p_options) const { … }
void EditorScenePostImportPlugin::pre_process(Node *p_scene, const HashMap<StringName, Variant> &p_options) { … }
void EditorScenePostImportPlugin::post_process(Node *p_scene, const HashMap<StringName, Variant> &p_options) { … }
void EditorScenePostImportPlugin::_bind_methods() { … }
String ResourceImporterScene::get_importer_name() const { … }
String ResourceImporterScene::get_visible_name() const { … }
void ResourceImporterScene::get_recognized_extensions(List<String> *p_extensions) const { … }
String ResourceImporterScene::get_save_extension() const { … }
String ResourceImporterScene::get_resource_type() const { … }
int ResourceImporterScene::get_format_version() const { … }
bool ResourceImporterScene::get_option_visibility(const String &p_path, const String &p_option, const HashMap<StringName, Variant> &p_options) const { … }
int ResourceImporterScene::get_preset_count() const { … }
String ResourceImporterScene::get_preset_name(int p_idx) const { … }
void ResourceImporterScene::_pre_fix_global(Node *p_scene, const HashMap<StringName, Variant> &p_options) const { … }
static bool _teststr(const String &p_what, const String &p_str) { … }
static String _fixstr(const String &p_what, const String &p_str) { … }
static void _pre_gen_shape_list(Ref<ImporterMesh> &mesh, Vector<Ref<Shape3D>> &r_shape_list, bool p_convex) { … }
struct ScalableNodeCollection { … };
void _rescale_importer_mesh(Vector3 p_scale, Ref<ImporterMesh> p_mesh, bool is_shadow = false) { … }
void _rescale_skin(Vector3 p_scale, Ref<Skin> p_skin) { … }
void _rescale_animation(Vector3 p_scale, Ref<Animation> p_animation) { … }
void _apply_scale_to_scalable_node_collection(ScalableNodeCollection &p_collection, Vector3 p_scale) { … }
void _populate_scalable_nodes_collection(Node *p_node, ScalableNodeCollection &p_collection) { … }
void _apply_permanent_scale_to_descendants(Node *p_root_node, Vector3 p_scale) { … }
Node *ResourceImporterScene::_pre_fix_node(Node *p_node, Node *p_root, HashMap<Ref<ImporterMesh>, Vector<Ref<Shape3D>>> &r_collision_map, Pair<PackedVector3Array, PackedInt32Array> *r_occluder_arrays, List<Pair<NodePath, Node *>> &r_node_renames, const HashMap<StringName, Variant> &p_options) { … }
Node *ResourceImporterScene::_pre_fix_animations(Node *p_node, Node *p_root, const Dictionary &p_node_data, const Dictionary &p_animation_data, float p_animation_fps) { … }
Node *ResourceImporterScene::_post_fix_animations(Node *p_node, Node *p_root, const Dictionary &p_node_data, const Dictionary &p_animation_data, float p_animation_fps, bool p_remove_immutable_tracks) { … }
Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, HashMap<Ref<ImporterMesh>, Vector<Ref<Shape3D>>> &collision_map, Pair<PackedVector3Array, PackedInt32Array> &r_occluder_arrays, HashSet<Ref<ImporterMesh>> &r_scanned_meshes, const Dictionary &p_node_data, const Dictionary &p_material_data, const Dictionary &p_animation_data, float p_animation_fps, float p_applied_root_scale) { … }
Ref<Animation> ResourceImporterScene::_save_animation_to_file(Ref<Animation> anim, bool p_save_to_file, const String &p_save_to_path, bool p_keep_custom_tracks) { … }
void ResourceImporterScene::_create_slices(AnimationPlayer *ap, Ref<Animation> anim, const Array &p_slices, bool p_bake_all) { … }
void ResourceImporterScene::_optimize_animations(AnimationPlayer *anim, float p_max_vel_error, float p_max_ang_error, int p_prc_error) { … }
void ResourceImporterScene::_compress_animations(AnimationPlayer *anim, int p_page_size_kb) { … }
void ResourceImporterScene::get_internal_import_options(InternalImportCategory p_category, List<ImportOption> *r_options) const { … }
bool ResourceImporterScene::get_internal_option_visibility(InternalImportCategory p_category, const String &p_option, const HashMap<StringName, Variant> &p_options) const { … }
bool ResourceImporterScene::get_internal_option_update_view_required(InternalImportCategory p_category, const String &p_option, const HashMap<StringName, Variant> &p_options) const { … }
void ResourceImporterScene::get_import_options(const String &p_path, List<ImportOption> *r_options, int p_preset) const { … }
void ResourceImporterScene::handle_compatibility_options(HashMap<StringName, Variant> &p_import_params) const { … }
void ResourceImporterScene::_replace_owner(Node *p_node, Node *p_scene, Node *p_new_owner) { … }
Array ResourceImporterScene::_get_skinned_pose_transforms(ImporterMeshInstance3D *p_src_mesh_node) { … }
Node *ResourceImporterScene::_generate_meshes(Node *p_node, const Dictionary &p_mesh_data, bool p_generate_lods, bool p_create_shadow_meshes, LightBakeMode p_light_bake_mode, float p_lightmap_texel_size, const Vector<uint8_t> &p_src_lightmap_cache, Vector<Vector<uint8_t>> &r_lightmap_caches) { … }
void ResourceImporterScene::_add_shapes(Node *p_node, const Vector<Ref<Shape3D>> &p_shapes) { … }
void ResourceImporterScene::_copy_meta(Object *p_src_object, Object *p_dst_object) { … }
void ResourceImporterScene::_optimize_track_usage(AnimationPlayer *p_player, AnimationImportTracks *p_track_actions) { … }
void ResourceImporterScene::_generate_editor_preview_for_scene(const String &p_path, Node *p_scene) { … }
Node *ResourceImporterScene::pre_import(const String &p_source_file, const HashMap<StringName, Variant> &p_options) { … }
Error ResourceImporterScene::_check_resource_save_paths(const Dictionary &p_data) { … }
Error ResourceImporterScene::import(ResourceUID::ID p_source_id, const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata) { … }
ResourceImporterScene *ResourceImporterScene::scene_singleton = …;
ResourceImporterScene *ResourceImporterScene::animation_singleton = …;
Vector<Ref<EditorSceneFormatImporter>> ResourceImporterScene::scene_importers;
Vector<Ref<EditorScenePostImportPlugin>> ResourceImporterScene::post_importer_plugins;
bool ResourceImporterScene::has_advanced_options() const { … }
void ResourceImporterScene::show_advanced_options(const String &p_path) { … }
ResourceImporterScene::ResourceImporterScene(const String &p_scene_import_type, bool p_singleton) { … }
ResourceImporterScene::~ResourceImporterScene() { … }
void ResourceImporterScene::add_scene_importer(Ref<EditorSceneFormatImporter> p_importer, bool p_first_priority) { … }
void ResourceImporterScene::remove_post_importer_plugin(const Ref<EditorScenePostImportPlugin> &p_plugin) { … }
void ResourceImporterScene::add_post_importer_plugin(const Ref<EditorScenePostImportPlugin> &p_plugin, bool p_first_priority) { … }
void ResourceImporterScene::remove_scene_importer(Ref<EditorSceneFormatImporter> p_importer) { … }
void ResourceImporterScene::clean_up_importer_plugins() { … }
void ResourceImporterScene::get_scene_importer_extensions(List<String> *p_extensions) { … }
uint32_t EditorSceneFormatImporterESCN::get_import_flags() const { … }
void EditorSceneFormatImporterESCN::get_extensions(List<String> *r_extensions) const { … }
Node *EditorSceneFormatImporterESCN::import_scene(const String &p_path, uint32_t p_flags, const HashMap<StringName, Variant> &p_options, List<String> *r_missing_deps, Error *r_err) { … }