Inheritance: global::ProtoBuf.IExtensible
        //--------------------------------------------------------------------------------------------------------------------------
        //这些方法是一些工具方法,后面需要重新考虑并发相关的处理。
        //--------------------------------------------------------------------------------------------------------------------------
        internal UserInfo AddOrUpdateUserInfo(Msg_LB_BigworldUserBaseInfo baseUserInfo, Msg_LR_RoomUserInfo roomUserInfo, int leftLifeTime)
        {
            ulong guid = roomUserInfo.Guid;
              UserInfo info;
              if (!m_UserInfos.TryGetValue(guid, out info)) {
            info = NewUserInfo();
            info.Key = GenerateKey();
              }
              info.BaseUserInfo = baseUserInfo;
              info.RoomUserInfo = roomUserInfo;

              info.LeftLife = leftLifeTime;
              info.CurrentState = UserState.Online;

              m_UserInfos.AddOrUpdate(guid, info, (g, u) => info);
              m_GuidByNickname.AddOrUpdate(info.Nickname, guid, (n, g) => guid);

              ActivateUserGuid(guid);
              return info;
        }
        private void HandleEnterScene(NodeMessage msg, int handle, uint seq)
        {
            GameFrameworkMessage.NodeMessageWithGuid headerMsg = msg.m_NodeHeader as GameFrameworkMessage.NodeMessageWithGuid;
            if (null != headerMsg) {
                GameFrameworkMessage.EnterScene protoMsg = msg.m_ProtoData as GameFrameworkMessage.EnterScene;
                if (null != protoMsg) {
                    ulong guid = headerMsg.m_Guid;
                    int sceneId = protoMsg.m_SceneId;
                    int wantRoomId = protoMsg.m_RoomId;

                    UserProcessScheduler dataProcess = UserServer.Instance.UserProcessScheduler;
                    UserInfo user = dataProcess.GetUserInfo(guid);
                    if (user != null) {
                        Msg_LB_RequestEnterScene builder = new Msg_LB_RequestEnterScene();
                        Msg_LB_BigworldUserBaseInfo baseInfoBuilder = new Msg_LB_BigworldUserBaseInfo();

                        baseInfoBuilder.AccountId = user.AccountId;
                        baseInfoBuilder.NodeName = user.NodeName;
                        baseInfoBuilder.WorldId = UserServerConfig.WorldId;
                        baseInfoBuilder.ClientInfo = user.ClientInfo;
                        baseInfoBuilder.StartServerTime = UserServerConfig.StartServerTime;
                        baseInfoBuilder.SceneId = user.SceneId;

                        builder.BaseInfo = baseInfoBuilder;
                        builder.User = UserThread.BuildRoomUserInfo(user, 0, 0);
                        builder.SceneId = sceneId;
                        builder.WantRoomId = wantRoomId;
                        builder.FromSceneId = user.SceneId;
                        UserServer.Instance.BigworldChannel.Send(builder);
                    }
                }
            }
        }