fix: wrong edit history;feat: blendmode selector

This commit is contained in:
Sara Gerretsen 2025-12-14 14:16:52 +01:00
parent 18ecb79957
commit 0f8733ef3e
9 changed files with 251 additions and 33 deletions

View file

@ -1,37 +1,51 @@
[gd_scene format=3 uid="uid://cwby0in0f2wi2"]
[sub_resource type="GDScript" id="GDScript_aclmm"]
resource_name = "FloatEditor"
script/source = "extends HBoxContainer
@export var changes_value : String = \"height\"
@onready var terrain : TerrainMeshEditor = $\"../../..\".terrain
@onready var primitive : TerrainPrimitive = terrain.current_selected
var value_before : float = 0.0
var dragging := false
func _ready() -> void:
func connect_changes():
$HSlider.connect(\"drag_ended\", _drag_ended)
$HSlider.connect(\"drag_started\", _drag_started)
$HSlider.connect(\"value_changed\", _slider_value_changed)
$SpinBox.connect(\"value_changed\", _spin_value_changed)
func disconnect_changes():
$HSlider.disconnect(\"drag_ended\", _drag_ended)
$HSlider.disconnect(\"drag_started\", _drag_started)
$HSlider.disconnect(\"value_changed\", _slider_value_changed)
$SpinBox.disconnect(\"value_changed\", _spin_value_changed)
func _ready() -> void:
primitive.changed.connect(_primitive_changed)
connect_changes()
_primitive_changed();
func _primitive_changed():
var value = primitive.get(changes_value)
$HSlider.value = value
$SpinBox.value = value
$HSlider.set_value_no_signal(value)
$SpinBox.set_value_no_signal(value)
func _spin_value_changed(value : float):
EditHistory.push_action(primitive.set.bind(changes_value, $SpinBox.value), primitive.set.bind(changes_value, primitive.get(changes_value)))
var old : float = primitive.get(changes_value)
var new : float = $SpinBox.value
EditHistory.push_action(primitive.set.bind(changes_value, new), primitive.set.bind(changes_value, old))
func _drag_started():
dragging = true
value_before = primitive.get(changes_value)
func _slider_value_changed(value : float):
primitive.set(changes_value, value)
$SpinBox.value = value
func _drag_ended(changed : bool):
dragging = false
if changed:
EditHistory.push_action(primitive.set.bind(changes_value, $HSlider.value), primitive.set.bind(changes_value, value_before))
"