numeric mods
This commit is contained in:
parent
eaa487f16a
commit
5246d8481d
11 changed files with 185 additions and 0 deletions
66
addons/numeric-modifiers/numeric_mods_property.gd
Normal file
66
addons/numeric-modifiers/numeric_mods_property.gd
Normal file
|
@ -0,0 +1,66 @@
|
|||
@tool
|
||||
extends EditorProperty
|
||||
|
||||
class_name NumericModsProperty
|
||||
|
||||
var control : VBoxContainer
|
||||
var mod : NumericModifiers
|
||||
var updating : bool
|
||||
|
||||
func _init() -> void:
|
||||
control = preload("uid://d2ne6ml10xgcl").instantiate()
|
||||
add_child(control)
|
||||
add_focusable(control)
|
||||
|
||||
refresh_control()
|
||||
|
||||
control.get_node("%Flat").value_changed.connect(update_flat)
|
||||
control.get_node("%Percentage").value_changed.connect(update_percentage)
|
||||
control.get_node("%Mult").value_changed.connect(update_mult)
|
||||
|
||||
func refresh_control():
|
||||
if mod == null: return
|
||||
|
||||
control.get_node("%Flat").set_value_no_signal(mod.flat_value)
|
||||
control.get_node("%Percentage").set_value_no_signal(mod.percentage_value)
|
||||
control.get_node("%Mult").set_value_no_signal(mod.mult_value)
|
||||
|
||||
func update_flat(value : float):
|
||||
if updating: return
|
||||
|
||||
mod.flat_value = value
|
||||
|
||||
refresh_control()
|
||||
emit_changed(get_edited_property(),mod)
|
||||
|
||||
func update_percentage(value : float):
|
||||
if updating: return
|
||||
|
||||
mod.percentage_value = value
|
||||
|
||||
refresh_control()
|
||||
emit_changed(get_edited_property(),mod)
|
||||
|
||||
func update_mult(value : float):
|
||||
if updating: return
|
||||
|
||||
mod.mult_value = value
|
||||
|
||||
refresh_control()
|
||||
emit_changed(get_edited_property(),mod)
|
||||
|
||||
func _update_property() -> void:
|
||||
var new_value = get_edited_object().get(get_edited_property()) as NumericModifiers
|
||||
if new_value == null:
|
||||
new_value = NumericModifiers.new()
|
||||
new_value.resource_local_to_scene = true
|
||||
emit_changed(get_edited_property(),new_value)
|
||||
if new_value.resource_local_to_scene == false:
|
||||
new_value.resource_local_to_scene = true
|
||||
if new_value == mod:
|
||||
return
|
||||
|
||||
updating = true
|
||||
mod = new_value
|
||||
refresh_control()
|
||||
updating = false
|
Loading…
Add table
Add a link
Reference in a new issue