virtualx-engine/demos/plugins/custom_import_plugin/import_plugin.gd

82 lines
1.6 KiB
GDScript3
Raw Normal View History

tool
extends EditorImportPlugin
# Simple plugin that imports a text file with extension .mtxt
# which contains 3 integers in format R,G,B (0-255)
# (see example .mtxt in this folder)
# Imported file is converted to a material
var dialog = null
func get_name():
return "silly_material"
func get_visible_name():
return "Silly Material"
func import_dialog(path):
var md = null
if (path!=""):
md = ResourceLoader.load_import_metadata(path)
dialog.configure(self,path,md)
dialog.popup_centered()
func import(path,metadata):
assert(metadata.get_source_count() == 1)
var source = metadata.get_source_path(0)
var use_red_anyway = metadata.get_option("use_red_anyway")
var f = File.new()
var err = f.open(source,File.READ)
if (err!=OK):
return ERR_CANT_OPEN
var l = f.get_line()
f.close()
var channels = l.split(",")
if (channels.size()!=3):
return ERR_PARSE_ERROR
var color = Color8(int(channels[0]),int(channels[1]),int(channels[2]))
var material
if (ResourceLoader.has(path)):
# Material is in use, update it
material = ResourceLoader.load(path)
else:
# Material not in use, create
material = FixedMaterial.new()
if (use_red_anyway):
color=Color8(255,0,0)
material.set_parameter(FixedMaterial.PARAM_DIFFUSE,color)
# Make sure import metadata links to this plugin
metadata.set_editor("silly_material")
# Update the import metadata
material.set_import_metadata(metadata)
# Save
err = ResourceSaver.save(path,material)
return err
func config(base_control):
dialog = preload("res://addons/custom_import_plugin/material_dialog.tscn").instance()
base_control.add_child(dialog)