コード例 #1
0
        // Update is called once per frame
        void Update()
        {
            bool transmitLocal  = localCollectors.Any(c => c.Collecting);
            bool transmitRemote = Mode == LogManagerMode.Transmit;
            bool holdLogs       = Mode == LogManagerMode.Hold;

            if (transmitLocal || transmitRemote)
            {
                JsonWriter writer;
                while (events.Dequeue(out writer))
                {
                    try
                    {
                        if (transmitRemote)
                        {
                            var message = LogManagerMessage.Rent(writer.GetSpan(), writer.Tag);
                            message.objectid    = LogCollector.Id;
                            message.componentid = LogCollector.ComponentId;
                            context.Send(message);
                        }

                        if (transmitLocal)
                        {
                            foreach (var item in localCollectors)
                            {
                                item.Push(writer.GetSpan(), writer.Tag);
                            }
                        }
                    }
                    finally
                    {
                        Release(ref writer);
                    }
                }
            }

            if (!holdLogs)
            {
                while (Memory > MaxMemory) // If the queued events are taking up too much space, then dump them starting from the back of the queue
                {
                    JsonWriter writer;
                    if (events.Dequeue(out writer))
                    {
                        Release(ref writer);
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
コード例 #2
0
        private void Send()
        {
            if (transforms == null || transforms.Length != flock.boids.Length)
            {
                transforms = new TransformMessage[flock.boids.Length];
            }

            for (int i = 0; i < flock.boids.Length; i++)
            {
                transforms[i].position = flock.boids[i].transform.localPosition;
                transforms[i].rotation = flock.boids[i].transform.localRotation;
            }

            var transformsBytes = MemoryMarshal.AsBytes(new ReadOnlySpan <TransformMessage>(transforms));

            var message = ReferenceCountedSceneGraphMessage.Rent(transformsBytes.Length);

            transformsBytes.CopyTo(new Span <byte>(message.bytes, message.start, message.length));

            context.Send(message);
        }
コード例 #3
0
        // Update is called once per frame
        void Update()
        {
            if (run)
            {
                for (int i = 0; i < messagesPerFrame; i++)
                {
                    if (sent >= totalMessages)
                    {
                        return;
                    }

                    int length  = UnityEngine.Random.Range(hashLength + 2, maxMessageSize);
                    var message = ReferenceCountedSceneGraphMessage.Rent(length);

                    var datalength = length - hashLength;

                    for (int j = 0; j < datalength; j++)
                    {
                        message.bytes[message.start + j] = (byte)UnityEngine.Random.Range(0, 255);
                    }

                    Array.Copy(sha526.ComputeHash(message.bytes, message.start, datalength), 0, message.bytes, message.start + datalength, hashLength);

                    if (corrupt)
                    {
                        for (int j = 0; j < datalength; j++)
                        {
                            message.bytes[message.start + j] = (byte)UnityEngine.Random.Range(0, 255);
                        }
                    }

                    context.Send(message);

                    sent++;
                }
            }
        }
コード例 #4
0
ファイル: TextChatManager.cs プロジェクト: AriaTZY/MonopolyVR
 void SendMessage()
 {
     conversationBox.text += sendBox.text + "\n";
     context.Send(sendBox.text);
     sendBox.text = "";
 }