private bool CreateComponentEditor(GameObject go, Component component, HashSet <Component> ignoreComponents) { if (component == null) { return(false); } if (ignoreComponents.Contains(component)) { return(false); } if ((component.hideFlags & HideFlags.HideInInspector) != 0) { return(false); } if (m_editorsMap.IsObjectEditorEnabled(component.GetType())) { GameObject editorPrefab = m_editorsMap.GetObjectEditor(component.GetType()); if (editorPrefab != null) { ComponentEditor componentEditorPrefab = editorPrefab.GetComponent <ComponentEditor>(); if (componentEditorPrefab != null) { ComponentEditor editor = Instantiate(componentEditorPrefab); editor.EndEditCallback = () => { m_editor.UpdatePreview(go); m_editor.IsDirty = true; }; editor.transform.SetParent(ComponentsPanel, false); editor.Component = component; return(true); } else { Debug.LogErrorFormat("editor prefab {0} does not have ComponentEditor script", editorPrefab.name); return(false); } } } return(false); }
private bool CreateComponentEditor(List <Component> components) { if (components.Count == 0) { return(false); } Component component = components[0]; Type componentType = component.GetType(); if (m_editorsMap.IsObjectEditorEnabled(componentType)) { GameObject editorPrefab = m_editorsMap.GetObjectEditor(componentType); if (editorPrefab != null) { ComponentEditor componentEditorPrefab = editorPrefab.GetComponent <ComponentEditor>(); if (componentEditorPrefab != null) { ComponentEditor editor = Instantiate(componentEditorPrefab); editor.EndEditCallback = () => { UpdatePreviews(components); }; editor.transform.SetParent(ComponentsPanel, false); editor.Components = components.ToArray(); return(true); } else { Debug.LogErrorFormat("editor prefab {0} does not have ComponentEditor script", editorPrefab.name); return(false); } } } return(false); }
private void CreateEditor() { DestroyEditor(); if (Editor.Selection.activeObject == null) { return; } UnityObject[] selectedObjects = Editor.Selection.objects.Where(o => o != null).ToArray(); if (selectedObjects.Length != 1) { return; } Type objType = selectedObjects[0].GetType(); for (int i = 1; i < selectedObjects.Length; ++i) { if (objType != selectedObjects[i].GetType()) { return; } } ExposeToEditor exposeToEditor = Editor.Selection.activeGameObject != null? Editor.Selection.activeGameObject.GetComponent <ExposeToEditor>() : null; if (exposeToEditor != null && !exposeToEditor.CanInspect) { return; } GameObject editorPrefab; if (objType == typeof(Material)) { Material mat = selectedObjects[0] as Material; if (mat.shader == null) { return; } editorPrefab = m_editorsMap.GetMaterialEditor(mat.shader); } else { if (!m_editorsMap.IsObjectEditorEnabled(objType)) { return; } editorPrefab = m_editorsMap.GetObjectEditor(objType); } if (editorPrefab != null) { m_editor = Instantiate(editorPrefab); m_editor.transform.SetParent(m_panel, false); m_editor.transform.SetAsFirstSibling(); } if (m_addComponentRoot != null && exposeToEditor) { IProject project = IOC.Resolve <IProject>(); if (project == null || project.ToAssetItem(Editor.Selection.activeGameObject) == null) { m_addComponentRoot.SetActive(true); if (m_addComponentControl != null) { m_addComponentControl.ComponentSelected += OnAddComponent; } } } }
private void CreateEditor() { DestroyEditor(); if (Editor.Selection.activeObject == null) { return; } if (Editor.Selection.objects[0] == null) { return; } UnityObject[] selectedObjects = Editor.Selection.objects.Where(o => o != null).ToArray(); Type objType; if (!OfSameType(selectedObjects, out objType)) { return; } ExposeToEditor exposeToEditor = null; if (objType == typeof(GameObject)) { exposeToEditor = Editor.Selection.activeGameObject.GetComponent <ExposeToEditor>(); if (exposeToEditor != null && !exposeToEditor.CanInspect) { return; } } GameObject editorPrefab; if (objType == typeof(Material)) { Material mat = selectedObjects[0] as Material; if (mat.shader == null) { return; } Shader shader = mat.shader; for (int i = 0; i < selectedObjects.Length; ++i) { Material material = (Material)selectedObjects[i]; if (material.shader != shader) { return; } } editorPrefab = m_editorsMap.GetMaterialEditor(mat.shader); } else { if (!m_editorsMap.IsObjectEditorEnabled(objType)) { return; } editorPrefab = m_editorsMap.GetObjectEditor(objType); } if (editorPrefab != null) { m_editor = Instantiate(editorPrefab); m_editor.transform.SetParent(m_panel, false); m_editor.transform.SetAsFirstSibling(); } if (m_addComponentRoot != null && exposeToEditor && (m_settingsComponent == null || m_settingsComponent.BuiltInWindowsSettings.Inspector.ShowAddComponentButton)) { IProject project = IOC.Resolve <IProject>(); if (project == null || project.ToAssetItem(Editor.Selection.activeGameObject) == null) { m_addComponentRoot.SetActive(true); if (m_addComponentControl != null) { m_addComponentControl.ComponentSelected += OnAddComponent; } } } }