60 lines
1.1 KiB
GDScript
60 lines
1.1 KiB
GDScript
@tool
|
|
extends Control
|
|
|
|
# TODO Can't preload because it causes the plugin to fail loading if assets aren't imported
|
|
#const HT_EmptyTexture = preload("../../icons/empty.png")
|
|
const EMPTY_TEXTURE_PATH = "res://addons/zylann.hterrain/tools/icons/empty.png"
|
|
|
|
signal load_pressed
|
|
signal clear_pressed
|
|
|
|
|
|
@onready var _label : Label = $Label
|
|
@onready var _texture_rect : TextureRect = $TextureRect
|
|
|
|
@onready var _buttons = [
|
|
$LoadButton,
|
|
$ClearButton
|
|
]
|
|
|
|
var _material : Material
|
|
var _is_empty := true
|
|
|
|
|
|
func set_label(text: String):
|
|
_label.text = text
|
|
|
|
|
|
func set_texture(tex: Texture):
|
|
if tex == null:
|
|
_texture_rect.texture = load(EMPTY_TEXTURE_PATH)
|
|
_texture_rect.material = null
|
|
_is_empty = true
|
|
else:
|
|
_texture_rect.texture = tex
|
|
_texture_rect.material = _material
|
|
_is_empty = false
|
|
|
|
|
|
func set_texture_tooltip(msg: String):
|
|
_texture_rect.tooltip_text = msg
|
|
|
|
|
|
func _on_LoadButton_pressed():
|
|
load_pressed.emit()
|
|
|
|
|
|
func _on_ClearButton_pressed():
|
|
clear_pressed.emit()
|
|
|
|
|
|
func set_material(mat: Material):
|
|
_material = mat
|
|
if not _is_empty:
|
|
_texture_rect.material = _material
|
|
|
|
|
|
func set_enabled(enabled: bool):
|
|
for b in _buttons:
|
|
b.disabled = not enabled
|
|
|