Skip to content

Commit e5bde99

Browse files
committed
Removed the extra InputID from the snapshot.
1 parent 984d938 commit e5bde99

File tree

2 files changed

+14
-29
lines changed

2 files changed

+14
-29
lines changed

scene_synchronizer.cpp

Lines changed: 13 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2010,15 +2010,13 @@ void ServerSynchronizer::process_snapshot_notificator() {
20102010
group.state_notifier_timer = 0.0;
20112011
}
20122012

2013-
const int MD_SIZE = DataBuffer::get_bit_taken(DataBuffer::DATA_TYPE_UINT, DataBuffer::COMPRESSION_LEVEL_1);
2014-
20152013
bool full_snapshot_need_init = true;
20162014
DataBuffer full_snapshot;
2017-
full_snapshot.begin_write(MD_SIZE);
2015+
full_snapshot.begin_write(0);
20182016

20192017
bool delta_snapshot_need_init = true;
20202018
DataBuffer delta_snapshot;
2021-
delta_snapshot.begin_write(MD_SIZE);
2019+
delta_snapshot.begin_write(0);
20222020

20232021
for (int peer_id : group.get_listening_peers()) {
20242022
if (peer_id == scene_synchronizer->get_network_interface().fetch_local_peer_id()) {
@@ -2053,7 +2051,6 @@ void ServerSynchronizer::process_snapshot_notificator() {
20532051
pd_it->second.need_full_snapshot = false;
20542052
if (full_snapshot_need_init) {
20552053
full_snapshot_need_init = false;
2056-
full_snapshot.seek(MD_SIZE);
20572054
generate_snapshot(true, group, full_snapshot);
20582055
}
20592056

@@ -2062,16 +2059,12 @@ void ServerSynchronizer::process_snapshot_notificator() {
20622059
} else {
20632060
if (delta_snapshot_need_init) {
20642061
delta_snapshot_need_init = false;
2065-
delta_snapshot.seek(MD_SIZE);
20662062
generate_snapshot(false, group, delta_snapshot);
20672063
}
20682064

20692065
snap = &delta_snapshot;
20702066
}
20712067

2072-
snap->seek(0);
2073-
snap->add(input_id.id);
2074-
20752068
scene_synchronizer->rpc_handler_state.rpc(
20762069
scene_synchronizer->get_network_interface(),
20772070
peer_id,
@@ -3123,8 +3116,7 @@ bool ClientSynchronizer::parse_sync_data(
31233116
void *p_user_pointer,
31243117
void (*p_custom_data_parse)(void *p_user_pointer, VarData &&p_custom_data),
31253118
void (*p_object_parse)(void *p_user_pointer, NS::ObjectData *p_object_data),
3126-
void (*p_peers_frame_index_parse)(void *p_user_pointer, std::map<int, FrameIndex> &&p_frames_index),
3127-
void (*p_input_id_parse)(void *p_user_pointer, FrameIndex p_input_id),
3119+
bool (*p_peers_frame_index_parse)(void *p_user_pointer, std::map<int, FrameIndex> &&p_frames_index),
31283120
void (*p_variable_parse)(void *p_user_pointer, NS::ObjectData *p_object_data, VarId p_var_id, VarData &&p_value),
31293121
void (*p_simulated_objects_parse)(void *p_user_pointer, std::vector<ObjectNetId> &&p_simulated_objects)) {
31303122
NS_PROFILE
@@ -3140,12 +3132,6 @@ bool ClientSynchronizer::parse_sync_data(
31403132
}
31413133

31423134
{
3143-
// Fetch the `InputID`.
3144-
FrameIndex input_id;
3145-
p_snapshot.read(input_id.id);
3146-
ENSURE_V_MSG(!p_snapshot.is_buffer_failed(), false, "This snapshot is corrupted as the `InputID` expected is not set.");
3147-
p_input_id_parse(p_user_pointer, input_id);
3148-
31493135
// Fetch `active_node_list_byte_array`.
31503136
bool has_active_list_array;
31513137
p_snapshot.read(has_active_list_array);
@@ -3335,7 +3321,7 @@ bool ClientSynchronizer::parse_sync_data(
33353321
}
33363322
}
33373323

3338-
p_peers_frame_index_parse(p_user_pointer, std::move(frames_index));
3324+
ENSURE_V_MSG(p_peers_frame_index_parse(p_user_pointer, std::move(frames_index)), false, "This snapshot is corrupted as the frame index parsing failed.");
33393325

33403326
return true;
33413327
}
@@ -3583,19 +3569,19 @@ bool ClientSynchronizer::parse_snapshot(DataBuffer &p_snapshot) {
35833569
},
35843570

35853571
// Parse peer frames index
3586-
[](void *p_user_pointer, std::map<int, FrameIndex> &&p_peers_frames_index) {
3572+
[](void *p_user_pointer, std::map<int, FrameIndex> &&p_peers_frames_index) -> bool {
35873573
ParseData *pd = static_cast<ParseData *>(p_user_pointer);
35883574

3575+
// Extract the InputID for the controller processed as Authority by this client.
3576+
const FrameIndex authority_frame_index = MapFunc::at(p_peers_frames_index, pd->player_controller->get_authority_peer(), FrameIndex::NONE);
3577+
3578+
// Store it.
3579+
pd->snapshot.input_id = authority_frame_index;
3580+
3581+
// Store the frames index.
35893582
pd->snapshot.peers_frames_index = std::move(p_peers_frames_index);
3590-
},
35913583

3592-
// Parse InputID:
3593-
[](void *p_user_pointer, FrameIndex p_input_id) {
3594-
ParseData *pd = static_cast<ParseData *>(p_user_pointer);
3595-
if (pd->player_controller != nullptr && pd->player_controller->can_simulate()) {
3596-
// This is the main controller, store the `InputID`.
3597-
pd->snapshot.input_id = p_input_id;
3598-
}
3584+
return true;
35993585
},
36003586

36013587
// Parse variable:

scene_synchronizer.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -817,8 +817,7 @@ class ClientSynchronizer final : public Synchronizer {
817817
void *p_user_pointer,
818818
void (*p_custom_data_parse)(void *p_user_pointer, VarData &&p_custom_data),
819819
void (*p_object_parse)(void *p_user_pointer, NS::ObjectData *p_object_data),
820-
void (*p_peers_frame_index_parse)(void *p_user_pointer, std::map<int, FrameIndex> &&p_frames_index),
821-
void (*p_input_id_parse)(void *p_user_pointer, FrameIndex p_frame_index),
820+
bool (*p_peers_frame_index_parse)(void *p_user_pointer, std::map<int, FrameIndex> &&p_frames_index),
822821
void (*p_variable_parse)(void *p_user_pointer, NS::ObjectData *p_object_data, VarId p_var_id, VarData &&p_value),
823822
void (*p_simulated_objects_parse)(void *p_user_pointer, std::vector<ObjectNetId> &&p_simulated_objects));
824823

0 commit comments

Comments
 (0)