Beispiel #1
0
    public bool ConnectToZone(string sceneName, string worldName = null, string onJoinNotificationTag = null)
    {
        ZoneDefinition zoneBySceneName = GetZoneBySceneName(sceneName);

        if (zoneBySceneName == null)
        {
            Log.LogError(this, "Attempting to join a zone that doesn't exist");
            return(false);
        }
        if (!startZoneTransition(sceneName, onJoinNotificationTag))
        {
            return(false);
        }
        PresenceData      component         = dataEntityCollection.GetComponent <PresenceData>(dataEntityCollection.LocalPlayerHandle);
        ContentIdentifier contentIdentifier = generateContentIdentifier();

        if (!string.IsNullOrEmpty(worldName))
        {
            targetWorldToJoin = worldName;
            ZoneId zoneId = new ZoneId();
            zoneId.name = zoneBySceneName.ZoneName;
            Service.Get <INetworkServicesManager>().WorldService.JoinRoomInWorld(new RoomIdentifier(worldName, Service.Get <Localizer>().Language, zoneId, contentIdentifier.ToString()), this);
        }
        else if (component != null && !string.IsNullOrEmpty(component.World))
        {
            targetWorldToJoin = component.World;
            ZoneId zoneId = new ZoneId();
            zoneId.name = zoneBySceneName.ZoneName;
            Service.Get <INetworkServicesManager>().WorldService.JoinRoomInWorld(new RoomIdentifier(component.World, Service.Get <Localizer>().Language, zoneId, contentIdentifier.ToString()), this);
        }
        else
        {
            targetWorldToJoin = null;
            Service.Get <INetworkServicesManager>().WorldService.JoinRoom(zoneBySceneName.ZoneName, contentIdentifier.ToString(), Service.Get <Localizer>().LanguageString, this);
        }
        PreviousZone      = CurrentZone;
        CurrentZone       = zoneBySceneName;
        CurrentInstanceId = "";
        return(IsConnecting);
    }