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); }
private void SetPreviewTextures(PlatformIcon platformIcon) { Texture2D[] previewTextures = new Texture2D[platformIcon.maxLayerCount]; for (int i = 0; i < platformIcon.maxLayerCount; i++) { previewTextures[i] = PlayerSettings.GetPlatformIconAtSizeForTargetIcons(platformIcon.kind.platform, platformIcon.width, platformIcon.height, m_AllIcons, platformIcon.kind.kind, platformIcon.iconSubKind, i); } platformIcon.SetPreviewTextures(previewTextures); }
void SetIconsForPlatform(BuildTargetGroup targetGroup, PlatformIcon[] icons, PlatformIconKind kind, ref BuildTargetIcons[] allIcons) { var namedBuildTarget = NamedBuildTarget.FromBuildTargetGroup(targetGroup); var platformIconProvider = PlayerSettings.GetPlatformIconProvider(namedBuildTarget); if (platformIconProvider == null) { return; } if (m_RequiredIcons == null) { m_RequiredIcons = new Dictionary <PlatformIconKind, PlatformIcon[]>(); } if (!m_RequiredIcons.ContainsKey(kind)) { var requiredIcons = platformIconProvider.GetRequiredPlatformIcons(); foreach (var requiredIcon in requiredIcons) { if (!m_RequiredIcons.ContainsKey(requiredIcon.Key)) { m_RequiredIcons.Add(requiredIcon.Key, requiredIcon.Value); } } } var requiredIconCount = PlatformIcon.GetRequiredPlatformIconsByType(platformIconProvider, kind, m_RequiredIcons).Length; PlatformIconStruct[] iconStructs; if (icons == null) { iconStructs = new PlatformIconStruct[0]; } else if (requiredIconCount != icons.Length) { throw new InvalidOperationException($"Attempting to set an incorrect number of icons for {namedBuildTarget} {kind} kind, it requires {requiredIconCount} icons but trying to assign {icons.Length}."); } else { iconStructs = icons.Select( i => i.GetPlatformIconStruct() ).ToArray <PlatformIconStruct>(); } allIcons = PlayerSettings.SetIconsForPlatformForTargetIcons(namedBuildTarget.TargetName, iconStructs, kind.kind, allIcons); }
internal PlatformIcon[] GetPlatformIcons(BuildTargetGroup platform, PlatformIconKind kind, ref BuildTargetIcons[] allIcons) { var namedBuildTarget = NamedBuildTarget.FromBuildTargetGroup(platform); var serializedIcons = PlayerSettings.GetPlatformIconsFromTargetIcons(namedBuildTarget.TargetName, kind.kind, allIcons); var provider = PlayerSettings.GetPlatformIconProvider(namedBuildTarget); if (m_RequiredIcons == null) { m_RequiredIcons = new Dictionary <PlatformIconKind, PlatformIcon[]>(); } if (!m_RequiredIcons.ContainsKey(kind)) { var requiredIcons = provider.GetRequiredPlatformIcons(); foreach (var requiredIcon in requiredIcons) { if (!m_RequiredIcons.ContainsKey(requiredIcon.Key)) { m_RequiredIcons.Add(requiredIcon.Key, requiredIcon.Value); } } } var icons = PlatformIcon.GetRequiredPlatformIconsByType(provider, kind, m_RequiredIcons); if (serializedIcons.Length <= 0) { // Map legacy icons to required icons ImportLegacyIcons(namedBuildTarget.TargetName, kind, icons, m_AllLegacyIcons); // Serialize required icons SetPlatformIcons(platform, kind, icons, ref allIcons); foreach (var icon in icons) { if (icon.IsEmpty()) { icon.SetTextures(null); } } } else { // Map serialized icons to required icons icons = PlayerSettings.GetPlatformIconsFromStruct(icons, kind, serializedIcons.ToArray()); } return(icons); }