static void OnMakeStableBatchReq(ref MakeStableBatchReqMsg msg, MyNetworkClient sender) { var character = sender.FirstPlayer.Character; if (character == null) { return; } m_floatingObjects.ProcessStableBatchReq(msg.Entities, character, m_tmpStableData, m_tmpNonStableIds); if (m_tmpStableData.Count > 0) { var totalSize = m_tmpStableData.Count * RelativeEntityDataSize + MakeStableBatchEntityDataSize; if (totalSize > 1000) { var desired = 1000 / RelativeEntityDataSize; var tmpList = new List <MakeStableEntityData>(); for (int i = 0; i < m_tmpStableData.Count; i += desired) { int count = Math.Min(i + desired, m_tmpStableData.Count); for (int j = i; j < count; ++j) { tmpList.Add(m_tmpStableData[j]); } var partMsg = new MakeStableBatchMsg() { StableObjects = tmpList }; Sync.Layer.SendMessage(ref partMsg, sender.SteamUserId, MyTransportMessageEnum.Success); tmpList.Clear(); } } else { var batchMsg = new MakeStableBatchMsg() { StableObjects = m_tmpStableData }; Sync.Layer.SendMessage(ref batchMsg, sender.SteamUserId, MyTransportMessageEnum.Success); } m_tmpStableData.Clear(); } if (m_tmpNonStableIds.Count > 0) { msg = new MakeStableBatchReqMsg() { Entities = m_tmpNonStableIds }; Sync.Layer.SendMessage(ref msg, sender.SteamUserId, MyTransportMessageEnum.Failure); m_tmpNonStableIds.Clear(); } }
static void OnMakeStableBatchSuccess(ref MakeStableBatchMsg msg, MyNetworkClient sender) { m_floatingObjects.MakeStable(msg.StableObjects); }