Skip to content

Commit 6244424

Browse files
committed
fix loading unset parameters, interpolate values even if no update
1 parent 3c503cf commit 6244424

7 files changed

Lines changed: 50 additions & 22 deletions

File tree

lib/preferences.gd

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,16 @@ func _ready() -> void:
1616
)
1717
)
1818

19+
func get_setting(path: String, default: Variant) -> Variant:
20+
var parts = path.split(".")
21+
var cursor = _data
22+
for p in parts:
23+
if p in cursor:
24+
cursor = cursor.get(p)
25+
else:
26+
return default
27+
return cursor
28+
1929
func get_state():
2030
return _data.duplicate(true)
2131

lib/tracking/camera/openseeface/osf_config.gd

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,8 @@ func _ready() -> void:
1616
)
1717

1818
func _process(_delta: float) -> void:
19-
if tracker != null:
20-
%FpsCounter.text = "FPS: %d" % tracker.fps
21-
19+
%FpsCounter.text = "FPS: %d" % max(0, tracker.fps)
20+
2221
func _on_blink_sync_toggled(toggled_on: bool) -> void:
2322
tracker.blink_sync = toggled_on
2423

lib/tracking/camera/openseeface/osf_tracker.gd

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,6 @@ func _ready():
1313
server = UdpTracker.new()
1414
server.name = "OSFSocket"
1515
server.packet_received.connect(_packet_received)
16-
server.connection_status.connect(
17-
func (status):
18-
if status == UdpTracker.ConnectionStatus.OFF:
19-
reset()
20-
)
2116
data_received.connect(_data_received)
2217
add_child(server)
2318

lib/tracking/interpolated_tracker.gd

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func update(updated_parameters: Dictionary):
3737
_previous = _parameters
3838
_previous_msec = _latest_msec
3939
_latest_msec = now
40-
_parameters = {}
40+
_parameters = _previous.duplicate()
4141

4242
for p in updated_parameters:
4343
_parameters[p] = lerp(
@@ -47,6 +47,7 @@ func update(updated_parameters: Dictionary):
4747
)
4848

4949
# estimate avg sample rate
50-
var delta = 1.0 / ((_latest_msec - _previous_msec) / 1000.0)
51-
fps += delta
52-
fps /= 2.0
50+
if _latest_msec > _previous_msec:
51+
var delta = 1.0 / ((_latest_msec - _previous_msec) / 1000.0)
52+
fps += delta
53+
fps /= 2.0

studio/action_engine/action_graph_loader.gd

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ func _load_vts_graph(model: VtModel) -> Array:
211211
var _x = x
212212
if breathing or unbound:
213213
input.queue_free()
214+
input = null
214215
else:
215216
_x += input.size.x + 40
216217

@@ -245,9 +246,10 @@ func _load_vts_graph(model: VtModel) -> Array:
245246
_x += smoothing.size.x + 40
246247
input = smoothing
247248

248-
graph._on_connection_request(
249-
input.name, 0, output.name, 0
250-
)
249+
if input != null:
250+
graph._on_connection_request(
251+
input.name, 0, output.name, 0
252+
)
251253

252254
output.position_offset = Vector2(_x, y)
253255
y += output.size.y + 96

studio/action_engine/graph/outputs/model_parameter.gd

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ extends "../vt_action.gd"
22

33
const Serializers = preload("res://lib/utils/serializers.gd")
44

5-
const VALUE_SLOT = 1
6-
75
@onready var input: OptionButton = %Parameters
86

97
var parameter: int = -1 :
@@ -44,7 +42,8 @@ var invert_value: bool = false :
4442
var value: float :
4543
set(v):
4644
value = v
47-
%Input/Value.value = v
45+
%Input/Value.set_value_no_signal(v)
46+
_dirty = true
4847

4948
var _dirty = false
5049

@@ -55,6 +54,20 @@ func _ready() -> void:
5554
input.set_item_metadata(input.item_count - 1, m)
5655
input.select(parameter)
5756

57+
func bind(slot: int, node: GraphNode) -> void:
58+
if slot == 0:
59+
%Input/Value.editable = false
60+
61+
func unbind(slot: int, node: GraphNode) -> void:
62+
if slot == 0:
63+
%Input/Value.editable = true
64+
65+
func reset_value(slot: int) -> void:
66+
if parameter < 0:
67+
return
68+
var definition = model.parameters.values()[parameter]
69+
value = definition.default
70+
5871
func get_type():
5972
return "model_parameter"
6073

@@ -81,10 +94,15 @@ func deserialize(data: Dictionary):
8194
clamp_range = value_range
8295

8396
func load_from_vts(data: Dictionary):
84-
parameter = model.parameters.values().find_custom(
97+
var parameters = model.parameters.values()
98+
parameter = parameters.find_custom(
8599
func (f):
86100
return f.name == data["OutputLive2D"]
87101
)
102+
if parameter == -1:
103+
return
104+
105+
var definition = parameters[parameter]
88106

89107
var output_range = Vector2(
90108
data["OutputRangeLower"],
@@ -97,6 +115,7 @@ func load_from_vts(data: Dictionary):
97115
invert_value = false
98116
clamp_range = output_range
99117
clamp_enabled = data.get("ClampOutput", false)
118+
reset_value(0)
100119

101120
func update_value(_slot: int, v: float) -> void:
102121
if input.get_selected_metadata() == null:
@@ -111,14 +130,13 @@ func update_value(_slot: int, v: float) -> void:
111130
v = clampf(v, clamp_range.x, clamp_range.y)
112131

113132
value = v
114-
_dirty = true
115133

116134
func _update_model():
117135
if model_parameter.is_empty():
118136
return
119137
if not _dirty:
120138
return
121-
139+
122140
model.mixer.get_node("Tracking").set(
123141
model_parameter, value
124142
)
@@ -131,3 +149,6 @@ func _on_reset_button_pressed() -> void:
131149
invert_value = false
132150
if not model_parameter.is_empty():
133151
clamp_range = Vector2(input.get_selected_metadata().min, input.get_selected_metadata().max)
152+
153+
func _on_manual_value_changed(v: float) -> void:
154+
value = v

studio/action_engine/graph/outputs/model_parameter.tscn

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ size_flags_horizontal = 3
6464
min_value = -999.0
6565
max_value = 999.0
6666
step = 0.01
67-
editable = false
6867

6968
[node name="Options" type="VBoxContainer" parent="."]
7069
layout_mode = 2
@@ -96,4 +95,5 @@ layout_mode = 2
9695
size_flags_horizontal = 3
9796
text = "Invert"
9897

98+
[connection signal="value_changed" from="Input/Value" to="." method="_on_manual_value_changed"]
9999
[connection signal="pressed" from="Options/Range/ResetButton" to="." method="_on_reset_button_pressed"]

0 commit comments

Comments
 (0)