This commit is contained in:
2026-05-13 18:52:00 +02:00
commit 2bb1acbece
404 changed files with 33353 additions and 0 deletions

View File

@@ -0,0 +1,70 @@
@tool
extends PopupPanel
signal value_changed(value : Vector2, meta_name : String, point_idx : int)
var x_pos_input : EditorSpinSlider
var y_pos_input : EditorSpinSlider
var meta_name := CurvedLines2D.META_NAME_HOVER_POINT_IDX
var point_idx : int = 0
var _dragging := false
var _drag_start := Vector2.ZERO
func _enter_tree() -> void:
visible = false
x_pos_input = _mk_input()
y_pos_input = _mk_input()
%XPosInputContainer.add_child(x_pos_input)
%YPosInputContainer.add_child(y_pos_input)
if not x_pos_input.value_changed.is_connected(_on_value_changed):
x_pos_input.value_changed.connect(_on_value_changed)
if not y_pos_input.value_changed.is_connected(_on_value_changed):
y_pos_input.value_changed.connect(_on_value_changed)
func _on_button_pressed() -> void:
hide()
func _on_value_changed(_v : Variant = null):
value_changed.emit(Vector2(x_pos_input.value, y_pos_input.value), meta_name, point_idx)
func popup_with_value(metadata : Dictionary, snapped : bool, snap_step : float):
point_idx = metadata['point_idx']
meta_name = metadata['meta_name']
x_pos_input.set_value_no_signal(metadata['global_pos'].x)
y_pos_input.set_value_no_signal(metadata['global_pos'].y)
if snapped:
x_pos_input.step = snap_step
y_pos_input.step = snap_step
else:
x_pos_input.step = 0.001
y_pos_input.step = 0.001
_on_value_changed()
popup_centered()
func _mk_input() -> EditorSpinSlider:
var num_input := EditorSpinSlider.new()
num_input.suffix = "px"
num_input.hide_slider = true
num_input.value = 0.0
num_input.editing_integer = false
num_input.allow_lesser = true
num_input.allow_greater = true
num_input.step = 0.001
return num_input
func _on_label_gui_input(event: InputEvent) -> void:
if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT:
if Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT):
if not _dragging:
_dragging = true
_drag_start = EditorInterface.get_base_control().get_local_mouse_position()
else:
_dragging = false
if event is InputEventMouseMotion and _dragging:
position += Vector2i(EditorInterface.get_base_control().get_local_mouse_position() - _drag_start)
_drag_start = EditorInterface.get_base_control().get_local_mouse_position()