Exemple #1
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);
        }
Exemple #2
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);
        }
        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);
        }