87 return SCR_PlayerReconnectData;
93 const SCR_PlayerReconnectData state = SCR_PlayerReconnectData.Cast(instance);
96 manager.GetPlayers(players);
97 foreach (
int player : players)
99 const UUID characterId = GetSystem().GetId(manager.GetPlayerControlledEntity(player));
100 if (!characterId.IsNull())
101 state.m_aPlayerCharacters.Insert(characterId);
104 array<ref SCR_PersistentReconnectData> reconnectData();
111 persistentData.m_sPlayerIdentity = playerIdentity;
112 persistentData.ReadFrom(GetSystem(),
data);
113 reconnectData.Insert(persistentData);
117 if (state.m_aPlayerCharacters.IsEmpty() && reconnectData.IsEmpty())
120 context.WriteValue(
"version", 1);
122 if (!state.m_aPlayerCharacters.IsEmpty() || !context.CanSeekMembers())
123 context.WriteValue(
"active", state.m_aPlayerCharacters);
125 if (!reconnectData.IsEmpty() || !context.CanSeekMembers())
127 const bool prev = context.EnableTypeDiscriminator(
false);
128 context.WriteValue(
"reconnect", reconnectData);
129 context.EnableTypeDiscriminator(prev);
136 override bool Deserialize(notnull Managed instance, notnull
LoadContext context)
138 SCR_PlayerReconnectData state = SCR_PlayerReconnectData.Cast(instance);
141 context.Read(version);
143 context.ReadValue(
"active", state.m_aPlayerCharacters);
144 if (!state.m_aPlayerCharacters.IsEmpty())
151 array<ref SCR_PersistentReconnectData>
data;
152 const bool prev = context.EnableTypeDiscriminator(
false);
153 context.ReadValue(
"reconnect",
data);
154 context.EnableTypeDiscriminator(prev);
160 persistentData.ApplyTo(GetSystem(), entry);