43 lines
1.3 KiB
GDScript
43 lines
1.3 KiB
GDScript
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" },
|
|
{ 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()))
|