From 0bf5a9935dac9bb1b47be67fe73b74846a71176f Mon Sep 17 00:00:00 2001 From: George Marques Date: Sun, 14 Jan 2018 18:29:49 -0200 Subject: [PATCH] Add a custom import plugin demo This is a direct port from the Godot 2.1 version of the demo. --- plugins/custom_import_plugin/import_plugin.gd | 63 +++++++++++++++++++ .../custom_import_plugin/material_import.gd | 13 ++++ plugins/custom_import_plugin/plugin.cfg | 7 +++ plugins/custom_import_plugin/test.mtxt | 1 + 4 files changed, 84 insertions(+) create mode 100644 plugins/custom_import_plugin/import_plugin.gd create mode 100644 plugins/custom_import_plugin/material_import.gd create mode 100644 plugins/custom_import_plugin/plugin.cfg create mode 100644 plugins/custom_import_plugin/test.mtxt diff --git a/plugins/custom_import_plugin/import_plugin.gd b/plugins/custom_import_plugin/import_plugin.gd new file mode 100644 index 00000000..ce719d9d --- /dev/null +++ b/plugins/custom_import_plugin/import_plugin.gd @@ -0,0 +1,63 @@ +tool +extends EditorImportPlugin + +enum Presets { PRESET_DEFAULT } + +func get_importer_name(): + return "demos.sillymaterial" + +func get_visible_name(): + return "Silly Material" + +func get_recognized_extensions(): + return ["mtxt"] + +func get_save_extension(): + return "res" + +func get_resource_type(): + return "Material" + +func get_preset_count(): + return 1 + +func get_preset_name(preset): + match preset: + PRESET_DEFAULT: return "Default" + _ : return "Unknown" + +func get_import_options(preset): + match preset: + PRESET_DEFAULT: + return [{ + "name": "use_red_anyway", + "default_value": false + }] + _: return [] + +func get_option_visibility(option, options): + return true + +func import(source_file, save_path, options, r_platform_variants, r_gen_files): + var file = File.new() + var err = file.open(source_file, File.READ) + if (err != OK): + return err + + var line = file.get_line() + + file.close() + + var channels = line.split(",") + if channels.size() != 3: + return ERR_PARSE_ERROR + + var color = Color8(int(channels[0]), int(channels[1]), int(channels[2])) + var material = SpatialMaterial.new() + + if options.use_red_anyway: + color = Color8(255, 0, 0) + + material.albedo_color = color + + return ResourceSaver.save("%s.%s" % [save_path, get_save_extension()], material) diff --git a/plugins/custom_import_plugin/material_import.gd b/plugins/custom_import_plugin/material_import.gd new file mode 100644 index 00000000..0f98a026 --- /dev/null +++ b/plugins/custom_import_plugin/material_import.gd @@ -0,0 +1,13 @@ +tool +extends EditorPlugin + +var import_plugin + +func _enter_tree(): + import_plugin = preload("import_plugin.gd").new() + + add_import_plugin(import_plugin) + +func _exit_tree(): + remove_import_plugin(import_plugin) + import_plugin = null diff --git a/plugins/custom_import_plugin/plugin.cfg b/plugins/custom_import_plugin/plugin.cfg new file mode 100644 index 00000000..cc36e53f --- /dev/null +++ b/plugins/custom_import_plugin/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="Silly Material Importer" +description="Imports a 3D Material from an external text file" +author="George Marques" +version="1.0" +script="material_import.gd" diff --git a/plugins/custom_import_plugin/test.mtxt b/plugins/custom_import_plugin/test.mtxt new file mode 100644 index 00000000..546ea2af --- /dev/null +++ b/plugins/custom_import_plugin/test.mtxt @@ -0,0 +1 @@ +0,0,255