mirror of
https://github.com/Relintai/utilities_gamedev.git
synced 2024-12-21 13:56:59 +01:00
94 lines
2.0 KiB
GDScript
94 lines
2.0 KiB
GDScript
tool
|
|
extends Control
|
|
|
|
signal inspect_data
|
|
signal duplicate
|
|
signal delete
|
|
|
|
export(PackedScene) var spatial_preview : PackedScene
|
|
export(PackedScene) var node2d_preview : PackedScene
|
|
export(PackedScene) var control_preview : PackedScene
|
|
export(PackedScene) var texture_preview : PackedScene
|
|
|
|
export(NodePath) var main_button_path : NodePath
|
|
|
|
var _main_button : Button
|
|
|
|
var _preview : Node
|
|
var _data : Resource
|
|
|
|
func _ready():
|
|
_main_button = get_node(main_button_path) as Button
|
|
|
|
func set_resource(data : Resource) -> void:
|
|
_data = data
|
|
|
|
_main_button.set_resource(data)
|
|
|
|
var name_text : String = ""
|
|
|
|
if data.has_method("get_id"):
|
|
name_text += str(data.get_id()) + " - "
|
|
|
|
if data.has_method("get_text_name"):
|
|
name_text += str(data.get_text_name())
|
|
else:
|
|
if data.resource_name != "":
|
|
name_text += data.resource_name
|
|
else:
|
|
name_text += data.resource_path
|
|
|
|
if data.has_method("get_rank"):
|
|
name_text += " - Rank " + str(data.get_rank())
|
|
|
|
if data is Texture:
|
|
_preview = texture_preview.instance()
|
|
add_child(_preview)
|
|
_preview.owner = self
|
|
move_child(_preview, 0)
|
|
|
|
_preview.set_texture(data as Texture)
|
|
elif data is PackedScene:
|
|
var n : Node = data.instance()
|
|
|
|
if _preview != null:
|
|
_preview.queue_free()
|
|
|
|
if n is Spatial:
|
|
_preview = spatial_preview.instance()
|
|
add_child(_preview)
|
|
_preview.owner = self
|
|
move_child(_preview, 0)
|
|
|
|
_preview.preview(n as Spatial)
|
|
elif n is Node2D:
|
|
_preview = node2d_preview.instance()
|
|
add_child(_preview)
|
|
_preview.owner = self
|
|
move_child(_preview, 0)
|
|
|
|
_preview.preview(n as Node2D)
|
|
elif n is Control:
|
|
_preview = control_preview.instance()
|
|
add_child(_preview)
|
|
_preview.owner = self
|
|
move_child(_preview, 0)
|
|
|
|
_preview.preview(n as Control)
|
|
else:
|
|
n.queue_free()
|
|
|
|
_main_button.text = name_text
|
|
|
|
func can_drop_data(position, data):
|
|
return false
|
|
|
|
func inspect():
|
|
emit_signal("inspect_data", _data)
|
|
|
|
func duplicate_data():
|
|
emit_signal("duplicate", _data)
|
|
|
|
func delete():
|
|
emit_signal("delete", _data)
|