Files
Dawn-Godot/addons/controller_icons/objects/ControllerIconEditorInspector.gd

62 lines
2.1 KiB
GDScript

extends EditorInspectorPlugin
var path_selector := preload("res://addons/controller_icons/objects/ControllerIconPathEditorProperty.gd")
var editor_interface : EditorInterface
class ControllerIcons_TexturePreview:
var n_root: MarginContainer
var n_background: TextureRect
var n_texture: TextureRect
var background: Texture2D
var texture: Texture2D:
set(_texture):
texture = _texture
n_texture.texture = texture
func _init(editor_interface: EditorInterface):
n_root = MarginContainer.new()
# UPGRADE: In Godot 4.2, there's no need to have an instance to
# EditorInterface, since it's now a static call:
# background = EditorInterface.get_base_control().get_theme_icon("Checkerboard", "EditorIcons")
background = editor_interface.get_base_control().get_theme_icon("Checkerboard", "EditorIcons")
n_background = TextureRect.new()
n_background.stretch_mode = TextureRect.STRETCH_TILE
n_background.texture = background
n_background.texture_repeat = CanvasItem.TEXTURE_REPEAT_ENABLED
n_background.custom_minimum_size = Vector2(0, 256)
n_root.add_child(n_background)
n_texture = TextureRect.new()
n_texture.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS
n_texture.set_anchors_preset(Control.PRESET_FULL_RECT)
n_texture.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
n_texture.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
n_root.add_child(n_texture)
func get_root():
return n_root
var preview: ControllerIcons_TexturePreview
func _can_handle(object: Object) -> bool:
return object is ControllerIconTexture
func _parse_begin(object: Object) -> void:
preview = ControllerIcons_TexturePreview.new(editor_interface)
add_custom_control(preview.get_root())
var icon := object as ControllerIconTexture
if icon:
preview.texture = icon
func _parse_property(object: Object, type, name: String, hint_type: PropertyHint, hint_string: String, usage_flags: int, wide: bool) -> bool:
if name == "path":
var path_selector_instance = path_selector.new(editor_interface)
add_property_editor(name, path_selector_instance)
return true
return false