mirror of
https://github.com/godotengine/godot-demo-projects.git
synced 2026-01-04 23:10:08 +01:00
Merge pull request #192 from vnen/import-plugin
Add a proper import plugin demo
This commit is contained in:
63
plugins/custom_import_plugin/import_plugin.gd
Normal file
63
plugins/custom_import_plugin/import_plugin.gd
Normal file
@@ -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)
|
||||
@@ -1,24 +1,13 @@
|
||||
# A simple (and silly) material resource plugin. Allows you to make a really simple material
|
||||
# from a custom dock, that you can save and load, and apply to selected MeshInstances.
|
||||
#
|
||||
# SPECIAL NOTE: This technically should be using EditorImportPlugin and EditorExportPlugin
|
||||
# to handle the input and output of the silly material. However, currently you cannot export
|
||||
# custom resources in Godot, so instead we're using JSON files instead.
|
||||
# |
|
||||
# This example should be replaced when EditorImportPlugin and EditorExportPlugin are both
|
||||
# fully working and you can save custom resources.
|
||||
|
||||
tool
|
||||
extends EditorPlugin
|
||||
|
||||
var io_material_dialog;
|
||||
var import_plugin
|
||||
|
||||
func _enter_tree():
|
||||
|
||||
io_material_dialog = preload("res://addons/custom_import_plugin/Custom_material_dock.tscn").instance()
|
||||
io_material_dialog.editor_interface = get_editor_interface();
|
||||
|
||||
add_control_to_dock( DOCK_SLOT_LEFT_UL, io_material_dialog )
|
||||
import_plugin = preload("import_plugin.gd").new()
|
||||
|
||||
add_import_plugin(import_plugin)
|
||||
|
||||
func _exit_tree():
|
||||
remove_control_from_docks(io_material_dialog)
|
||||
remove_import_plugin(import_plugin)
|
||||
import_plugin = null
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
[plugin]
|
||||
|
||||
name="Silly Spatial Material Importer/Exporter"
|
||||
description="Imports and exports a 3D Material from an external text file"
|
||||
author="TwistedTwigleg"
|
||||
name="Silly Material Importer"
|
||||
description="Imports a 3D Material from an external text file"
|
||||
author="George Marques"
|
||||
version="1.0"
|
||||
script="material_import.gd"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1
plugins/custom_import_plugin/test.mtxt
Normal file
1
plugins/custom_import_plugin/test.mtxt
Normal file
@@ -0,0 +1 @@
|
||||
0,0,255
|
||||
24
plugins/custom_material_creator/material_import.gd
Normal file
24
plugins/custom_material_creator/material_import.gd
Normal file
@@ -0,0 +1,24 @@
|
||||
# A simple (and silly) material resource plugin. Allows you to make a really simple material
|
||||
# from a custom dock, that you can save and load, and apply to selected MeshInstances.
|
||||
#
|
||||
# SPECIAL NOTE: This technically should be using EditorImportPlugin and EditorExportPlugin
|
||||
# to handle the input and output of the silly material. However, currently you cannot export
|
||||
# custom resources in Godot, so instead we're using JSON files instead.
|
||||
# |
|
||||
# This example should be replaced when EditorImportPlugin and EditorExportPlugin are both
|
||||
# fully working and you can save custom resources.
|
||||
|
||||
tool
|
||||
extends EditorPlugin
|
||||
|
||||
var io_material_dialog;
|
||||
|
||||
func _enter_tree():
|
||||
|
||||
io_material_dialog = preload("res://addons/custom_import_plugin/Custom_material_dock.tscn").instance()
|
||||
io_material_dialog.editor_interface = get_editor_interface();
|
||||
|
||||
add_control_to_dock( DOCK_SLOT_LEFT_UL, io_material_dialog )
|
||||
|
||||
func _exit_tree():
|
||||
remove_control_from_docks(io_material_dialog)
|
||||
7
plugins/custom_material_creator/plugin.cfg
Normal file
7
plugins/custom_material_creator/plugin.cfg
Normal file
@@ -0,0 +1,7 @@
|
||||
[plugin]
|
||||
|
||||
name="Silly Spatial Material Creator"
|
||||
description="Loads and saves a 3D Material from an external text file"
|
||||
author="TwistedTwigleg"
|
||||
version="1.0"
|
||||
script="material_import.gd"
|
||||
Reference in New Issue
Block a user