diff options
author | Juan Linietsky <reduzio@gmail.com> | 2017-09-20 20:59:19 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2017-09-20 21:04:20 -0300 |
commit | 423ca9bcaf4781abd62db47d6f232c279af72429 (patch) | |
tree | a610ea87af0313129fc27fa1f75f3d422eee697e /editor/import | |
parent | 71e4fae3a1fb8ab684f5366442e5325ebcb99d8d (diff) |
Fix import order, so scenes are imported after textures.
Also fix bugs when meshes are always generated.
Diffstat (limited to 'editor/import')
-rw-r--r-- | editor/import/editor_import_collada.cpp | 15 | ||||
-rw-r--r-- | editor/import/resource_importer_scene.cpp | 10 | ||||
-rw-r--r-- | editor/import/resource_importer_scene.h | 2 |
3 files changed, 22 insertions, 5 deletions
diff --git a/editor/import/editor_import_collada.cpp b/editor/import/editor_import_collada.cpp index b1991d755b..6ef1758363 100644 --- a/editor/import/editor_import_collada.cpp +++ b/editor/import/editor_import_collada.cpp @@ -381,6 +381,9 @@ Error ColladaImport::_create_material(const String &p_target) { String texfile = effect.get_texture_path(effect.diffuse.texture, collada); if (texfile != "") { + if (texfile.begins_with("/")) { + texfile = texfile.replace_first("/", "res://"); + } Ref<Texture> texture = ResourceLoader::load(texfile, "Texture"); if (texture.is_valid()) { @@ -402,6 +405,10 @@ Error ColladaImport::_create_material(const String &p_target) { String texfile = effect.get_texture_path(effect.specular.texture, collada); if (texfile != "") { + if (texfile.begins_with("/")) { + texfile = texfile.replace_first("/", "res://"); + } + Ref<Texture> texture = ResourceLoader::load(texfile, "Texture"); if (texture.is_valid()) { material->set_texture(SpatialMaterial::TEXTURE_METALLIC, texture); @@ -425,6 +432,10 @@ Error ColladaImport::_create_material(const String &p_target) { String texfile = effect.get_texture_path(effect.emission.texture, collada); if (texfile != "") { + if (texfile.begins_with("/")) { + texfile = texfile.replace_first("/", "res://"); + } + Ref<Texture> texture = ResourceLoader::load(texfile, "Texture"); if (texture.is_valid()) { @@ -451,6 +462,10 @@ Error ColladaImport::_create_material(const String &p_target) { String texfile = effect.get_texture_path(effect.bump.texture, collada); if (texfile != "") { + if (texfile.begins_with("/")) { + texfile = texfile.replace_first("/", "res://"); + } + Ref<Texture> texture = ResourceLoader::load(texfile, "Texture"); if (texture.is_valid()) { material->set_feature(SpatialMaterial::FEATURE_NORMAL_MAPPING, true); diff --git a/editor/import/resource_importer_scene.cpp b/editor/import/resource_importer_scene.cpp index b448ab8920..3b7da30e8f 100644 --- a/editor/import/resource_importer_scene.cpp +++ b/editor/import/resource_importer_scene.cpp @@ -114,7 +114,7 @@ bool ResourceImporterScene::get_option_visibility(const String &p_option, const } int ResourceImporterScene::get_preset_count() const { - return 6; + return PRESET_MAX; } String ResourceImporterScene::get_preset_name(int p_idx) const { @@ -954,10 +954,10 @@ void ResourceImporterScene::get_import_options(List<ImportOption> *r_options, in script_ext_hint += "*." + E->get(); } - bool materials_out = p_preset == PRESET_SEPARATE_MATERIALS || p_preset == PRESET_SEPARATE_MESHES_AND_MATERIALS || p_preset == PRESET_MULTIPLE_SCENES_AND_MATERIALS || p_preset == PRESET_SEPARATE_MATERIALS_AND_ANIMATIONS || p_preset == PRESET_SEPARATE_MESHES_MATERIALS_AND_ANIMATIONS; - bool meshes_out = p_preset == PRESET_SEPARATE_MESHES || p_preset == PRESET_SEPARATE_MESHES_AND_MATERIALS || PRESET_SEPARATE_MESHES_AND_ANIMATIONS || PRESET_SEPARATE_MESHES_MATERIALS_AND_ANIMATIONS; + bool materials_out = p_preset == PRESET_SEPARATE_MATERIALS || p_preset == PRESET_SEPARATE_MESHES_AND_MATERIALS || p_preset == PRESET_MULTIPLE_SCENES_AND_MATERIALS || p_preset == PRESET_SEPERATE_MATERIALS_AND_ANIMATIONS || p_preset == PRESET_SEPERATE_MESHES_MATERIALS_AND_ANIMATIONS; + bool meshes_out = p_preset == PRESET_SEPARATE_MESHES || p_preset == PRESET_SEPARATE_MESHES_AND_MATERIALS || p_preset == PRESET_SEPARATE_MESHES_AND_ANIMATIONS || p_preset == PRESET_SEPERATE_MESHES_MATERIALS_AND_ANIMATIONS; bool scenes_out = p_preset == PRESET_MULTIPLE_SCENES || p_preset == PRESET_MULTIPLE_SCENES_AND_MATERIALS; - bool animations_out = p_preset == PRESET_SEPARATE_ANIMATIONS || PRESET_SEPARATE_MESHES_AND_ANIMATIONS || p_preset == PRESET_SEPARATE_MATERIALS_AND_ANIMATIONS || p_preset == PRESET_SEPARATE_MESHES_MATERIALS_AND_ANIMATIONS; + bool animations_out = p_preset == PRESET_SEPERATE_ANIMATIONS || p_preset == PRESET_SEPARATE_MESHES_AND_ANIMATIONS || p_preset == PRESET_SEPERATE_MATERIALS_AND_ANIMATIONS || p_preset == PRESET_SEPERATE_MESHES_MATERIALS_AND_ANIMATIONS; r_options->push_back(ImportOption(PropertyInfo(Variant::STRING, "nodes/custom_script", PROPERTY_HINT_FILE, script_ext_hint), "")); r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "nodes/storage", PROPERTY_HINT_ENUM, "Single Scene,Instanced Sub-Scenes"), scenes_out ? 1 : 0)); @@ -966,7 +966,7 @@ void ResourceImporterScene::get_import_options(List<ImportOption> *r_options, in r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "materials/keep_on_reimport"), materials_out ? true : false)); r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "meshes/compress"), true)); r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "meshes/ensure_tangents"), true)); - r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "meshes/storage", PROPERTY_HINT_ENUM, "Built-In,Files"), meshes_out ? true : false)); + r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "meshes/storage", PROPERTY_HINT_ENUM, "Built-In,Files"), meshes_out ? 1 : 0)); r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "external_files/store_in_subdir"), false)); r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "animation/import", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), true)); r_options->push_back(ImportOption(PropertyInfo(Variant::REAL, "animation/fps", PROPERTY_HINT_RANGE, "1,120,1"), 15)); diff --git a/editor/import/resource_importer_scene.h b/editor/import/resource_importer_scene.h index c3a66aa8b8..9c7e791719 100644 --- a/editor/import/resource_importer_scene.h +++ b/editor/import/resource_importer_scene.h @@ -96,6 +96,7 @@ class ResourceImporterScene : public ResourceImporter { PRESET_MULTIPLE_SCENES, PRESET_MULTIPLE_SCENES_AND_MATERIALS, + PRESET_MAX }; void _replace_owner(Node *p_node, Node *p_scene, Node *p_new_owner); @@ -118,6 +119,7 @@ public: virtual void get_import_options(List<ImportOption> *r_options, int p_preset = 0) const; virtual bool get_option_visibility(const String &p_option, const Map<StringName, Variant> &p_options) const; + virtual int get_import_order() const { return 100; } //after everything void _make_external_resources(Node *p_node, const String &p_base_path, bool p_make_animations, bool p_make_materials, bool p_keep_materials, bool p_make_meshes, Map<Ref<Animation>, Ref<Animation> > &p_animations, Map<Ref<Material>, Ref<Material> > &p_materials, Map<Ref<ArrayMesh>, Ref<ArrayMesh> > &p_meshes); |