Esempio n. 1
0
 public void ProcessMessage(ReferenceCountedSceneGraphMessage message)
 {
     JsonUtility.FromJsonOverwrite(message.ToString(), state);
 }
Esempio n. 2
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 <JoinRequest>(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 "Ping":
                                client.SendPing(new PingResponse()
                                {
                                    sessionId = "sampleroom"
                                });
                                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();
        }
Esempio n. 3
0
 public void ProcessMessage(ReferenceCountedSceneGraphMessage message)
 {
     conversationBox.text += message.ToString() + "\n";
 }