protected string CopyImage(PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale scale, string defaultSource, string destinationFileName) { string visualAssetsImage = PlayerSettings.WSA.GetVisualAssetsImage(type, scale); if (string.IsNullOrEmpty(visualAssetsImage)) { if (string.IsNullOrEmpty(defaultSource)) { return(null); } visualAssetsImage = defaultSource; } destinationFileName = Path.ChangeExtension(destinationFileName, Path.GetExtension(visualAssetsImage)); string str3 = Path.ChangeExtension(Utility.CombinePath("Assets", Path.GetFileName(!string.IsNullOrEmpty(defaultSource) ? defaultSource : visualAssetsImage)), Path.GetExtension(visualAssetsImage)); if (string.IsNullOrEmpty(destinationFileName)) { destinationFileName = str3; } else { destinationFileName = Utility.CombinePath("Assets", Path.GetFileName(destinationFileName)); } string path = Utility.CombinePath(base.StagingArea, destinationFileName); Utility.CreateDirectory(Path.GetDirectoryName(path)); FileUtil.CopyFileOrDirectory(visualAssetsImage, path); return(destinationFileName.Substring(0, destinationFileName.IndexOf('.')) + Path.GetExtension(visualAssetsImage)); }
private static string GetUWPImageTypeTexture(PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale scale) { switch (type) { case PlayerSettings.WSAImageType.PackageLogo: case PlayerSettings.WSAImageType.UWPSquare44x44Logo: case PlayerSettings.WSAImageType.UWPSquare71x71Logo: case PlayerSettings.WSAImageType.UWPSquare150x150Logo: case PlayerSettings.WSAImageType.UWPSquare310x310Logo: return(_newAppIconPath); case PlayerSettings.WSAImageType.SplashScreenImage: case PlayerSettings.WSAImageType.UWPWide310x150Logo: if (scale != PlayerSettings.WSAImageScale.Target16 && scale != PlayerSettings.WSAImageScale.Target24 && scale != PlayerSettings.WSAImageScale.Target32 && scale != PlayerSettings.WSAImageScale.Target48 && scale != PlayerSettings.WSAImageScale.Target256) { return(_newSplashImagePath); } else { return(_newAppIconPath); } default: throw new ArgumentOutOfRangeException("type", type, null); } }
private Vector2 GetUWPImageTypeSize(PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale scale) { Vector2 size = Vector2.zero; switch (scale) { case PlayerSettings.WSAImageScale.Target16: size = CreateSize(16); break; case PlayerSettings.WSAImageScale.Target24: size = CreateSize(24); break; case PlayerSettings.WSAImageScale.Target32: size = CreateSize(32); break; case PlayerSettings.WSAImageScale.Target48: size = CreateSize(48); break; case PlayerSettings.WSAImageScale.Target256: size = CreateSize(256); break; default: size = GetWSAImageTypeSize(type, scale); break; } return(size); }
private static Vector2 GetWSAImageTypeSize(PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale scale) { float scaleFactor = float.Parse(scale.ToString().Replace("_", "")) * 0.01f; switch (type) { case PlayerSettings.WSAImageType.PackageLogo: return(CreateSquareSize(50, scaleFactor)); case PlayerSettings.WSAImageType.UWPSquare44x44Logo: return(CreateSquareSize(44, scaleFactor)); case PlayerSettings.WSAImageType.UWPSquare71x71Logo: return(CreateSquareSize(71, scaleFactor)); case PlayerSettings.WSAImageType.UWPSquare150x150Logo: return(CreateSquareSize(150, scaleFactor)); case PlayerSettings.WSAImageType.UWPSquare310x310Logo: return(CreateSquareSize(310, scaleFactor)); // WIDE 31:15 case PlayerSettings.WSAImageType.UWPWide310x150Logo: return(CreateSize(new Vector2(310, 150), scaleFactor)); case PlayerSettings.WSAImageType.SplashScreenImage: return(CreateSize(new Vector2(620, 300), scaleFactor)); default: Debug.LogWarningFormat("Invalid image size for {0} with scale {1}X{2}", type, scale, scaleFactor); return(Vector2.zero); } }
private static Vector2 GetWSAImageTypeSize(PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale scale) { switch (type) { case PlayerSettings.WSAImageType.PackageLogo: return(CreateSize(50)); return(CreateSize(150)); return(CreateSize(30)); return(CreateSize(70)); return(CreateSize(310)); return(CreateSize(44)); return(CreateSize(71)); return(CreateSize(150)); case PlayerSettings.WSAImageType.UWPSquare44x44Logo: return(CreateSize(44)); case PlayerSettings.WSAImageType.UWPSquare71x71Logo: return(CreateSize(71)); case PlayerSettings.WSAImageType.UWPSquare150x150Logo: return(CreateSize(150)); case PlayerSettings.WSAImageType.UWPSquare310x310Logo: return(CreateSize(310)); // WIDE 31:15 case PlayerSettings.WSAImageType.UWPWide310x150Logo: return(new Vector2(310, 150)); case PlayerSettings.WSAImageType.SplashScreenImage: return(new Vector2(620, 300)); default: var size = Vector2.zero; float scaleFactor = float.Parse(scale.ToString().Replace("_", "")) * 0.01f; size = size * scaleFactor; size.x = (float)Math.Ceiling(size.x); size.y = (float)Math.Ceiling(size.y); if (size == Vector2.zero) { Debug.LogWarningFormat("Invalid image size for {0} with scale {1}", type, scale); } return(size); } }
private static string CloneAndResizeToFile(PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale scale) { string texturePath = GetUWPImageTypeTexture(type, scale); if (string.IsNullOrEmpty(texturePath)) { return(string.Empty); } var iconSize = GetUWPImageTypeSize(type, scale); if (iconSize == Vector2.zero) { return(string.Empty); } if (iconSize.x == 1240 && iconSize.y == 1240 || iconSize.x == 2480 && iconSize.y == 1200) { return(texturePath); } string filePath = string.Format("{0}/{1}_{2}x{3}.png", _outputDirectoryName, type.ToString(), iconSize.x, iconSize.y); filePath = filePath.Replace(Application.dataPath, "Assets"); // Create copy of original image try { AssetDatabase.CopyAsset(texturePath, filePath); var clone = AssetDatabase.LoadAssetAtPath <Texture2D>(filePath); if (clone == null) { Debug.LogError("Unable to load texture at " + filePath); return(string.Empty); } // Resize clone to desired size TextureScale.Bilinear(clone, (int)iconSize.x, (int)iconSize.y); clone.Compress(true); AssetDatabase.SaveAssets(); if (clone.GetRawTextureData().Length > 204800) { Debug.LogWarningFormat("{0} exceeds the minimum file size of 204,800 bytes, please use a smaller image for generating your icons.", clone.name); return(string.Empty); } } catch (Exception e) { Debug.LogError(e.Message); return(string.Empty); } return(filePath); }
private static Vector2 GetWSAImageTypeSize(PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale scale) { float scaleFactor = float.Parse(scale.ToString().Replace("_", "")) * 0.01f; switch (type) { case PlayerSettings.WSAImageType.PackageLogo: return(CreateSquareSize(50, scaleFactor)); //case PlayerSettings.WSAImageType.StoreTileLogo: //return CreateSquareSize(150, scaleFactor); //case PlayerSettings.WSAImageType.StoreTileSmallLogo: //return CreateSquareSize(30, scaleFactor); //case PlayerSettings.WSAImageType.StoreSmallTile: //return CreateSquareSize(70, scaleFactor); //case PlayerSettings.WSAImageType.StoreLargeTile: //return CreateSquareSize(310, scaleFactor); //case PlayerSettings.WSAImageType.PhoneAppIcon: //return CreateSquareSize(44, scaleFactor); //case PlayerSettings.WSAImageType.PhoneSmallTile: //return CreateSquareSize(71, scaleFactor); //case PlayerSettings.WSAImageType.PhoneMediumTile: //return CreateSquareSize(150, scaleFactor); case PlayerSettings.WSAImageType.UWPSquare44x44Logo: return(CreateSquareSize(44, scaleFactor)); case PlayerSettings.WSAImageType.UWPSquare71x71Logo: return(CreateSquareSize(71, scaleFactor)); case PlayerSettings.WSAImageType.UWPSquare150x150Logo: return(CreateSquareSize(150, scaleFactor)); case PlayerSettings.WSAImageType.UWPSquare310x310Logo: return(CreateSquareSize(310, scaleFactor)); // WIDE 31:15 //case PlayerSettings.WSAImageType.PhoneWideTile: //case PlayerSettings.WSAImageType.StoreTileWideLogo: case PlayerSettings.WSAImageType.UWPWide310x150Logo: return(CreateSize(new Vector2(310, 150), scaleFactor)); case PlayerSettings.WSAImageType.SplashScreenImage: return(CreateSize(new Vector2(620, 300), scaleFactor)); //case PlayerSettings.WSAImageType.PhoneSplashScreen: default: var size = CreateSquareSize(0, scaleFactor); if (size == Vector2.zero) { Debug.LogWarningFormat("Invalid image size for {0} with scale {1}", type, scale); } return(size); } }
public MetroScaledImage(PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale scale, string label, int width, int height) { this.type = type; this.scale = scale; this.label = label; this.width = width; this.height = height; this.imagePath = null; this.image = null; }
private string CloneAndResizeToFile(Texture2D texture, PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale scale, ref string fileName) { var iconSize = GetUWPImageTypeSize(type, scale); if (iconSize != Vector2.zero) { fileName = string.Format("{0}x{1}.png", iconSize.x, iconSize.y); return(CloneAndResizeToFile(texture, iconSize, ref fileName)); } return(null); }
private static MetroScaledImage[] CreateScaledImages(PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale[] scales, string labelFormat, int[] widths, int[] heights) { if (((scales.Length == 0) || (scales.Length != widths.Length)) || (scales.Length != heights.Length)) { throw new Exception("If you see this, it's a bug. Scales, widths and heights must all be equal and non-zero"); } MetroScaledImage[] imageArray = new MetroScaledImage[scales.Length]; for (int i = 0; i < scales.Length; i++) { imageArray[i] = new MetroScaledImage(type, scales[i], string.Format(labelFormat, (int)scales[i], widths[i], heights[i]), widths[i], heights[i]); } return(imageArray); }
private Texture2D GetUWPImageTypeTexture(PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale scale) { switch (type) { case PlayerSettings.WSAImageType.PackageLogo: case PlayerSettings.WSAImageType.StoreTileLogo: case PlayerSettings.WSAImageType.StoreTileSmallLogo: case PlayerSettings.WSAImageType.StoreSmallTile: case PlayerSettings.WSAImageType.StoreLargeTile: case PlayerSettings.WSAImageType.PhoneAppIcon: case PlayerSettings.WSAImageType.PhoneSmallTile: case PlayerSettings.WSAImageType.PhoneMediumTile: case PlayerSettings.WSAImageType.PhoneWideTile: case PlayerSettings.WSAImageType.PhoneSplashScreen: case PlayerSettings.WSAImageType.UWPSquare44x44Logo: case PlayerSettings.WSAImageType.UWPSquare71x71Logo: case PlayerSettings.WSAImageType.UWPSquare150x150Logo: case PlayerSettings.WSAImageType.UWPSquare310x310Logo: return(_originalAppIcon); case PlayerSettings.WSAImageType.SplashScreenImage: case PlayerSettings.WSAImageType.StoreTileWideLogo: case PlayerSettings.WSAImageType.UWPWide310x150Logo: if (scale != PlayerSettings.WSAImageScale.Target16 && scale != PlayerSettings.WSAImageScale.Target24 && scale != PlayerSettings.WSAImageScale.Target32 && scale != PlayerSettings.WSAImageScale.Target48 && scale != PlayerSettings.WSAImageScale.Target256) { return(_originalSplashImage); } else { break; } default: break; } return(null); }
private void ImageField(PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale scale, GUIContent label, int imageWidth, int imageHeight, ref string imagePath, ref Texture2D image) { if (imagePath == null) { imagePath = PlayerSettings.WSA.GetVisualAssetsImage(type, scale); } if ((image == null) && !string.IsNullOrEmpty(imagePath)) { image = AssetDatabase.LoadAssetAtPath <Texture2D>(imagePath); } Texture2D assetObject = (Texture2D)EditorGUILayout.ObjectField(label, image, typeof(Texture2D), false, new GUILayoutOption[0]); string b = (assetObject == null) ? "" : AssetDatabase.GetAssetPath(assetObject); if (!string.Equals(imagePath, b) && (!string.IsNullOrEmpty(b) ? ValidateImage(b, imageWidth, imageHeight) : true)) { Undo.RecordObject(this.m_SettingsEditor.serializedObject.targetObject, "Change WSA Visual Asset"); PlayerSettings.WSA.SetVisualAssetsImage(b, type, scale); imagePath = b; image = assetObject; } }
private static Vector2 GetUWPImageTypeSize(PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale scale) { switch (scale) { case PlayerSettings.WSAImageScale.Target16: return(CreateSquareSize(16)); case PlayerSettings.WSAImageScale.Target24: return(CreateSquareSize(24)); case PlayerSettings.WSAImageScale.Target32: return(CreateSquareSize(32)); case PlayerSettings.WSAImageScale.Target48: return(CreateSquareSize(48)); case PlayerSettings.WSAImageScale.Target256: return(CreateSquareSize(256)); default: return(GetWSAImageTypeSize(type, scale)); } }
private static MetroScaledImageGroup CreateScaledImageGroup(PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale[] scales, string labelFormat, int[] widths, int[] heights) => new MetroScaledImageGroup(CreateScaledImages(type, scales, labelFormat, widths, heights));
private static MetroScaledImage[] CreateScaledSquareImages(PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale[] scales, string labelFormat, int[] sizes) => CreateScaledImages(type, scales, labelFormat, sizes, sizes);
private static string CloneAndResizeToFile(PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale scale) { string texturePath = GetUWPImageTypeTexture(type, scale); if (string.IsNullOrEmpty(texturePath)) { return(string.Empty); } var iconSize = GetUWPImageTypeSize(type, scale); if (iconSize == Vector2.zero) { return(string.Empty); } if (iconSize.x == 1240 && iconSize.y == 1240 || iconSize.x == 2480 && iconSize.y == 1200) { return(texturePath); } string filePath = string.Format("{0}/{1}_AppIcon_{2}x{3}.png", _outputDirectoryName, Application.productName, iconSize.x, iconSize.y); filePath = filePath.Replace(Application.dataPath, "Assets"); if (File.Exists(filePath)) { return(filePath); } // Create copy of original image try { AssetDatabase.CopyAsset(texturePath, filePath); var clone = AssetDatabase.LoadAssetAtPath <Texture2D>(filePath); if (clone == null) { Debug.LogError("Unable to load texture at " + filePath); return(string.Empty); } // Resize clone to desired size TextureScale.Bilinear(clone, (int)iconSize.x, (int)iconSize.y); // Crop Color[] pix = clone.GetPixels(0, 0, (int)iconSize.x, (int)iconSize.y); clone = new Texture2D((int)iconSize.x, (int)iconSize.y, TextureFormat.ARGB32, false); clone.SetPixels(pix); clone.Apply(); var rawData = clone.EncodeToPNG(); File.WriteAllBytes(filePath, rawData); if (rawData.Length > 204800) { Debug.LogWarningFormat("{0} exceeds the minimum file size of 204,800 bytes, please use a smaller image for generating your icons.", filePath); } } catch (Exception e) { Debug.LogError(e.Message); return(string.Empty); } return(filePath); }
private Vector2 GetWSAImageTypeSize(PlayerSettings.WSAImageType type, PlayerSettings.WSAImageScale scale) { Vector2 size = Vector2.zero; float scaleFactor = (float)scale / 100; switch (type) { case PlayerSettings.WSAImageType.PackageLogo: size = CreateSize(50); break; case PlayerSettings.WSAImageType.StoreTileLogo: size = CreateSize(150); break; case PlayerSettings.WSAImageType.StoreTileSmallLogo: size = CreateSize(30); break; case PlayerSettings.WSAImageType.StoreSmallTile: size = CreateSize(70); break; case PlayerSettings.WSAImageType.StoreLargeTile: size = CreateSize(310); break; case PlayerSettings.WSAImageType.PhoneAppIcon: size = CreateSize(44); break; case PlayerSettings.WSAImageType.PhoneSmallTile: size = CreateSize(71); break; case PlayerSettings.WSAImageType.PhoneMediumTile: size = CreateSize(150); break; case PlayerSettings.WSAImageType.PhoneSplashScreen: break; case PlayerSettings.WSAImageType.UWPSquare44x44Logo: size = CreateSize(44); break; case PlayerSettings.WSAImageType.UWPSquare71x71Logo: size = CreateSize(71); break; case PlayerSettings.WSAImageType.UWPSquare150x150Logo: size = CreateSize(150); break; case PlayerSettings.WSAImageType.UWPSquare310x310Logo: size = CreateSize(310); break; // WIDE 31:15 case PlayerSettings.WSAImageType.PhoneWideTile: case PlayerSettings.WSAImageType.StoreTileWideLogo: case PlayerSettings.WSAImageType.UWPWide310x150Logo: size = new Vector2(310, 150); break; case PlayerSettings.WSAImageType.SplashScreenImage: size = new Vector2(620, 300); break; default: break; } if (size != Vector2.zero) { size = (size * scaleFactor); size.x = (float)Math.Ceiling(size.x); size.y = (float)Math.Ceiling(size.y); } return(size); }