示例#1
0
        public void ProcessMessage(ReferenceCountedSceneGraphMessage message)
        {
            // the other end has taken control of this object
            owner          = false;
            rb.isKinematic = true;

            var state = message.FromJson <TransformMessage>();

            transform.localPosition = state.position;
            transform.localRotation = state.rotation;
        }
示例#2
0
        public void ProcessMessage(ReferenceCountedSceneGraphMessage message)
        {
            var hash    = sha526.ComputeHash(message.bytes, message.start, message.length - hashLength);
            var compare = new ReadOnlySpan <byte>(message.bytes, message.start + message.length - hashLength, hashLength).SequenceEqual(hash);

            if (!compare)
            {
                Debug.LogError("Message Corruption Detected");
            }
            received++;
        }
示例#3
0
 public void ProcessMessage(ReferenceCountedSceneGraphMessage data)
 {
     try
     {
         OnRtcMessage(data.FromJson<Message>());
     }
     catch (Exception e)
     {
         Debug.LogException(e);
         return;
     }
 }
示例#4
0
        public void ProcessMessage(ReferenceCountedSceneGraphMessage message)
        {
            var msg = JsonUtility.FromJson <Message>(message.ToString());

            switch (msg.type)
            {
            case "RequestPeerConnection":
                logger.Log("CreatePeerConnectionForRequest", msg.objectid);
                var pc = CreatePeerConnection(msg.objectid, msg.uuid, polite: false);
                break;
            }
        }
示例#5
0
        private void Send()
        {
            // Co-ords from hints are already in local to our network scene
            // so we can send them without any changes
            var transformBytes = MemoryMarshal.AsBytes(new ReadOnlySpan <State>(state));

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

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

            context.Send(message);
        }
示例#6
0
        public void ProcessMessage(ReferenceCountedSceneGraphMessage message)
        {
            var msg = JsonUtility.FromJson <Message>(message.ToString());

            switch (msg.type)
            {
            case "RequestPeerConnection":
                var pc = CreatePeerConnection(msg.objectid, msg.uuid);
                pc.stats.peer = msg.uuid;
                pc.AddLocalAudioSource();
                break;
            }
        }
示例#7
0
        public void ProcessMessage(ReferenceCountedSceneGraphMessage data)
        {
            var message = data.FromJson <Message>();

            // Buffer messages until the RtcPeerConnection is initialised
            if (rtcPeerConnection == null)
            {
                messageQueue.Enqueue(message);
            }
            else
            {
                DoProcessMessage(message);
            }
        }
示例#8
0
    public void ProcessMessage(ReferenceCountedSceneGraphMessage message)
    {
        if (!isMePressStartButton)
        {
            var msg = message.FromJson <Message>();
            spendTime   = msg.time;
            distroyflag = msg.distroyflag;

            /*if (!isgetposition)
             * {
             *  ClosePanel.transform.position = msg.position;
             *  isgetposition = true;
             * }*/
        }
    }
        public void ProcessMessage(ReferenceCountedSceneGraphMessage message)
        {
            if (transforms == null || transforms.Length != flock.boids.Length)
            {
                transforms = new TransformMessage[flock.boids.Length];
            }

            MemoryMarshal.Cast <byte, TransformMessage>(
                new ReadOnlySpan <byte>(message.bytes, message.start, message.length))
            .CopyTo(
                new Span <TransformMessage>(transforms));

            for (int i = 0; i < flock.boids.Length; i++)
            {
                flock.boids[i].transform.localPosition = transforms[i].position;
                flock.boids[i].transform.localRotation = transforms[i].rotation;
            }
        }
        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);
        }
示例#11
0
        public void ProcessMessage(ReferenceCountedSceneGraphMessage message)
        {
            var length = bones.Length + 1;

            if (transforms == null || transforms.Length != length)
            {
                transforms = new TransformMessage[length];
            }

            MemoryMarshal.Cast <byte, TransformMessage>(
                new ReadOnlySpan <byte>(message.bytes, message.start, message.length))
            .CopyTo(
                new Span <TransformMessage>(transforms));

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

            transform.localPosition = transforms[0].position;
            transform.localRotation = transforms[0].rotation;
        }
示例#12
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++;
                }
            }
        }
示例#13
0
 public LogManagerMessage(ReferenceCountedSceneGraphMessage message)
 {
     this.buffer = message;
 }
 public void ProcessMessage(ReferenceCountedSceneGraphMessage message)
 {
     meter.Volume = message.FromJson <Message>().volume;
 }
 public void ProcessMessage(ReferenceCountedSceneGraphMessage message)
 {
 }
        public void ProcessMessage(ReferenceCountedSceneGraphMessage message)
        {
            var m = JsonUtility.FromJson <Message>(message.ToString());

            transform.localPosition = m.position;
        }
示例#17
0
 public void Send(ReferenceCountedSceneGraphMessage m)
 {
     connection.Send(m.buffer);
 }
示例#18
0
        public void ProcessMessage(ReferenceCountedSceneGraphMessage message)
        {
            var msg = message.FromJson <Message>();

            Instantiate(msg.catalogueIndex, msg.networkId, false);
        }
示例#19
0
        private void Update()
        {
            foreach (var client in clients)
            {
                while (true)
                {
                    var buffer = client.connection.Receive();

                    if (buffer == null)
                    {
                        break;
                    }

                    try
                    {
                        var message = new ReferenceCountedSceneGraphMessage(buffer);

                        // check if this message is meant for us, or if we are to forward it

                        if (message.objectid == this.objectId)
                        {
                            var container = JsonUtility.FromJson <Message>(message.ToString());
                            switch (container.type)
                            {
                            case "Join":
                                var joinArgs = JsonUtility.FromJson <JoinArgs>(container.args);
                                client.peer = joinArgs.peer;
                                room.Join(client);
                                break;

                            case "UpdatePeer":
                                client.peer = JsonUtility.FromJson <PeerInfo>(container.args);
                                if (client.room != null)
                                {
                                    client.room.SendPeerUpdate(client.peer);
                                }
                                break;

                            case "UpdateRoom":
                                room.SetRoomArgs(JsonUtility.FromJson <RoomInfo>(container.args));
                                break;

                            case "RequestRooms":
                                client.SendRooms(AvailableRooms);
                                break;

                            case "":

                                break;
                            }
                        }
                        else
                        {
                            if (client.room != null) // if it is a member of a room...
                            {
                                foreach (var item in client.room.clients)
                                {
                                    if (item != client)
                                    {
                                        message.Acquire();
                                        item.Send(message);
                                    }
                                }
                            }
                        }
                    }
                    finally
                    {
                        buffer.Release();
                    }
                }
            }

            // actions to be taken once outside the enumators (e.g. removing items from the lists...)

            foreach (var item in actions)
            {
                item();
            }
            actions.Clear();
        }
示例#20
0
 public void ProcessMessage(ReferenceCountedSceneGraphMessage message)
 {
     JsonUtility.FromJsonOverwrite(message.ToString(), state);
 }
示例#21
0
 public void ProcessMessage(ReferenceCountedSceneGraphMessage message)
 {
     conversationBox.text += message.ToString() + "\n";
 }