public void P_User_Enter_Room(ARWObject obj, SpecialRequestParam specialReqParam)
        {
            if (ARWServer.instance == null)
            {
                return;
            }

            string  userProperties = specialReqParam.GetString("user_properties");
            ARWUser newUser        = ARWUserManager.instance.CreateUser(new JSONObject(userProperties));

            ARWRoom currentRoom = ARWRoomManager.instance.allRooms.Where(a => a.id == specialReqParam.GetInt("room_id")).FirstOrDefault();

            if (currentRoom == null)
            {
                return;
            }
            currentRoom.AddUserToRoom(newUser);

            if (ARWEvents.USER_ENTER_ROOM.handler == null)
            {
                return;
            }

            ARWEvents.USER_ENTER_ROOM.handler(obj, newUser);
        }
        public void P_User_Exit_Room(ARWObject obj, SpecialRequestParam specialReqParam)
        {
            if (ARWServer.instance == null)
            {
                return;
            }

            ARWRoom currentRoom = ARWRoomManager.instance.allRooms.Where(a => a.id == specialReqParam.GetInt("room_id")).FirstOrDefault();

            if (currentRoom == null)
            {
                return;
            }

            int     userId     = specialReqParam.GetInt("user_id");
            ARWUser userLeaved = currentRoom.userList.Where(a => a.userId == userId).FirstOrDefault();

            if (userLeaved == null)
            {
                return;
            }

            currentRoom.RemoveUser(userLeaved);

            if (ARWEvents.USER_EXIT_ROOM.handler == null)
            {
                return;
            }

            ARWEvents.USER_EXIT_ROOM.handler(obj, userLeaved);
        }
        public ARWRoom CreateRoom(string roomData)
        {
            ARWRoom newRoom = new ARWRoom(roomData);

            if (this._allRooms.Where(a => a.id == newRoom.id).FirstOrDefault() == null)
            {
                this._allRooms.Add(newRoom);
                return(newRoom);
            }
            return(null);
        }
        public void P_Join_Room(ARWObject obj, SpecialRequestParam specialReqParam)
        {
            if (ARWServer.instance == null)
            {
                return;
            }

            string     roomData     = specialReqParam.GetString("room_properties");
            JSONObject roomDataJson = new JSONObject(roomData);
            ARWRoom    newRoom      = ARWRoomManager.instance.CreateRoom(roomData);

            ARWUserManager.instance.me.lastJoinedRoom = newRoom;

            if (ARWEvents.ROOM_JOIN.handler == null)
            {
                return;
            }

            ARWEvents.ROOM_JOIN.handler(obj, newRoom);
        }