61 lines
1.1 KiB
GDScript3
61 lines
1.1 KiB
GDScript3
|
@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
|
||
|
|