Skip to content

Commit b17eb56

Browse files
committed
Improved the function bind implementation.
1 parent 10e6a73 commit b17eb56

3 files changed

Lines changed: 9 additions & 15 deletions

File tree

core/peer_networked_controller.cpp

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -258,19 +258,13 @@ void PeerNetworkedController::setup_synchronizer(NS::SceneSynchronizerBase &p_sy
258258
authority_peer = p_peer;
259259

260260
event_handler_peer_status_updated =
261-
scene_synchronizer->event_peer_status_updated.bind([this](int p_peer_id, bool p_connected, bool p_enabled) -> void {
262-
on_peer_status_updated(p_peer_id, p_connected, p_enabled);
263-
});
261+
scene_synchronizer->event_peer_status_updated.bind(std::bind(&PeerNetworkedController::on_peer_status_updated, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
264262

265263
event_handler_state_validated =
266-
scene_synchronizer->event_state_validated.bind([this](FrameIndex p_input_id, bool p_desync_detected) -> void {
267-
on_state_validated(p_input_id);
268-
});
264+
scene_synchronizer->event_state_validated.bind(std::bind(&PeerNetworkedController::on_state_validated, this, std::placeholders::_1, std::placeholders::_2));
269265

270266
event_handler_rewind_frame_begin =
271-
scene_synchronizer->event_rewind_frame_begin.bind([this](FrameIndex p_frame_index, int p_index, int p_count) -> void {
272-
on_rewind_frame_begin(p_frame_index, p_index, p_count);
273-
});
267+
scene_synchronizer->event_rewind_frame_begin.bind(std::bind(&PeerNetworkedController::on_rewind_frame_begin, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
274268
}
275269

276270
void PeerNetworkedController::remove_synchronizer() {
@@ -306,7 +300,7 @@ void PeerNetworkedController::on_peer_status_updated(int p_peer_id, bool p_conne
306300
}
307301
}
308302

309-
void PeerNetworkedController::on_state_validated(FrameIndex p_frame_index) {
303+
void PeerNetworkedController::on_state_validated(FrameIndex p_frame_index, bool p_detected_desync) {
310304
if (controller) {
311305
controller->on_state_validated(p_frame_index);
312306
}

core/peer_networked_controller.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ class PeerNetworkedController final {
196196
bool has_scene_synchronizer() const;
197197

198198
void on_peer_status_updated(int p_peer_id, bool p_connected, bool p_enabled);
199-
void on_state_validated(FrameIndex p_frame_index);
199+
void on_state_validated(FrameIndex p_frame_index, bool p_detected_desync);
200200
void on_rewind_frame_begin(FrameIndex p_input_id, int p_index, int p_count);
201201

202202
void controllable_collect_input(double p_delta, DataBuffer &r_data_buffer);

tests/test_scene_synchronizer.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ class LocalNetworkedController : public NS::LocalSceneObject {
6060
p_scene_sync.setup_controller(
6161
p_id,
6262
authoritative_peer_id,
63-
[this](double p_delta, DataBuffer &r_buffer) -> void { collect_inputs(p_delta, r_buffer); },
64-
[this](DataBuffer &p_buffer) -> int { return count_input_size(p_buffer); },
65-
[this](DataBuffer &p_buffer_A, DataBuffer &p_buffer_b) -> bool { return are_inputs_different(p_buffer_A, p_buffer_b); },
66-
[this](double p_delta, DataBuffer &p_buffer) -> void { controller_process(p_delta, p_buffer); });
63+
std::bind(&LocalNetworkedController::collect_inputs, this, std::placeholders::_1, std::placeholders::_2),
64+
std::bind(&LocalNetworkedController::count_input_size, this, std::placeholders::_1),
65+
std::bind(&LocalNetworkedController::are_inputs_different, this, std::placeholders::_1, std::placeholders::_2),
66+
std::bind(&LocalNetworkedController::controller_process, this, std::placeholders::_1, std::placeholders::_2));
6767

6868
p_scene_sync.register_variable(p_id, "position");
6969
}

0 commit comments

Comments
 (0)