static private FindCustomEditorType ( Object o, bool multiEdit ) : |
||
o | Object | |
multiEdit | bool | |
return |
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); }
// 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); }
private static bool EditorForMultiEditingChanged(Editor editor, Object target) { if (editor.targets.Length <= 1) { return(false); } var currentEditorType = editor.GetType(); var expectedEditorType = CustomEditorAttributes.FindCustomEditorType(target, true); // Going from generic to generic inspector for multi editing is correctly handled. if (editor is GenericInspector && expectedEditorType == null) { return(false); } return(currentEditorType != expectedEditorType); }
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); }
// Is there a custom editor for this object? public static bool HasCustomEditor(UnityObject obj) { return(CustomEditorAttributes.FindCustomEditorType(obj, false) != null); }
public static bool HasCustomEditor(UnityEngine.Object obj) => (CustomEditorAttributes.FindCustomEditorType(obj, false) != null);