101 lines
4.1 KiB
C#
101 lines
4.1 KiB
C#
#if UNITY_EDITOR
|
|
using System;
|
|
using System.IO;
|
|
using UnityEngine;
|
|
using UnityEditor;
|
|
|
|
namespace BrainFailProductions.PolyFew.AsImpL
|
|
{
|
|
public class EditorUtil
|
|
{
|
|
/// <summary>
|
|
/// Create a folder, if not yet created, in the asset database
|
|
/// </summary>
|
|
/// <param name="path">path that will contain the new folder</param>
|
|
/// <param name="folder">name of the folder</param>
|
|
public static void CreateAssetFolder(string path, string folder)
|
|
{
|
|
if (!AssetDatabase.IsValidFolder(path + "/" + folder))
|
|
{
|
|
AssetDatabase.CreateFolder(path, folder);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Capture a screenshot, naming its file automatically with date and time,
|
|
/// then shows the file in the file manager (e.g. Explorer)
|
|
/// </summary>
|
|
/// <param name="prefix">prefix at the beginning of the file name</param>
|
|
public static void AutoCaptureScreenshot(string prefix)
|
|
{
|
|
string fileName = prefix + "-" + DateTime.Now.ToString("s").Replace('T', '_').Replace(':', '-') + ".png";
|
|
#if UNITY_2017_1_OR_NEWER
|
|
ScreenCapture.CaptureScreenshot(fileName);
|
|
#else
|
|
Application.CaptureScreenshot(fileName);
|
|
#endif
|
|
Debug.Log("Screenshot saved to " + Application.dataPath + "/" + fileName);
|
|
EditorUtility.RevealInFinder(Application.dataPath);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Set a texture in the asset database as readable to perform image analisys
|
|
/// </summary>
|
|
/// <param name="texAssetPath"></param>
|
|
public static void SetTextureReadable(string texAssetPath)
|
|
{
|
|
TextureImporter textureImporter = AssetImporter.GetAtPath(texAssetPath) as TextureImporter;
|
|
if (textureImporter)
|
|
{
|
|
Debug.LogFormat("Changing import settings for texture {0}...", texAssetPath);
|
|
textureImporter.isReadable = true;
|
|
textureImporter.alphaIsTransparency = true;
|
|
textureImporter.SaveAndReimport();
|
|
}
|
|
else
|
|
{
|
|
Debug.LogError("Texture importer for not found for " + texAssetPath);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Save a new texture to the asset databse and reimport it
|
|
/// </summary>
|
|
/// <param name="texture">new texture</param>
|
|
/// <param name="texAssetPath">path in the asset database</param>
|
|
/// <param name="postFix">postfix appended to the file name</param>
|
|
/// <param name="isNormalMap">if true the texture importer is set to normal map</param>
|
|
public static void SaveAndReimportPngTexture(ref Texture2D texture, string texAssetPath, string postFix, bool isNormalMap = false)
|
|
{
|
|
string newTexAssetPath = Path.GetDirectoryName(texAssetPath) + "/" + Path.GetFileNameWithoutExtension(texAssetPath) + postFix + ".png";
|
|
if (newTexAssetPath != texAssetPath)
|
|
{
|
|
Debug.LogFormat("Storing texture {0}...", newTexAssetPath);
|
|
// Encode texture into PNG
|
|
byte[] bytes = texture.EncodeToPNG();
|
|
File.WriteAllBytes(Application.dataPath + "/../" + newTexAssetPath, bytes);
|
|
//texture.LoadImage(bytes, false);
|
|
//AssetDatabase.CreateAsset(texture, newTexAssetPath);
|
|
//AssetDatabase.SaveAssets();
|
|
AssetDatabase.Refresh();
|
|
//EditorUtil.SetTextureReadable(texture, newTexAssetPath);
|
|
texAssetPath = newTexAssetPath;
|
|
if (isNormalMap)
|
|
{
|
|
TextureImporter newTextureImporter = AssetImporter.GetAtPath(texAssetPath) as TextureImporter;
|
|
newTextureImporter.textureType = TextureImporterType.NormalMap;
|
|
newTextureImporter.SaveAndReimport();
|
|
}
|
|
//newTextureImporter.isReadable = true;
|
|
//AssetDatabase.CreateAsset(newTextureImporter, newTexAssetPath);
|
|
texture = AssetDatabase.LoadAssetAtPath<Texture2D>(texAssetPath);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
#endif
|