Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        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;
                    }
                }
            }
        }
Ejemplo n.º 4
0
        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;
                    }
                }
            }
        }