Beispiel #1
0
    void Send()
    {
        if (lastMessageAction != null && lastMessageAction.Waiting)
        {
            return;
        }

        List <SignalNowTransformableData> toSendTransformable = new List <SignalNowTransformableData>();

        while (!outgoingQueue.IsEmpty)
        {
            SignalNowData data = null;
            if (outgoingQueue.TryDequeue(out data) && data != null)
            {
                string dataType = data.GetType().Name;
                if (dataType == typeof(SignalNowTransformableData).Name)
                {
                    var trans = data as SignalNowTransformableData;

                    var existing = toSendTransformable.Where(t => t.objectName == trans.objectName).FirstOrDefault();
                    if (existing != null && !string.IsNullOrEmpty(existing.objectName))
                    {
                        toSendTransformable.Remove(existing);
                    }

                    toSendTransformable.Add(trans);
                }
            }
        }

        if (toSendTransformable.Count > 0)
        {
            try
            {
                var settings = new JsonSerializerSettings();
                settings.ReferenceLoopHandling = ReferenceLoopHandling.Error;
                string json = JsonConvert.SerializeObject(toSendTransformable.ToArray(), Formatting.None, settings);
                lastMessageAction = client.SendElasticMessage(client.GetEveryoneRecipient(), true, typeof(SignalNowTransformableData).Name, json, true);
            }
            catch (Exception ex)
            {
                Debug.LogError($"Exception when sending an update: {ex.Message}");
            }
        }
    }