public void ProcessMessage(ReferenceCountedSceneGraphMessage message) { JsonUtility.FromJsonOverwrite(message.ToString(), state); }
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(); }
public void ProcessMessage(ReferenceCountedSceneGraphMessage message) { conversationBox.text += message.ToString() + "\n"; }