material-maker/addons/material_maker/engine/gen_text.gd

43 lines
1.3 KiB
GDScript3
Raw Normal View History

tool
extends MMGenTexture
class_name MMGenText
"""
Texture generator from text
"""
var updating : bool = false
var update_again : bool = false
func get_type() -> String:
return "text"
func get_type_name() -> String:
return "Text"
func get_parameter_defs() -> Array:
return [ { name="text", type="string", default="Hello World" },
2020-08-01 09:27:37 +02:00
{ name="font", type="file", filters= [ "*.otf,*.ttf,*.fnt;Font file" ], default="" },
{ name="font_size", type="float", min=0, max=128, step=1, default=32 },
{ name="x", type="float", min=-0.5, max=0.5, step=0.001, default=0.1, control="P1.x" },
{ name="y", type="float", min=-0.5, max=0.5, step=0.001, default=0.1, control="P1.y" } ]
func set_parameter(n : String, v) -> void:
.set_parameter(n, v)
update_buffer()
func update_buffer() -> void:
update_again = true
if !updating:
updating = true
while update_again:
update_again = false
var result = mm_renderer.render_text(get_parameter("text"), get_parameter("font"), get_parameter("font_size"), get_parameter("x"), get_parameter("y"))
while result is GDScriptFunctionState:
result = yield(result, "completed")
if !update_again:
result.copy_to_texture(texture)
result.release()
updating = false
get_tree().call_group("preview", "on_texture_changed", "o%s_tex" % str(get_instance_id()))