From 3a7cd76d55518caace5e099db7cdabb4c6fee3f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Lemaire?= Date: Tue, 17 Nov 2020 19:44:27 +0100 Subject: [PATCH] Add "update preview" button to all preview children --- preview/preview_inspector.gd | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/preview/preview_inspector.gd b/preview/preview_inspector.gd index b1f5ef4..5ea00f3 100644 --- a/preview/preview_inspector.gd +++ b/preview/preview_inspector.gd @@ -16,16 +16,33 @@ extends EditorInspectorPlugin # -- virtual methods -- func can_handle(object: Object) -> bool: - return object is Preview3D + return _get_preview(object) != null func parse_begin(object): - var button := Button.new() - button.text = "Update preview" - add_custom_control(button) - button.connect("pressed", self, "_on_update_pressed", [object as Preview3D]) + 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 -- -func _on_update_pressed(target: Preview3D): - target.update_preview_content() + +# 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()