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_Login(ARWObject obj, SpecialRequestParam specialReqParam)
        {
            if (ARWServer.instance == null)
            {
                return;
            }

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

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

            ARWEvents.LOGIN.handler(obj, newUser);
        }
        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);
        }
        public void P_Connection(ARWObject arwObject, SpecialRequestParam specialReqParam)
        {
            if (ARWServer.instance == null)
            {
                return;
            }

            // DateTime t = DateTime.Parse(specialReqParam.GetString("server_time"));
            // ARWServer.instance.SetServerTime(t);

            if (specialReqParam.GetString("error") == "")
            {
                ARWServer.instance.isConnected = true;
            }

            if (ARWEvents.CONNECTION.handler != null)
            {
                ARWEvents.CONNECTION.handler(arwObject);
            }
        }
        public void P_Extension_Response(ARWObject obj, SpecialRequestParam specialReqParam)
        {
            ExtensionRequest currentExtension = ARWServer.instance.GetExtensionRequest(specialReqParam.GetString("cmd"));

            if (currentExtension == null)
            {
                return;
            }

            currentExtension.handler(obj);
        }