You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
3.0 KiB
C#

using UnityEngine;
using UnityEditor;
using System.Collections;
namespace UnityEditor.Polybrush
{
internal class ImportIcons : AssetPostprocessor
{
// Path to icons relative to ProCore root folder.
const string ICON_PATH = "Polybrush/Icons";
internal void OnPreprocessTexture()
{
if( assetPath.IndexOf(ICON_PATH) < 0 )
return;
TextureImporter ti = (TextureImporter) assetImporter;
ti.textureType = TextureImporterType.Default;
ti.textureCompression = TextureImporterCompression.Uncompressed;
ti.sRGBTexture = true;
ti.npotScale = TextureImporterNPOTScale.None;
ti.filterMode = FilterMode.Point;
ti.wrapMode = TextureWrapMode.Clamp;
ti.mipmapEnabled = false;
ti.maxTextureSize = 64;
}
internal void OnPostprocessTexture(Texture2D texture)
{
/**
* GUIStyle background generators
*/
if( assetPath.IndexOf("Style/") > 0 &&
assetPath.IndexOf("Generated/") < 0 &&
assetPath.IndexOf("Style/Special") < 0)
{
string dir = System.IO.Path.GetDirectoryName(assetPath);
string name = System.IO.Path.GetFileNameWithoutExtension (assetPath);
string gen_dir_light = string.Format("{0}/Generated/Light/", dir);
string gen_dir_dark = string.Format("{0}/Generated/Dark/", dir);
if(!System.IO.Directory.Exists(string.Format(gen_dir_light)))
System.IO.Directory.CreateDirectory(gen_dir_light);
if(!System.IO.Directory.Exists(string.Format(gen_dir_dark)))
System.IO.Directory.CreateDirectory(gen_dir_dark);
// Normal is the default state
// OnNormal is when the toggle state is 'On' (ex, a toolbar)
// Active is the button down state (ex, mouse clicking)
// PRO SKIN COLORS
TintAndReimport(texture, string.Format("{0}{1}_Normal.png", gen_dir_dark, name), ColorFromHex(0x4e4e4e));
TintAndReimport(texture, string.Format("{0}{1}_Active.png", gen_dir_dark, name), ColorFromHex(0x636363));
TintAndReimport(texture, string.Format("{0}{1}_OnNormal.png", gen_dir_dark, name), ColorFromHex(0x252525));
// TintAndReimport(texture, string.Format("{0}{1}_Active.png", gen_dir_dark, name), ColorFromHex(0x3F3F3F));
// LIGHT SKIN COLORS
TintAndReimport(texture, string.Format("{0}{1}_Normal.png", gen_dir_light, name), ColorFromHex(0xE7E7E7));
TintAndReimport(texture, string.Format("{0}{1}_OnNormal.png", gen_dir_light, name), ColorFromHex(0xACACAC));
TintAndReimport(texture, string.Format("{0}{1}_Active.png", gen_dir_light, name), ColorFromHex(0x929292));
}
}
private void TintAndReimport(Texture2D source, string path, Color tint)
{
Texture2D tinted = new Texture2D(source.width, source.height);
Color[] pix = source.GetPixels();
for(int i = 0; i < pix.Length; i++)
pix[i] *= tint;
tinted.SetPixels(pix);
tinted.Apply();
byte[] bytes = tinted.EncodeToPNG();
System.IO.File.WriteAllBytes(path, bytes);
}
private Color ColorFromHex(uint hex)
{
return new Color32(
(byte) ((hex >> 16) & 0xFF),
(byte) ((hex >> 8) & 0xFF),
(byte) (hex & 0xFF),
(byte) 0xFF);
}
}
}