Esempio n. 1
0
        // 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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        // 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();
        }
Esempio n. 5
0
 internal static void RegisterPlatformIconProvider(BuildTargetGroup platform, IPlatformIconProvider platformIconProvider)
 {
     if (platformIconProviders.ContainsKey(platform))
     {
         return;
     }
     platformIconProviders[platform] = platformIconProvider;
 }
Esempio n. 6
0
        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());
        }
Esempio n. 7
0
        public static PlatformIconKind[] GetSupportedIconKindsForPlatform(BuildTargetGroup platform)
        {
            IPlatformIconProvider platformIconProvider = GetPlatformIconProvider(platform);

            if (platformIconProvider == null)
            {
                return new PlatformIconKind[] {}
            }
            ;

            return(platformIconProvider.GetRequiredPlatformIcons().Keys.ToArray());
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        // 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));
            }
        }
Esempio n. 10
0
        // 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);
            }
        }