// Old API methods, will be made obsolete when the new API is implemented for all platforms, // currently it functions as a wrapper for the new API for all platforms that support it (iOS, Android & tvOS). public static void SetIconsForTargetGroup(BuildTargetGroup platform, Texture2D[] icons, IconKind kind) { if (platform == BuildTargetGroup.iOS || platform == BuildTargetGroup.tvOS || platform == BuildTargetGroup.Android) { IPlatformIconProvider iconProvider = GetPlatformIconProvider(platform); if (iconProvider == null) { return; } PlatformIconKind platformIconKind = iconProvider.GetPlatformIconKindFromEnumValue(kind); PlatformIcon[] platformIcons = GetPlatformIcons(platform, platformIconKind); for (var i = 0; i < icons.Length; i++) { platformIcons[i].SetTexture(icons[i], 0); } SetPlatformIcons(platform, platformIconKind, platformIcons); } else { SetIconsForPlatform(GetPlatformName(platform), icons, kind); } }
public static void SetPlatformIcons(BuildTargetGroup platform, PlatformIconKind kind, PlatformIcon[] icons) { string platformName = GetPlatformName(platform); IPlatformIconProvider platformIconProvider = GetPlatformIconProvider(platform); if (platformIconProvider == null) { return; } int requiredIconCount = PlatformIcon.GetRequiredPlatformIconsByType(platformIconProvider, kind).Length; PlatformIconStruct[] iconStructs; if (icons == null) { iconStructs = new PlatformIconStruct[0]; } else if (requiredIconCount != icons.Length) { throw new InvalidOperationException(string.Format("Attempting to set an incorrect number of icons for {0} {1} kind, it requires {2} icons but trying to assign {3}.", platform.ToString(), kind.ToString(), requiredIconCount, icons.Length) ); } else { iconStructs = icons.Select( i => i.GetPlatformIconStruct() ).ToArray <PlatformIconStruct>(); } SetPlatformIconsInternal(platformName, iconStructs, kind.kind); }
// Loops through 'requiredIconSlots' and fills it with icons that are already serialized. public static PlatformIcon[] GetPlatformIcons(BuildTargetGroup platform, PlatformIconKind kind) { IPlatformIconProvider platformIconProvider = GetPlatformIconProvider(platform); if (platformIconProvider == null) { return new PlatformIcon[] {} } ; string platformName = PlayerSettings.GetPlatformName(platform); PlatformIconStruct[] serializedIcons = GetPlatformIconsInternal(platformName, kind.kind); PlatformIcon[] icons = PlatformIcon.GetRequiredPlatformIconsByType(platformIconProvider, kind); if (serializedIcons.Length <= 0) { ImportLegacyIcons(platform, kind, icons); SetPlatformIcons(platform, kind, icons); foreach (var icon in icons) { if (icon.IsEmpty()) { icon.SetTextures(null); } } } else { foreach (PlatformIcon icon in icons) { foreach (PlatformIconStruct serializedIcon in serializedIcons) { int requiredKind = kind.Equals(PlatformIconKind.Any) ? serializedIcon.m_Kind : kind.kind; if (icon.kind.kind == requiredKind && icon.iconSubKind == serializedIcon.m_SubKind) { if (icon.width == serializedIcon.m_Width && icon.height == serializedIcon.m_Height) { Texture2D[] serializedTextures = serializedIcon.m_Textures.Take(icon.maxLayerCount).ToArray(); Texture2D[] textures = new Texture2D[serializedTextures.Length > icon.minLayerCount ? serializedTextures.Length : icon.minLayerCount]; for (int i = 0; i < serializedTextures.Length; i++) { textures[i] = serializedTextures[i]; } icon.SetTextures(textures); break; } } } } } return(icons); }
internal static PlatformIcon[] GetRequiredPlatformIconsByType(IPlatformIconProvider platformIcons, PlatformIconKind kind, Dictionary<PlatformIconKind, PlatformIcon[]> requiredIcons) { if (kind != PlatformIconKind.Any) return requiredIcons[kind]; return requiredIcons.Values.SelectMany(i => i).ToArray(); }
internal static void RegisterPlatformIconProvider(BuildTargetGroup platform, IPlatformIconProvider platformIconProvider) { if (platformIconProviders.ContainsKey(platform)) { return; } platformIconProviders[platform] = platformIconProvider; }
internal static PlatformIcon[] GetRequiredPlatformIconsByType(IPlatformIconProvider platformIcons, PlatformIconKind kind) { Dictionary <PlatformIconKind, PlatformIcon[]> requiredIcons = platformIcons.GetRequiredPlatformIcons(); if (kind != PlatformIconKind.Any) { return(requiredIcons[kind]); } return(requiredIcons.Values.SelectMany(i => i).ToArray()); }
public static PlatformIconKind[] GetSupportedIconKindsForPlatform(BuildTargetGroup platform) { IPlatformIconProvider platformIconProvider = GetPlatformIconProvider(platform); if (platformIconProvider == null) { return new PlatformIconKind[] {} } ; return(platformIconProvider.GetRequiredPlatformIcons().Keys.ToArray()); }
internal static PlatformIcon[] GetRequiredPlatformIconsByType(IPlatformIconProvider platformIcons, PlatformIconKind kind) { Dictionary <PlatformIconKind, PlatformIcon[]> requiredPlatformIcons = platformIcons.GetRequiredPlatformIcons(); PlatformIcon[] result; if (kind != PlatformIconKind.Any) { result = requiredPlatformIcons[kind]; } else { result = requiredPlatformIcons.Values.SelectMany((PlatformIcon[] i) => i).ToArray <PlatformIcon>(); } return(result); }
// Returns a list of icon sizes for the specified platform of a specific kind. public static int[] GetIconSizesForTargetGroup(BuildTargetGroup platform, IconKind kind) { if (platform == BuildTargetGroup.iOS || platform == BuildTargetGroup.tvOS || platform == BuildTargetGroup.Android) { IPlatformIconProvider iconProvider = GetPlatformIconProvider(platform); if (iconProvider == null) { return new int[] {} } ; PlatformIconKind platformIconKind = iconProvider.GetPlatformIconKindFromEnumValue(kind); return(GetPlatformIcons(platform, platformIconKind).Select(s => s.width).ToArray()); } else { return(GetIconWidthsForPlatform(GetPlatformName(platform), kind)); } }
// Returns the list of assigned icons for the specified platform of a specific kind. public static Texture2D[] GetIconsForTargetGroup(BuildTargetGroup platform, IconKind kind) { if (platform == BuildTargetGroup.iOS || platform == BuildTargetGroup.tvOS || platform == BuildTargetGroup.Android) { IPlatformIconProvider iconProvider = GetPlatformIconProvider(platform); if (iconProvider == null) { return new Texture2D[] {} } ; PlatformIconKind platformIconKind = iconProvider.GetPlatformIconKindFromEnumValue(kind); return(GetPlatformIcons(platform, platformIconKind).Select(t => t.GetTexture(0)).ToArray()); } else { Texture2D[] icons = GetIconsForPlatform(GetPlatformName(platform), kind); return(icons); } }