Exemple #1
0
        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();
            }
        }
Exemple #2
0
 static void OnMakeStableBatchSuccess(ref MakeStableBatchMsg msg, MyNetworkClient sender)
 {
     m_floatingObjects.MakeStable(msg.StableObjects);
 }