void ProcessRoomData(Message <Room> msg) { if (msg.Data.OwnerOptional != null && msg.Data.OwnerOptional.ID == SocialPlatformManager.MyID) { amIServer = true; } else { amIServer = false; } // if the caller left while I was in the process of joining, just use that as our new room if (msg.Data.UsersOptional != null && msg.Data.UsersOptional.Count == 1) { SocialPlatformManager.TransitionToState(SocialPlatformManager.State.WAITING_IN_A_ROOM); } else { SocialPlatformManager.TransitionToState(SocialPlatformManager.State.CONNECTED_IN_A_ROOM); } // Look for users that left SocialPlatformManager.MarkAllRemoteUsersAsNotInRoom(); if (msg.Data.UsersOptional != null) { foreach (User user in msg.Data.UsersOptional) { if (user.ID != SocialPlatformManager.MyID) { if (!SocialPlatformManager.IsUserInRoom(user.ID)) { SocialPlatformManager.AddRemoteUser(user.ID); } else { SocialPlatformManager.MarkRemoteUserInRoom(user.ID); } } } } SocialPlatformManager.ForgetRemoteUsersNotInRoom(); SocialPlatformManager.SetFloorColorForState(amIServer); }