Skip to content

Commit e24a9aa

Browse files
author
Liam Sherwin
committed
Re enabled UDP peer
1 parent f5da113 commit e24a9aa

File tree

9 files changed

+94
-41
lines changed

9 files changed

+94
-41
lines changed

core/animation/CueAnimator.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ func track(p_cue: Cue, p_pre_existing_data: Dictionary[String, Dictionary]) -> D
200200
item.get_parameter(),
201201
item.get_function(),
202202
item.get_zone(),
203-
from / (_intensity if item.get_parameter() in _allowed_intensity_parameters else 1.0),
203+
(from / _intensity if _intensity != 0.0 else 0.0) if item.get_parameter() in _allowed_intensity_parameters else from,
204204
item.get_value(),
205205
item.get_can_fade(),
206206
item.get_start(),

core/components/EngineComponent.gd

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ var _control_methods: Dictionary[String, Dictionary] = {}
4848
## Network Config:
4949
## high_frequency_signals: Contains all the signals that should be send over the udp stream, instead of the tcp websocket
5050
var network_config: Dictionary = {
51-
"high_frequency_signals": [
51+
"high_frequency_signals": {
5252

53-
]
53+
}
5454
}
5555

5656

@@ -88,8 +88,13 @@ func set_self_class(p_self_class_name: String) -> void:
8888

8989

9090
## Adds a high frequency signal to the network config
91-
func register_high_frequency_signals(p_high_frequency_signals: Array) -> void:
92-
network_config.high_frequency_signals.append_array(p_high_frequency_signals)
91+
func register_high_frequency_signal(p_signal: Signal, p_match_args: int = 0) -> void:
92+
network_config.high_frequency_signals[p_signal] = p_match_args
93+
94+
95+
## Gets the arg match count of a high frequency signal
96+
func get_hf_signal_arg_match(p_signal: Signal) -> int:
97+
return network_config.high_frequency_signals.get(p_signal, 0)
9398

9499

95100
## Registers a method that can be called by external control systems

core/components/TriggerBlock.gd

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ signal on_trigger_added(component: EngineComponent, id: String, name: String, ro
1111
## Emitted when a trigger is added
1212
signal on_trigger_removed(row: int, column: int)
1313

14+
## Emitted when a column is reset
15+
signal on_column_reset(column: int)
16+
1417
## Emitted when a trigger name is changes
1518
signal on_trigger_name_changed(row: int, column: int, name: String)
1619

@@ -61,6 +64,15 @@ func remove_trigger(p_row: int, p_column: int, no_signal: bool = false) -> bool:
6164
return true
6265

6366

67+
## Resets a whole column
68+
func reset_column(p_column: int) -> void:
69+
for row: int in _triggers:
70+
if p_column in _triggers[row]:
71+
remove_trigger(row, p_column, true)
72+
73+
on_column_reset.emit(p_column)
74+
75+
6476
## Renames a trigger
6577
func rename_trigger(p_row: int, p_column: int, p_name: String, no_signal: bool = false) -> bool:
6678
if not _triggers.has(p_row) or not _triggers[p_row].has(p_column):

core/components/fixtures/DMXFixture.gd

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,10 @@ func _component_ready() -> void:
7676
set_name("DMXFixture")
7777
set_self_class("DMXFixture")
7878

79-
register_high_frequency_signals([on_parameter_changed, on_override_changed])
79+
register_high_frequency_signal(on_parameter_changed, 3)
80+
register_high_frequency_signal(on_parameter_erased, 2)
81+
register_high_frequency_signal(on_override_changed, 3)
82+
register_high_frequency_signal(on_override_erased, 2)
8083

8184

8285
## Gets the channel
@@ -158,7 +161,7 @@ func set_parameter(p_parameter: String, p_function: String, p_value: float, p_la
158161
}
159162

160163
if not p_disable_output:
161-
on_parameter_changed.emit(p_parameter, p_function, remapped_value, p_zone)
164+
on_parameter_changed.emit(p_zone, p_parameter, p_function, remapped_value)
162165
_queue_compilation()
163166
else:
164167
var zones: Array = _parameters.keys()
@@ -167,7 +170,7 @@ func set_parameter(p_parameter: String, p_function: String, p_value: float, p_la
167170
for zone: String in zones:
168171
set_parameter(p_parameter, p_function, p_value, p_layer_id, zone, true)
169172

170-
on_parameter_changed.emit(p_parameter, p_function, p_value, p_zone)
173+
on_parameter_changed.emit(p_zone, p_parameter, p_function, p_value)
171174
_queue_compilation()
172175

173176
return true
@@ -210,7 +213,7 @@ func erase_parameter(p_parameter: String, p_layer_id: String, p_zone: String = "
210213
_active_values.get_or_add(p_zone, {}).erase(p_parameter)
211214

212215
if not p_disable_output:
213-
on_parameter_erased.emit(p_parameter, p_zone)
216+
# on_parameter_erased.emit(p_zone, p_parameter)
214217
_find_and_output_parameter_function(p_parameter, p_zone, new_value)
215218
_queue_compilation()
216219

@@ -221,27 +224,32 @@ func erase_parameter(p_parameter: String, p_layer_id: String, p_zone: String = "
221224
for zone: String in zones:
222225
erase_parameter(p_parameter, p_layer_id, zone, true)
223226

224-
on_parameter_erased.emit(p_parameter, p_zone)
227+
# on_parameter_erased.emit(p_zone, p_parameter)
225228
_find_and_output_parameter_function(p_parameter, p_zone, _current[p_zone][p_parameter])
226229

227230
_queue_compilation()
228231

229232

230233
## Findes a function from a parameter using the current dmx value. and outputs it via on_parameter_changed
231234
func _find_and_output_parameter_function(p_parameter: String, p_zone: String, p_dmx_value: int) -> void:
232-
for function: String in _parameters[p_zone][p_parameter].functions:
233-
var dmx_range: Array = _parameters[p_zone][p_parameter].functions[function].dmx_range
235+
if not _current[p_zone].has(p_parameter):
236+
var function: String = get_default_function(p_zone, p_parameter)
237+
on_parameter_changed.emit(p_zone, p_parameter, function, get_default(p_zone, p_parameter, function))
238+
239+
else:
240+
for function: String in _parameters[p_zone][p_parameter].functions:
241+
var dmx_range: Array = _parameters[p_zone][p_parameter].functions[function].dmx_range
234242

235-
if p_dmx_value >= dmx_range[0] and p_dmx_value <= dmx_range[1]:
236-
var remapped_value: float = remap(p_dmx_value, dmx_range[0], dmx_range[1], 0, 1)
237-
on_parameter_changed.emit(p_parameter, function, remapped_value, p_zone)
243+
if p_dmx_value >= dmx_range[0] and p_dmx_value <= dmx_range[1]:
244+
var remapped_value: float = remap(p_dmx_value, dmx_range[0], dmx_range[1], 0, 1)
245+
on_parameter_changed.emit(p_zone, p_parameter, function, remapped_value)
238246

239-
_active_values.get_or_add(p_zone, {})[p_parameter] = {
240-
"value": remapped_value,
241-
"function": function
242-
}
247+
_active_values.get_or_add(p_zone, {})[p_parameter] = {
248+
"value": remapped_value,
249+
"function": function
250+
}
243251

244-
return
252+
return
245253

246254

247255
## Sets a parameter override to a float value
@@ -264,7 +272,7 @@ func set_override(p_parameter: String, p_function: String, p_value: float, p_zon
264272
_current_override_dmx[offsets[i] + _channel - 1] = channel_value
265273

266274
if not p_disable_output:
267-
on_override_changed.emit(p_parameter, p_function, p_value, p_zone)
275+
on_override_changed.emit(p_zone, p_parameter, p_function, p_value)
268276
_queue_compilation()
269277

270278
else:
@@ -274,7 +282,7 @@ func set_override(p_parameter: String, p_function: String, p_value: float, p_zon
274282
for zone: String in zones:
275283
set_override(p_parameter, p_function, p_value, zone, true)
276284

277-
on_override_changed.emit(p_parameter, p_function, p_value, p_zone)
285+
on_override_changed.emit(p_zone, p_parameter, p_function, p_value)
278286
_queue_compilation()
279287

280288
return true
@@ -299,7 +307,7 @@ func erase_override(p_parameter: String, p_zone: String = "root", p_disable_outp
299307
_current_override.erase(p_zone)
300308

301309
if not p_disable_output:
302-
on_override_erased.emit(p_parameter, p_zone)
310+
on_override_erased.emit(p_zone, p_parameter)
303311
_queue_compilation()
304312

305313
else:
@@ -309,7 +317,7 @@ func erase_override(p_parameter: String, p_zone: String = "root", p_disable_outp
309317
for zone: String in zones:
310318
erase_override(p_parameter, zone, true)
311319

312-
on_override_erased.emit(p_parameter, p_zone)
320+
on_override_erased.emit(p_zone, p_parameter)
313321
_queue_compilation()
314322

315323

core/components/fixtures/Fixture.gd

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ class_name Fixture extends EngineComponent
66

77

88
## Emitted when a parameter is changed
9-
signal on_parameter_changed(parameter: String, function: String, value: Variant, zone: String)
9+
signal on_parameter_changed(zone: String, parameter: String, function: String, value: Variant)
1010

1111
## Emitted when a parameter is erased
12-
signal on_parameter_erased(parameter: String, zone: String)
12+
signal on_parameter_erased(zone: String, parameter: String)
1313

1414
## Emited when a parameter override is changed or added
15-
signal on_override_changed(parameter: String, function: String, value: Variant, zone: String)
15+
signal on_override_changed(zone: String, parameter: String, function: String, value: Variant)
1616

1717
## Emitted when a parameter override is removed
18-
signal on_override_erased(parameter: String, zone: String)
18+
signal on_override_erased(zone: String, parameter: String)
1919

2020
## Emitted when all overrides are removed
2121
signal on_all_override_removed()

core/components/functions/CueList.gd

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ var _loop_mode: LoopMode = LoopMode.RESET
7777
## Allow cues with trigger modes to loop back to the start when reaching the end.
7878
var _allow_triggered_looping: bool = false
7979

80+
## Allows cues follow modes
81+
var _allow_follow_cues: bool = true
82+
8083
## All active animators
8184
var _active_animators: Array[CueAnimator]
8285

@@ -93,8 +96,8 @@ func _component_ready() -> void:
9396

9497
register_control_method("go_previous", go_previous)
9598
register_control_method("go_next", go_next)
96-
register_control_method("set_global_fade_speed", set_global_fade_speed, get_global_fade_speed, on_global_fade_changed)
97-
register_control_method("set_global_pre_wait_speed", set_global_pre_wait_speed, get_global_pre_wait_speed, on_global_pre_wait_changed)
99+
register_control_method("set_global_fade_speed", set_global_fade_speed, get_global_fade_speed, on_global_fade_changed, [TYPE_FLOAT])
100+
register_control_method("set_global_pre_wait_speed", set_global_pre_wait_speed, get_global_pre_wait_speed, on_global_pre_wait_changed, [TYPE_FLOAT])
98101

99102

100103
## Adds a cue to the list
@@ -305,7 +308,9 @@ func seek_to(cue: Cue) -> void:
305308
_previous_seek_direction = TransportState.BACKWARDS if seeking_backwards else TransportState.FORWARDS
306309
_cue_data_modified = false
307310

308-
_handle_cue_trigger(cue, _active_pos, animator)
311+
if _allow_follow_cues:
312+
_handle_cue_trigger(cue, _active_pos, animator)
313+
309314
_set_transport_state(_previous_seek_direction)
310315
_set_active_state(ActiveState.ENABLED)
311316
_play()
@@ -470,15 +475,18 @@ func _handle_active_state_change(active_state: ActiveState) -> void:
470475
func _handle_transport_state_change(transport_state: TransportState) -> void:
471476
match transport_state:
472477
TransportState.FORWARDS:
478+
_allow_follow_cues = true
473479
if _active_animators and _previous_seek_direction == TransportState.FORWARDS:
474480
_play()
475481
else:
476482
go_next()
477483

478484
TransportState.PAUSED:
485+
_allow_follow_cues = false
479486
_pause()
480487

481488
TransportState.BACKWARDS:
489+
_allow_follow_cues = true
482490
if _active_animators and _previous_seek_direction == TransportState.BACKWARDS:
483491
_play()
484492
else:

core/components/functions/Function.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ func _init(p_uuid: String = UUID_Util.v4(), p_name: String = name) -> void:
8686
register_control_method("full", full)
8787
register_control_method("blackout", blackout)
8888

89-
register_high_frequency_signals([on_intensity_changed])
89+
register_high_frequency_signal(on_intensity_changed)
9090
Server.add_networked_object(_data_container.uuid, _data_container)
9191

9292
super._init(p_uuid, p_name)

core/components/functions/Scene.gd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ func _handle_active_state_change(p_active_state: ActiveState) -> void:
5656
_animator.play()
5757

5858
else:
59+
_animator.pause()
5960
_animator.seek_to(1 if p_active_state else 0)
6061
_set_intensity(1 if p_active_state else 0)
6162

core/engine/Server.gd

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ var websocket_port: int = 3824
1212
var udp_port: int = websocket_port - 1
1313

1414
## How often to send the the UDP queue
15-
var udp_frequency: float = 1.0 / 45.0 # 1 second divided by 45
15+
var udp_frequency: float = 1.0 / 60.0 # 1 second divided by 45
1616

1717
## Disables signal emissions to clients
1818
var disable_signals: bool = false
1919

20-
## Dissables the use of the high frequency UDP socket
21-
var dissable_high_frequency: bool = true
20+
## Dissables the use of the high frequency UDP socketc
21+
var dissable_high_frequency: bool = false
2222

2323

2424
## Used as an internal refernce for timing call_interval correctly
@@ -31,7 +31,7 @@ var _networked_objects: Dictionary = {}
3131
var _networked_object_callbacks: Dictionary = {}
3232

3333
## The queue of data that needs to be send over the UDP socket, there can only be one item in the queue at one, so new data will be merged into what is already there, using Dictionary.merge()
34-
var _udp_queue: Dictionary = {}
34+
var _udp_queue: Dictionary[Array, Dictionary] = {}
3535

3636

3737
func _ready() -> void:
@@ -71,7 +71,14 @@ func _process(delta: float) -> void:
7171
if _accumulated_time >= udp_frequency:
7272

7373
if _udp_queue:
74-
MainUDPSocket.put_var(_udp_queue)
74+
var data: Dictionary[Array, Array]
75+
76+
for id: Array in _udp_queue:
77+
data[id] = []
78+
for base_args: Array in _udp_queue[id].keys():
79+
data[id].append(base_args + _udp_queue[id][base_args])
80+
81+
MainUDPSocket.put_var(data)
7582
_udp_queue = {}
7683

7784
_accumulated_time -= udp_frequency
@@ -83,7 +90,7 @@ func register_component(p_component: EngineComponent) -> void:
8390

8491

8592
## Deregisters a component as a network object
86-
func deregister_component(p_component) -> void:
93+
func deregister_component(p_component: EngineComponent) -> void:
8794
remove_networked_object(p_component.uuid)
8895

8996

@@ -164,9 +171,21 @@ func add_networked_object(object_name: String, object: Object, delete_signal: Si
164171
return not (arg == null)
165172
)
166173

167-
send_high_frequency({
168-
[object_name, object_signal_dict.name]: args
169-
})
174+
var id: Array = [object_name, object_signal_dict.name]
175+
var match_args: int = object_network_config.high_frequency_signals[object_signal]
176+
var args_to_match: Array = args
177+
var args_to_append: Array = []
178+
179+
if match_args:
180+
args_to_match = args.slice(0, match_args)
181+
args_to_append = args.slice(match_args)
182+
183+
if _udp_queue.has(id):
184+
_udp_queue[id][args_to_match] = args_to_append
185+
186+
else:
187+
_udp_queue[id] = {args_to_match: args_to_append}
188+
170189

171190
else:
172191
# Get the signal from the object and connect a function to it that will seralise the data, and send it to the clients

0 commit comments

Comments
 (0)