mirror of
https://github.com/Relintai/material-maker.git
synced 2024-11-13 06:27:18 +01:00
72 lines
2.0 KiB
GDScript
72 lines
2.0 KiB
GDScript
tool
|
|
extends EditorImportPlugin
|
|
|
|
var plugin = null
|
|
|
|
const PRESET_NAMES = [ "Render in game", "Prerender" ]
|
|
const PRESET_OPTIONS = [
|
|
[{ name="render", default_value=false }, { name="scale", default_value=1.0 }],
|
|
[{ name="render", default_value=true }, { name="scale", default_value=1.0 }]
|
|
]
|
|
|
|
func _init(p) -> void:
|
|
plugin = p
|
|
|
|
func get_import_options(preset : int) -> Array:
|
|
return PRESET_OPTIONS[preset]
|
|
|
|
func get_import_order() -> int:
|
|
return 1
|
|
|
|
func get_importer_name() -> String:
|
|
return "material_maker.import"
|
|
|
|
func get_option_visibility(option: String, options: Dictionary) -> bool:
|
|
return true
|
|
|
|
func get_preset_count() -> int:
|
|
return 2
|
|
|
|
func get_preset_name(preset: int) -> String:
|
|
return PRESET_NAMES[preset]
|
|
|
|
func get_priority() -> float:
|
|
return 0.1
|
|
|
|
func get_recognized_extensions() -> Array:
|
|
return [ "ptex" ]
|
|
|
|
func get_resource_type() -> String:
|
|
return "SpatialMaterial"
|
|
|
|
func get_save_extension() -> String:
|
|
return "tres"
|
|
|
|
func get_visible_name() -> String:
|
|
return "Material Maker Importer"
|
|
|
|
func import(source_file: String, save_path: String, options: Dictionary, platform_variants: Array, gen_files: Array) -> int:
|
|
var material = null
|
|
if options.render:
|
|
var gen = mm_loader.load_gen(source_file)
|
|
if gen != null:
|
|
plugin.add_child(gen)
|
|
for c in gen.get_children():
|
|
if c.has_method("get_export_profiles"):
|
|
var result = c.export_material(source_file.get_basename(), "Godot")
|
|
while result is GDScriptFunctionState:
|
|
result = yield(result, "completed")
|
|
break
|
|
gen.queue_free()
|
|
else:
|
|
var filename = save_path + "." + get_save_extension()
|
|
material = SpatialMaterial.new()
|
|
material.set_script(preload("res://addons/material_maker/import_plugin/ptex_spatial_material.gd"))
|
|
var file : File = File.new()
|
|
if file.open(source_file, File.READ) == OK:
|
|
material.set_ptex_no_render(to_json(parse_json(file.get_as_text())))
|
|
file.close()
|
|
material.uv1_scale = options.scale * Vector3(1.0, 1.0, 1.0)
|
|
ResourceSaver.save(filename, material)
|
|
return OK
|