Loading dragon.tscn +5 −3 Original line number Diff line number Diff line [gd_scene load_steps=3 format=3 uid="uid://c7nfcgjxqeg7l"] [gd_scene load_steps=4 format=3 uid="uid://c7nfcgjxqeg7l"] [ext_resource type="Texture2D" uid="uid://fdqnc2qrrvn1" path="res://icon.svg" id="1_ixu8j"] [ext_resource type="Script" uid="uid://bmlkcni4km614" path="res://scripts/dragon.gd" id="1_n6spy"] [ext_resource type="Script" uid="uid://bmlkcni4km614" path="res://scripts/dragon/dragon.gd" id="1_n6spy"] [ext_resource type="Script" uid="uid://ch7d3wo8ucskb" path="res://scripts/dragon/draggable.gd" id="2_qxdfn"] [node name="Dragon" type="Window"] disable_3d = true Loading @@ -11,13 +12,14 @@ size = Vector2i(128, 128) unresizable = true borderless = true transparent = true script = ExtResource("1_n6spy") [node name="DragDropDetector" type="Control" parent="."] layout_mode = 3 anchors_preset = 0 offset_right = 40.0 offset_bottom = 40.0 script = ExtResource("1_n6spy") script = ExtResource("2_qxdfn") [node name="Icon" type="Sprite2D" parent="."] position = Vector2(64, 65) Loading scripts/dragon.gd→scripts/dragon/draggable.gd +44 −0 Original line number Diff line number Diff line extends Control var dragging = false var dragging_start_position = Vector2i() var dragging: bool = false var dragging_start_position: Vector2i = Vector2i() @onready var window: Window = $".." @onready var dragon: Dragon = $".." func _ready(): func _ready() -> void: set_process_input(true) func _input(event): func _input(event) -> void: if event is not InputEventMouseButton: return if event.button_index != MOUSE_BUTTON_LEFT: Loading @@ -22,8 +22,23 @@ func _input(event): dragging_start_position = Vector2i(get_global_mouse_position()) else: dragging = false if _is_inside_main_window(): _destroy_dragon() func _process(_delta): func _process(_delta) -> void: if dragging: window.position = window.position + Vector2i(get_global_mouse_position()) - dragging_start_position dragon.position = dragon.position + Vector2i(get_global_mouse_position()) - dragging_start_position func _is_inside_main_window() -> bool: var id: int = get_window().get_window_id() var window_position: Vector2i = DisplayServer.window_get_position(id) var window_size: Vector2i = DisplayServer.window_get_size(id) var rect: Rect2i = Rect2i(window_position, window_size) return rect.intersects(dragon.main_window_rect) func _destroy_dragon() -> void: dragon.queue_free() scripts/dragon/draggable.gd.uid 0 → 100644 +1 −0 Original line number Diff line number Diff line uid://ch7d3wo8ucskb scripts/dragon/dragon.gd 0 → 100644 +5 −0 Original line number Diff line number Diff line extends Window class_name Dragon var main_window_rect: Rect2i scripts/dragon.gd.uid→scripts/dragon/dragon.gd.uid +0 −0 File moved. View file Loading
dragon.tscn +5 −3 Original line number Diff line number Diff line [gd_scene load_steps=3 format=3 uid="uid://c7nfcgjxqeg7l"] [gd_scene load_steps=4 format=3 uid="uid://c7nfcgjxqeg7l"] [ext_resource type="Texture2D" uid="uid://fdqnc2qrrvn1" path="res://icon.svg" id="1_ixu8j"] [ext_resource type="Script" uid="uid://bmlkcni4km614" path="res://scripts/dragon.gd" id="1_n6spy"] [ext_resource type="Script" uid="uid://bmlkcni4km614" path="res://scripts/dragon/dragon.gd" id="1_n6spy"] [ext_resource type="Script" uid="uid://ch7d3wo8ucskb" path="res://scripts/dragon/draggable.gd" id="2_qxdfn"] [node name="Dragon" type="Window"] disable_3d = true Loading @@ -11,13 +12,14 @@ size = Vector2i(128, 128) unresizable = true borderless = true transparent = true script = ExtResource("1_n6spy") [node name="DragDropDetector" type="Control" parent="."] layout_mode = 3 anchors_preset = 0 offset_right = 40.0 offset_bottom = 40.0 script = ExtResource("1_n6spy") script = ExtResource("2_qxdfn") [node name="Icon" type="Sprite2D" parent="."] position = Vector2(64, 65) Loading
scripts/dragon.gd→scripts/dragon/draggable.gd +44 −0 Original line number Diff line number Diff line extends Control var dragging = false var dragging_start_position = Vector2i() var dragging: bool = false var dragging_start_position: Vector2i = Vector2i() @onready var window: Window = $".." @onready var dragon: Dragon = $".." func _ready(): func _ready() -> void: set_process_input(true) func _input(event): func _input(event) -> void: if event is not InputEventMouseButton: return if event.button_index != MOUSE_BUTTON_LEFT: Loading @@ -22,8 +22,23 @@ func _input(event): dragging_start_position = Vector2i(get_global_mouse_position()) else: dragging = false if _is_inside_main_window(): _destroy_dragon() func _process(_delta): func _process(_delta) -> void: if dragging: window.position = window.position + Vector2i(get_global_mouse_position()) - dragging_start_position dragon.position = dragon.position + Vector2i(get_global_mouse_position()) - dragging_start_position func _is_inside_main_window() -> bool: var id: int = get_window().get_window_id() var window_position: Vector2i = DisplayServer.window_get_position(id) var window_size: Vector2i = DisplayServer.window_get_size(id) var rect: Rect2i = Rect2i(window_position, window_size) return rect.intersects(dragon.main_window_rect) func _destroy_dragon() -> void: dragon.queue_free()
scripts/dragon/draggable.gd.uid 0 → 100644 +1 −0 Original line number Diff line number Diff line uid://ch7d3wo8ucskb
scripts/dragon/dragon.gd 0 → 100644 +5 −0 Original line number Diff line number Diff line extends Window class_name Dragon var main_window_rect: Rect2i