Beispiel #1
0
        public override void OnInspectorGUI(NodeGUI node, AssetReferenceStreamManager streamManager, NodeGUIEditor editor, Action onValueChanged)
        {
            if (m_exportPath == null)
            {
                return;
            }

            var currentEditingGroup = editor.CurrentEditingGroup;

            EditorGUILayout.HelpBox("Export To Directory: Export given files to output directory.", MessageType.Info);
            editor.UpdateNodeName(node);

            GUILayout.Space(10f);

            //Show target configuration tab
            editor.DrawPlatformSelector(node);
            using (new EditorGUILayout.VerticalScope(GUI.skin.box)) {
                var disabledScope = editor.DrawOverrideTargetToggle(node, m_exportPath.ContainsValueOf(currentEditingGroup), (bool enabled) => {
                    using (new RecordUndoScope("Remove Target Export Settings", node, true)){
                        if (enabled)
                        {
                            m_exportPath[currentEditingGroup]   = m_exportPath.DefaultValue;
                            m_exportOption[currentEditingGroup] = m_exportOption.DefaultValue;
                            m_flattenDir[currentEditingGroup]   = m_flattenDir.DefaultValue;
                        }
                        else
                        {
                            m_exportPath.Remove(currentEditingGroup);
                            m_exportOption.Remove(currentEditingGroup);
                            m_flattenDir.Remove(currentEditingGroup);
                        }
                        onValueChanged();
                    }
                });
                EditorGUI.BeginDisabledGroup(disabledScope);
                #region DisableGroup
                //using (disabledScope) {
                ExportOption opt       = (ExportOption)m_exportOption[currentEditingGroup];
                var          newOption = (ExportOption)EditorGUILayout.EnumPopup("Export Option", opt);
                if (newOption != opt)
                {
                    using (new RecordUndoScope("Change Export Option", node, true)){
                        m_exportOption[currentEditingGroup] = (int)newOption;
                        onValueChanged();
                    }
                }

                EditorGUILayout.LabelField("Export Path:");

                string newExportPath = null;

                newExportPath = editor.DrawFolderSelector("", "Select Export Folder",
                                                          m_exportPath[currentEditingGroup],
                                                          GetExportPath(m_exportPath[currentEditingGroup]),
                                                          (string folderSelected) => {
                    var projectPath = Directory.GetParent(Application.dataPath).ToString();

                    if (projectPath == folderSelected)
                    {
                        folderSelected = string.Empty;
                    }
                    else
                    {
                        var index = folderSelected.IndexOf(projectPath);
                        if (index >= 0)
                        {
                            folderSelected = folderSelected.Substring(projectPath.Length + index);
                            if (folderSelected.IndexOf('/') == 0)
                            {
                                folderSelected = folderSelected.Substring(1);
                            }
                        }
                    }
                    return(folderSelected);
                }
                                                          );
                if (newExportPath != m_exportPath[currentEditingGroup])
                {
                    using (new RecordUndoScope("Change Export Path", node, true)){
                        m_exportPath[currentEditingGroup] = newExportPath;
                        onValueChanged();
                    }
                }

                int flat    = m_flattenDir[currentEditingGroup];
                var newFlat = EditorGUILayout.ToggleLeft("Flatten Directory", flat == 1) ? 1:0;
                if (newFlat != flat)
                {
                    using (new RecordUndoScope("Change Flatten Directory", node, true)){
                        m_flattenDir[currentEditingGroup] = newFlat;
                        onValueChanged();
                    }
                }

                var exporterNodePath = GetExportPath(newExportPath);
                if (ValidateExportPath(
                        newExportPath,
                        exporterNodePath,
                        () => {
                },
                        () => {
                    using (new EditorGUILayout.HorizontalScope()) {
                        EditorGUILayout.LabelField(exporterNodePath + " does not exist.");
                        if (GUILayout.Button("Create directory"))
                        {
                            Directory.CreateDirectory(exporterNodePath);
                        }
                        onValueChanged();
                    }
                    EditorGUILayout.Space();

                    string parentDir = Path.GetDirectoryName(exporterNodePath);
                    if (Directory.Exists(parentDir))
                    {
                        EditorGUILayout.LabelField("Available Directories:");
                        string[] dirs = Directory.GetDirectories(parentDir);
                        foreach (string s in dirs)
                        {
                            EditorGUILayout.LabelField(s);
                        }
                    }
                }
                        ))
                {
                    GUILayout.Space(10f);

                    using (new EditorGUILayout.HorizontalScope()) {
                        GUILayout.FlexibleSpace();
                                                        #if UNITY_EDITOR_OSX
                        string buttonName = "Reveal in Finder";
                                                        #else
                        string buttonName = "Show in Explorer";
                                                        #endif
                        if (GUILayout.Button(buttonName))
                        {
                            EditorUtility.RevealInFinder(exporterNodePath);
                        }
                    }
                }
                #endregion
                EditorGUI.EndDisabledGroup();
            }
        }
Beispiel #2
0
        public override void OnInspectorGUI(NodeGUI node, AssetReferenceStreamManager streamManager, NodeGUIEditor editor, Action onValueChanged)
        {
            if (m_loadPath == null)
            {
                return;
            }

            EditorGUILayout.HelpBox("Load From Directory: Load assets from given directory path.", MessageType.Info);
            editor.UpdateNodeName(node);

            GUILayout.Space(10f);

            //Show target configuration tab
            editor.DrawPlatformSelector(node);
            using (new EditorGUILayout.VerticalScope(GUI.skin.box)) {
                var disabledScope = editor.DrawOverrideTargetToggle(node, m_loadPath.ContainsValueOf(editor.CurrentEditingGroup), (bool b) => {
                    using (new RecordUndoScope("Remove Target Load Path Settings", node, true)) {
                        if (b)
                        {
                            m_loadPath[editor.CurrentEditingGroup] = m_loadPath.DefaultValue;
                        }
                        else
                        {
                            m_loadPath.Remove(editor.CurrentEditingGroup);
                        }
                        onValueChanged();
                    }
                });
                #region DisableGroup
                EditorGUI.BeginDisabledGroup(disabledScope);
                var path = m_loadPath[editor.CurrentEditingGroup];
                EditorGUILayout.LabelField("Load Path:");

                string newLoadPath = null;

                newLoadPath = editor.DrawFolderSelector(Model.Settings.Path.ASSETS_PATH, "Select Asset Folder",
                                                        path,
                                                        FileUtility.PathCombine(Model.Settings.Path.ASSETS_PATH, path),
                                                        (string folderSelected) => { return(NormalizeLoadPath(folderSelected)); }
                                                        );
                if (newLoadPath != path)
                {
                    using (new RecordUndoScope("Load Path Changed", node, true)){
                        m_loadPath[editor.CurrentEditingGroup] = newLoadPath;
                        onValueChanged();
                    }
                }

                var  dirPath   = Path.Combine(Model.Settings.Path.ASSETS_PATH, newLoadPath);
                bool dirExists = Directory.Exists(dirPath);

                GUILayout.Space(10f);

                using (new EditorGUILayout.HorizontalScope()) {
                    EditorGUI.BeginDisabledGroup(string.IsNullOrEmpty(newLoadPath) || !dirExists);
                    //using(new EditorGUI.DisabledScope())
                    {
                        GUILayout.FlexibleSpace();
                        if (GUILayout.Button("Highlight in Project Window", GUILayout.Width(180f)))
                        {
                            // trailing is "/" not good for LoadMainAssetAtPath
                            if (dirPath[dirPath.Length - 1] == '/')
                            {
                                dirPath = dirPath.Substring(0, dirPath.Length - 1);
                            }
                            var obj = AssetDatabase.LoadMainAssetAtPath(dirPath);
                            EditorGUIUtility.PingObject(obj);
                        }
                    }
                    EditorGUI.EndDisabledGroup();
                }

                if (!dirExists)
                {
                    var  parentDirPath   = Path.GetDirectoryName(dirPath);
                    bool parentDirExists = Directory.Exists(parentDirPath);
                    if (parentDirExists)
                    {
                        EditorGUILayout.LabelField("Available Directories:");
                        string[] dirs = Directory.GetDirectories(parentDirPath);
                        foreach (string s in dirs)
                        {
                            EditorGUILayout.LabelField(s);
                        }
                    }
                }

                #endregion
                EditorGUI.EndDisabledGroup();
            }
        }
Beispiel #3
0
        //public override bool OnAssetsReimported(
        //	Model.NodeData nodeData,
        //	AssetReferenceStreamManager streamManager,
        //	BuildTarget target,
        //	string[] importedAssets,
        //	string[] deletedAssets,
        //	string[] movedAssets,
        //	string[] movedFromAssetPaths)
        //{
        //	return true;
        //}


        public override void OnInspectorGUI(NodeGUI node, AssetReferenceStreamManager streamManager, NodeGUIEditor editor, Action onValueChanged)
        {
            EditorGUILayout.HelpBox("Assert Unwanted Assets In Bundle: Checks if unwanted assets are included in bundle configurations.", MessageType.Info);
            editor.UpdateNodeName(node);

            GUILayout.Space(10f);

            var newValue = (AssertionStyle)EditorGUILayout.EnumPopup("Assertion Style", m_style);

            if (newValue != m_style)
            {
                using (new RecordUndoScope("Change Assertion Style", node, true))
                {
                    m_style = newValue;
                    onValueChanged();
                }
            }

            GUILayout.Space(4f);

            //Show target configuration tab
            editor.DrawPlatformSelector(node);
            using (new EditorGUILayout.VerticalScope(GUI.skin.box))
            {
                var disabledScope = editor.DrawOverrideTargetToggle(node, m_path.ContainsValueOf(editor.CurrentEditingGroup), (bool b) =>
                {
                    using (new RecordUndoScope("Remove Target Load Path Settings", node, true))
                    {
                        if (b)
                        {
                            m_path[editor.CurrentEditingGroup] = m_path.DefaultValue;
                        }
                        else
                        {
                            m_path.Remove(editor.CurrentEditingGroup);
                        }
                        onValueChanged();
                    }
                });

                EditorGUI.BeginDisabledGroup(disabledScope);
                #region DisableScope
                //using (disabledScope) {
                var path = m_path[editor.CurrentEditingGroup];
                EditorGUILayout.LabelField("Assertion Path:");

                string newLoadPath = null;

                newLoadPath = editor.DrawFolderSelector(Model.Settings.Path.ASSETS_PATH, "Select Asset Folder",
                                                        path,
                                                        FileUtility.PathCombine(Model.Settings.Path.ASSETS_PATH, path),
                                                        (string folderSelected) =>
                {
                    var dataPath = Application.dataPath;
                    if (dataPath == folderSelected)
                    {
                        folderSelected = string.Empty;
                    }
                    else
                    {
                        var index = folderSelected.IndexOf(dataPath);
                        if (index >= 0)
                        {
                            folderSelected = folderSelected.Substring(dataPath.Length + index);
                            if (folderSelected.IndexOf('/') == 0)
                            {
                                folderSelected = folderSelected.Substring(1);
                            }
                        }
                    }
                    return(folderSelected);
                }
                                                        );

                if (newLoadPath != path)
                {
                    using (new RecordUndoScope("Path Change", node, true))
                    {
                        m_path[editor.CurrentEditingGroup] = newLoadPath;
                        onValueChanged();
                    }
                }

                var  dirPath   = Path.Combine(Model.Settings.Path.ASSETS_PATH, newLoadPath);
                bool dirExists = Directory.Exists(dirPath);

                GUILayout.Space(10f);

                using (new EditorGUILayout.HorizontalScope())
                {
                    EditorGUI.BeginDisabledGroup(string.IsNullOrEmpty(newLoadPath) || !dirExists);
                    {
                        GUILayout.FlexibleSpace();
                        if (GUILayout.Button("Highlight in Project Window", GUILayout.Width(180f)))
                        {
                            // trailing is "/" not good for LoadMainAssetAtPath
                            if (dirPath[dirPath.Length - 1] == '/')
                            {
                                dirPath = dirPath.Substring(0, dirPath.Length - 1);
                            }
                            var obj = AssetDatabase.LoadMainAssetAtPath(dirPath);
                            EditorGUIUtility.PingObject(obj);
                        }
                    }
                    EditorGUI.EndDisabledGroup();
                }
                #endregion
                EditorGUI.EndDisabledGroup();
            }
        }