public void ToNative(IntPtr address) { Native_FOnlineSessionSettings.Set_NumPublicConnections(address, NumPublicConnections); Native_FOnlineSessionSettings.Set_NumPrivateConnections(address, NumPrivateConnections); Native_FOnlineSessionSettings.Set_bShouldAdvertise(address, bShouldAdvertise); Native_FOnlineSessionSettings.Set_bAllowJoinInProgress(address, bAllowJoinInProgress); Native_FOnlineSessionSettings.Set_bIsLANMatch(address, bIsLANMatch); Native_FOnlineSessionSettings.Set_bIsDedicated(address, bIsDedicated); Native_FOnlineSessionSettings.Set_bUsesStats(address, bUsesStats); Native_FOnlineSessionSettings.Set_bAllowInvites(address, bAllowInvites); Native_FOnlineSessionSettings.Set_bUsesPresence(address, bUsesPresence); Native_FOnlineSessionSettings.Set_bAllowJoinViaPresence(address, bAllowJoinViaPresence); Native_FOnlineSessionSettings.Set_bAllowJoinViaPresenceFriendsOnly(address, bAllowJoinViaPresenceFriendsOnly); Native_FOnlineSessionSettings.Set_bAntiCheatProtected(address, bAntiCheatProtected); Native_FOnlineSessionSettings.Set_BuildUniqueId(address, BuildUniqueId); using (TArrayUnsafe <string> keysUnsafe = new TArrayUnsafe <string>()) using (TArrayUnsafe <string> valuesUnsafe = new TArrayUnsafe <string>()) { if (Settings != null) { foreach (KeyValuePair <string, FOnlineSessionSetting> setting in Settings) { keysUnsafe.Add(setting.Key); valuesUnsafe.Add((int)setting.Value.AdvertisementType + "|" + setting.Value.ID + "|" + setting.Value.Data.ToStringEx()); } } Native_FOnlineSessionSettings.Set_Settings(address, keysUnsafe.Address, valuesUnsafe.Address); } }
public void FromNative(IntPtr address) { if (Settings == null) { Settings = new Dictionary <string, FOnlineSessionSetting>(); } else { Settings.Clear(); } NumPublicConnections = Native_FOnlineSessionSettings.Get_NumPublicConnections(address); NumPrivateConnections = Native_FOnlineSessionSettings.Get_NumPrivateConnections(address); bShouldAdvertise = Native_FOnlineSessionSettings.Get_bShouldAdvertise(address); bAllowJoinInProgress = Native_FOnlineSessionSettings.Get_bAllowJoinInProgress(address); bIsLANMatch = Native_FOnlineSessionSettings.Get_bIsLANMatch(address); bIsDedicated = Native_FOnlineSessionSettings.Get_bIsDedicated(address); bUsesStats = Native_FOnlineSessionSettings.Get_bUsesStats(address); bAllowInvites = Native_FOnlineSessionSettings.Get_bAllowInvites(address); bUsesPresence = Native_FOnlineSessionSettings.Get_bUsesPresence(address); bAllowJoinViaPresence = Native_FOnlineSessionSettings.Get_bAllowJoinViaPresence(address); bAllowJoinViaPresenceFriendsOnly = Native_FOnlineSessionSettings.Get_bAllowJoinViaPresenceFriendsOnly(address); bAntiCheatProtected = Native_FOnlineSessionSettings.Get_bAntiCheatProtected(address); BuildUniqueId = Native_FOnlineSessionSettings.Get_BuildUniqueId(address); using (TArrayUnsafe <string> keysUnsafe = new TArrayUnsafe <string>()) using (TArrayUnsafe <string> valuesUnsafe = new TArrayUnsafe <string>()) { Native_FOnlineSessionSettings.Get_Settings(address, keysUnsafe.Address, valuesUnsafe.Address); if (keysUnsafe.Count == valuesUnsafe.Count) { int count = keysUnsafe.Count; for (int i = 0; i < count; i++) { FOnlineSessionSetting setting = default(FOnlineSessionSetting); string valueStr = valuesUnsafe[i]; int index = valueStr.IndexOf('|'); setting.AdvertisementType = (EOnlineDataAdvertisementType)int.Parse(valueStr.Substring(0, index)); valueStr = valueStr.Substring(index + 1); index = valueStr.IndexOf('|'); setting.ID = int.Parse(valueStr.Substring(0, index)); valueStr = valueStr.Substring(index + 1); setting.Data.FromStringEx(valueStr); Settings[keysUnsafe[i]] = setting; } } } }