Override this method in subclasses if you implement OnPreviewGUI.
private bool Init(Object obj, EditorFeatures requirements) { MethodInfo onSceneDragMi; editor = Editor.CreateEditor(obj); if (editor == null) { return(false); } if ((int)(requirements & EditorFeatures.PreviewGUI) > 0 && !editor.HasPreviewGUI()) { return(false); } System.Type t = editor.GetType(); onSceneDragMi = t.GetMethod("OnSceneDrag", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (onSceneDragMi != null) { OnSceneDrag = (VoidDelegate)System.Delegate.CreateDelegate(typeof(VoidDelegate), editor, onSceneDragMi); } else if ((int)(requirements & EditorFeatures.OnSceneDrag) > 0) { return(false); } else { OnSceneDrag = DefaultOnSceneDrag; } return(true); }
private bool Init(UnityEngine.Object obj, EditorFeatures requirements) { editor = Editor.CreateEditor(obj); if (editor == null) { return(false); } if ((requirements & EditorFeatures.PreviewGUI) > EditorFeatures.None && !editor.HasPreviewGUI()) { return(false); } Type type = editor.GetType(); MethodInfo method = type.GetMethod("OnSceneDrag", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (method != null) { OnSceneDrag = (EditorWrapper.VoidDelegate)Delegate.CreateDelegate(typeof(EditorWrapper.VoidDelegate), editor, method); } else { if ((requirements & EditorFeatures.OnSceneDrag) > EditorFeatures.None) { return(false); } OnSceneDrag = new EditorWrapper.VoidDelegate(DefaultOnSceneDrag); } return(true); }
void OnGUI() { if (previewEditor != null) { if (previewEditor.HasPreviewGUI()) { Rect r = GUILayoutUtility.GetRect(100, 100, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)); previewEditor.OnPreviewGUI(r, GUIStyle.none); } } }
private bool Init(Object obj, EditorFeatures requirements) { editor = Editor.CreateEditor(obj); if (editor == null) { return(false); } if (requirements.HasFlag(EditorFeatures.PreviewGUI) && !editor.HasPreviewGUI()) { return(false); } var onSceneDragMi = editor.GetType().GetMethod("OnSceneDrag", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); var objs = new[] { obj }; var rootEditorType = RootEditorUtils.FindRootEditor(objs); if (rootEditorType != null && onSceneDragMi == null) { // Create normal editor: editor = RootEditorUtils.CreateNonRootEditor(objs); onSceneDragMi = editor.GetType().GetMethod("OnSceneDrag", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); } if (onSceneDragMi != null) { OnSceneDrag = (VoidDelegate)System.Delegate.CreateDelegate(typeof(VoidDelegate), editor, onSceneDragMi); } else if (requirements.HasFlag(EditorFeatures.OnSceneDrag)) { return(false); } else { OnSceneDrag = DefaultOnSceneDrag; } return(true); }
public void OnGUI(Rect rect) { Rect PreviewRect = new Rect( rect.x + rect.width * 0.6f - 10, rect.y + 10, rect.width * 0.4f, rect.height - 15 ); GUIStyle inputSt = new GUIStyle(GUI.skin.GetStyle("CN Box")); inputSt.fixedWidth = PreviewRect.x - rect.x - TitleWidth - 10; inputSt.fixedHeight = 30; inputSt.contentOffset = new Vector2(3, 0); inputSt.alignment = TextAnchor.MiddleLeft; GUIStyle labelSt = new GUIStyle(GUI.skin.GetStyle("LODRendererAddButton")); labelSt.fixedWidth = TitleWidth; labelSt.fixedHeight = 30; labelSt.alignment = TextAnchor.MiddleRight; GUIStyle checkBoxSt = new GUIStyle(GUI.skin.GetStyle("BoldToggle")); checkBoxSt.alignment = TextAnchor.MiddleLeft; checkBoxSt.fixedWidth = 30; checkBoxSt.fixedHeight = 30; GUILayout.BeginArea(rect, GUI.skin.GetStyle("CN Box")); GUILayout.BeginVertical(); GUILayout.Space(offset); if (this.mCurrentSelectAssets != null) { GUILayout.BeginHorizontal(); { GUILayout.Label(new GUIContent(Language.AssetName + ":"), labelSt); if (mCurrentSelectAssets != null) { GUILayout.Label(mCurrentSelectAssets.data.address, inputSt); } else { GUILayout.Label("", inputSt); } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); } GUILayout.Space(offset); GUILayout.BeginHorizontal(); { string type = ""; if (mCurrentSelectAssets != null) { type = mCurrentSelectAssets.data.type; } GUILayout.Label(new GUIContent(Language.AssetType + ":"), labelSt); GUILayout.Label(type, inputSt); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); } GUILayout.Space(offset); GUILayout.BeginHorizontal(); { string path = ""; if (mCurrentSelectAssets != null) { path = mCurrentSelectAssets.data.path; } GUILayout.Label(new GUIContent(Language.Path + ":"), labelSt); GUILayout.Label(path, inputSt); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); } GUILayout.Space(offset); GUILayout.BeginHorizontal(); { string url = ""; if (mCurrentSelectAssets != null) { url = mCurrentSelectAssets.data.url; } GUILayout.Label(new GUIContent(Language.ResUrl + ":"), labelSt); GUILayout.Label(url, inputSt); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); } GUILayout.Space(offset); GUILayout.BeginHorizontal(); { bool flag = false; if (mCurrentSelectAssets != null) { flag = mCurrentSelectAssets.data.isResourcesPath; } GUILayout.Label(new GUIContent(Language.isResource + ":"), labelSt); GUILayout.Label(flag ? Language.Yes : Language.No, inputSt); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); } GUILayout.Space(offset); GUILayout.BeginHorizontal(); { GUILayout.Label(new GUIContent(Language.isKeepInMemory + ":"), labelSt); if (mCurrentSelectAssets != null) { mCurrentSelectAssets.data.isKeepInMemory = GUILayout.Toggle(mCurrentSelectAssets.data.isKeepInMemory, "", checkBoxSt); } else { GUILayout.Toggle(false, "", checkBoxSt); } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); } // GUILayout.Space(offset); // GUILayout.BeginHorizontal(); // { // GUILayout.Label(new GUIContent("FGUI包:"), labelSt); // if (mCurrentSelectAssets != null) // { // mCurrentSelectAssets.data.isFairyGuiPack = // GUILayout.Toggle(mCurrentSelectAssets.data.isFairyGuiPack, "", checkBoxSt); // } // else // { // GUILayout.Toggle(false, "", checkBoxSt); // } // // GUILayout.FlexibleSpace(); // GUILayout.EndHorizontal(); // } } GUILayout.EndVertical(); GUILayout.EndArea(); //GUILayout.BeginArea(PreviewRect, GUI.skin.GetStyle("preBackground")); if (this.mCurrentSelectAssets != null) { Texture texture = EditorGUIUtility.FindTexture("Refresh"); Type t = AssetDatabase.GetMainAssetTypeAtPath(this.mCurrentSelectAssets.data.path); texture = AssetDatabase.GetCachedIcon(this.mCurrentSelectAssets.data.path); if (preEditor == null) { preEditor = UnityEditor.Editor.CreateEditor(AssetDatabase.LoadAssetAtPath(this.mCurrentSelectAssets.data.path, t)); } if (preEditor != null && preEditor.HasPreviewGUI()) { try { preEditor.OnPreviewGUI(PreviewRect, GUI.skin.GetStyle("preBackground")); } catch (Exception e) { Console.WriteLine(e); // throw; } } else { texture = AssetDatabase.GetCachedIcon(this.mCurrentSelectAssets.data.path); } } //GUILayout.EndArea(); }
public bool HasPreviewGUI() { return(editor.HasPreviewGUI()); }