RenderStaticPreview() public method

Override this method if you want to render a static preview that shows.

public RenderStaticPreview ( string assetPath, Object subAssets, int width, int height ) : Texture2D
assetPath string
subAssets Object
width int
height int
return UnityEngine.Texture2D
        public static Texture2D CreatePreviewForAsset(UnityEngine.Object obj, UnityEngine.Object[] subAssets, string assetPath)
        {
            if (obj == null)
            {
                return(null);
            }
            System.Type type = CustomEditorAttributes.FindCustomEditorType(obj, false);
            if (type == null)
            {
                return(null);
            }
            MethodInfo method = type.GetMethod("RenderStaticPreview");

            if (method == null)
            {
                Debug.LogError("Fail to find RenderStaticPreview base method");
                return(null);
            }
            if (method.DeclaringType == typeof(Editor))
            {
                return(null);
            }
            Editor editor = Editor.CreateEditor(obj);

            if (editor == null)
            {
                return(null);
            }
            Texture2D textured = editor.RenderStaticPreview(assetPath, subAssets, 0x80, 0x80);

            UnityEngine.Object.DestroyImmediate(editor);
            return(textured);
        }
Example #2
0
        // Generate a preview texture for an asset
        public static Texture2D CreatePreviewForAsset(Object obj, Object[] subAssets, string assetPath)
        {
            if (obj == null)
            {
                return(null);
            }

            System.Type type = CustomEditorAttributes.FindCustomEditorType(obj, false);
            if (type == null)
            {
                return(null);
            }

            System.Reflection.MethodInfo info = type.GetMethod("RenderStaticPreview");
            if (info == null)
            {
                Debug.LogError("Fail to find RenderStaticPreview base method");
                return(null);
            }

            if (info.DeclaringType == typeof(Editor))
            {
                return(null);
            }


            Editor editor = Editor.CreateEditor(obj);

            if (editor == null)
            {
                return(null);
            }

            Texture2D tex = editor.RenderStaticPreview(assetPath, subAssets, 128, 128);

            // For debugging we write the preview to a file (keep)
            //{
            //  var bytes = tex.EncodeToPNG();
            //  string previewFilePath = string.Format ("{0}/../SavedPreview{1}.png", Application.dataPath, (int)(EditorApplication.timeSinceStartup*1000));
            //  System.IO.File.WriteAllBytes(previewFilePath, bytes);
            //  Debug.Log ("Wrote preview file to: " +previewFilePath);
            //}

            Object.DestroyImmediate(editor);

            return(tex);
        }
        public static Texture2D CreatePreviewForAsset(UnityEngine.Object obj, UnityEngine.Object[] subAssets, string assetPath)
        {
            Texture2D result;

            if (obj == null)
            {
                result = null;
            }
            else
            {
                Type type = CustomEditorAttributes.FindCustomEditorType(obj, false);
                if (type == null)
                {
                    result = null;
                }
                else
                {
                    MethodInfo method = type.GetMethod("RenderStaticPreview");
                    if (method == null)
                    {
                        Debug.LogError("Fail to find RenderStaticPreview base method");
                        result = null;
                    }
                    else if (method.DeclaringType == typeof(Editor))
                    {
                        result = null;
                    }
                    else
                    {
                        Editor editor = Editor.CreateEditor(obj);
                        if (editor == null)
                        {
                            result = null;
                        }
                        else
                        {
                            Texture2D texture2D = editor.RenderStaticPreview(assetPath, subAssets, 128, 128);
                            UnityEngine.Object.DestroyImmediate(editor);
                            result = texture2D;
                        }
                    }
                }
            }
            return(result);
        }