public void SetRegions(OperationResponse opGetRegions) { if (opGetRegions.OperationCode != OperationCode.GetRegions) { return; } if (opGetRegions.ReturnCode != ErrorCode.Ok) { return; } string[] regions = opGetRegions[ParameterCode.Region] as string[]; string[] servers = opGetRegions[ParameterCode.Address] as string[]; if (regions == null || servers == null || regions.Length != servers.Length) { //TODO: log error //Debug.LogError("The region arrays from Name Server are not ok. Must be non-null and same length. " + (regions == null) + " " + (servers == null) + "\n" + opGetRegions.ToStringFull()); return; } this.bestRegionCache = null; this.EnabledRegions = new List <Region>(regions.Length); for (int i = 0; i < regions.Length; i++) { string server = servers[i]; if (PortToPingOverride != 0) { server = LoadBalancingClient.ReplacePortWithAlternative(servers[i], PortToPingOverride); } Region tmp = new Region(regions[i], server); if (string.IsNullOrEmpty(tmp.Code)) { continue; } this.EnabledRegions.Add(tmp); } Array.Sort(regions); this.availableRegionCodes = string.Join(",", regions); }