fix: wrong edit history;feat: blendmode selector
This commit is contained in:
parent
18ecb79957
commit
0f8733ef3e
9 changed files with 251 additions and 33 deletions
|
|
@ -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))
|
||||
"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue