49 lines
1 KiB
GDScript
49 lines
1 KiB
GDScript
tool
|
|
|
|
# Inspector plugin for preview scenes
|
|
extends EditorInspectorPlugin
|
|
|
|
# -- signals --
|
|
# -- enums --
|
|
# -- constants --
|
|
# -- exported variables --
|
|
# -- public variables --
|
|
# -- private variables --
|
|
# -- onready variables --
|
|
|
|
# -- preloads --
|
|
|
|
# -- virtual methods --
|
|
|
|
func can_handle(object: Object) -> bool:
|
|
return _get_preview(object) != null
|
|
|
|
func parse_begin(object):
|
|
var preview = _get_preview(object)
|
|
|
|
if preview:
|
|
var button := Button.new()
|
|
button.text = "Update preview"
|
|
add_custom_control(button)
|
|
button.connect("pressed", self, "_on_update_pressed", [preview])
|
|
|
|
# -- public methods --
|
|
|
|
# -- private methods --
|
|
|
|
# Get the nearest parent preview
|
|
# Returns null if none is found
|
|
func _get_preview(node: Node):
|
|
if node is Preview2D or node is Preview3D:
|
|
return node
|
|
else:
|
|
while node:
|
|
node = node.get_parent()
|
|
if node is Preview2D or node is Preview3D:
|
|
return node
|
|
return null
|
|
|
|
# Callback for the inspector update button
|
|
func _on_update_pressed(preview):
|
|
preview.update_preview_content()
|