62 lines
2.1 KiB
GDScript
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
|