mirror of
https://github.com/Relintai/material-maker.git
synced 2024-11-13 06:27:18 +01:00
55 lines
1.3 KiB
GDScript
55 lines
1.3 KiB
GDScript
tool
|
|
extends MMGenBase
|
|
class_name MMGenExport
|
|
|
|
"""
|
|
Can be used to export an additional texture
|
|
"""
|
|
|
|
var texture = null
|
|
|
|
# The default texture size as a power-of-two exponent
|
|
const TEXTURE_SIZE_DEFAULT = 10 # 1024x1024
|
|
|
|
func get_image_size() -> int:
|
|
var rv : int
|
|
if parameters.has("size"):
|
|
rv = int(pow(2, parameters.size))
|
|
else:
|
|
rv = int(pow(2, TEXTURE_SIZE_DEFAULT))
|
|
return rv
|
|
|
|
func get_type() -> String:
|
|
return "export"
|
|
|
|
func get_type_name() -> String:
|
|
return "Export"
|
|
|
|
func get_parameter_defs() -> Array:
|
|
return [
|
|
{ name="size", type="size", first=4, last=12, default=10 },
|
|
{ name="suffix", type="string", default="suffix" }
|
|
]
|
|
|
|
func get_input_defs() -> Array:
|
|
return [ { name="in", type="rgba" } ]
|
|
|
|
func render_textures(renderer : MMGenRenderer) -> void:
|
|
print("rendering texture...")
|
|
var source = get_source(0)
|
|
if source != null:
|
|
var result = source.generator.render(source.output_index, renderer, get_image_size())
|
|
while result is GDScriptFunctionState:
|
|
result = yield(result, "completed")
|
|
texture = ImageTexture.new()
|
|
result.copy_to_texture(texture)
|
|
result.release()
|
|
else:
|
|
texture = null
|
|
|
|
func export_textures(prefix, __ = null) -> void:
|
|
print("exporting texture")
|
|
if texture != null:
|
|
var image = texture.get_data()
|
|
image.save_png("%s_%s.png" % [ prefix, parameters.suffix])
|