- Home /
How to get Project view's preview icon size?
I found out that I needed to rotate prefab previews, so I digged and found out a bunch of dead threads with no answers or long time gone assets.
RuntimePreviewGenerator is still in the assetstore and working, but there also an existing PreviewRenderUtility
After some fiddling I ended up with this:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public class ThumbnailFix : Editor
{
static string[] pathsToAlterAssetsIn = { @"Assets/Prefabs/" };
static Dictionary<string, Texture2D> cachedPreviews = new Dictionary<string, Texture2D>();
static bool enabled;
[MenuItem("Tools/Fix Thumbnails in Resources")]
private static void FixThumbnail()
{
if (!enabled)
{
RuntimePreviewGenerator.OrthographicMode = true;
RuntimePreviewGenerator.PreviewDirection = new Vector3(0,-.3f,1);
EditorApplication.projectWindowItemOnGUI += DrawThumbnail;
//TODO use default tool for previews: PreviewRenderUtility
}
else
{
EditorApplication.projectWindowItemOnGUI -= DrawThumbnail;
}
enabled = !enabled;
}
private static void DrawThumbnail(string guid, Rect selectionRect)
{
var filename = AssetDatabase.GUIDToAssetPath(guid);
if (pathsToAlterAssetsIn.FirstOrDefault(s => filename.StartsWith(s)) == null)
return;
var t = AssetDatabase.GetMainAssetTypeAtPath(filename);
if (t == typeof(GameObject) &&
AssetDatabase.LoadMainAssetAtPath(filename) is GameObject prefab &&
PrefabUtility.IsPartOfPrefabAsset(prefab))
{
if (!cachedPreviews.ContainsKey(guid))
cachedPreviews.Add(guid, RuntimePreviewGenerator.GenerateModelPreview(prefab.transform));
GUI.DrawTexture(selectionRect, cachedPreviews[guid]);
}
}
}
It's not finished, but works. The selectionRect though is covering whole icon and name. Where I can get the actual icon size?
Comment
Your answer
Follow this Question
Related Questions
Change angle of camera in prefab preview 4 Answers
Change angle of camera in prefab preview 1 Answer
Custom Thumbnails for Prefabs 0 Answers
Why do my prefabs not have an Asset Preview? 1 Answer
Getting at the prefab preview window 3 Answers