/////////////////////////////////////////
        public void RegisterFiles()
        {
            var lst = new List <Item>();

            InitID();


            lst.Add(new Item {
                id          = GetID(),
                displayName = S._BuildSceneSet,
                icon        = EditorIcon.icons_processed_sceneset_icon_asset,
                //depth = 1,
            });

            PB.Load();

            foreach (var p in PB.i.profileList)
            {
                lst.Add(new Item {
                    id          = GetID(),
                    displayName = p.profileName,
                    profile     = p,
                });
            }


            m_registerItems = lst;
            ReloadAndSorting();
        }
Beispiel #2
0
        /////////////////////////////////////////
        void DrawLeftPane()
        {
            HGUIToolbar.Begin();
            if (HGUIToolbar.Button(EditorIcon.toolbar_plus))
            {
                _add();
            }
            if (HGUIToolbar.Button(EditorIcon.toolbar_minus))
            {
                _minus();
            }
            GUILayout.FlexibleSpace();
            HGUIToolbar.End();

            m_treeView.DrawLayoutGUI();

            void _add()
            {
                PB.i.profileList.Add(new PB.Profile($"BuildScene ({PB.i.profileList.Count})"));
                PB.Save();
                m_treeView.RegisterFiles();
            }

            void _minus()
            {
                PB.i.profileList.Remove(m_treeView.currentItem.profile);
                PB.Save();

                m_treeView.RegisterFiles();
            }
        }
Beispiel #3
0
        /////////////////////////////////////////
        void OnRowGUISceneSet(RowGUIArgs args, Item item)
        {
            if (item.title)
            {
                if (item.id == 1)
                {
                    s_buildNo = 0;
                }
                if (!args.selected)
                {
                    HEditorStyles.sceneTopBarBg.Draw(args.rowRect);
                }
                DefaultRowGUI(args);
                return;
            }

            //DefaultRowGUI( args );
            var rect = args.rowRect;

            rect.x += 4;

            if (HEditorGUI.IconButton(rect.W(16), EditorIcon.minus))
            {
                EditorHelper.RemoveSceneToBuildSetting(item.path);
                m_registerItems.Remove(item);
                ReloadAndSorting();
                //EditorApplication.delayCall += () => RegisterFiles( m_profile );
            }

            rect.x += 16;
            if (HEditorGUI.IconButton(rect.W(16), EditorIcon.sceneasset))
            {
                EditorHelper.PingObject(item.path);
            }

            rect.x += 16;
            ScopeChange.Begin();
            item.toggle = EditorGUI.Toggle(rect.W(16), item.toggle);
            if (ScopeChange.End())
            {
                m_profile.Toggle(item.toggle, item.path);
                PB.Save();
            }

            rect.x += 20;

            Label(args, rect, item.displayName);

            if (item.toggle)
            {
                var ss = $"{s_buildNo}";
                var sz = ss.CalcSize(HEditorStyles.treeViewLine);
                rect    = args.rowRect.AlignR(sz.x);
                rect.x -= 4;
                Label(args, rect, ss);
                s_buildNo++;
            }
        }
Beispiel #4
0
        public static void DrawGUI()
        {
            P.Load();
            PB.Load();
            Styles.Init();

            DrawContentConfig();

            if (s_changed)
            {
                P.Save();
                PB.Save();
                BuildAssistWindow.Repaint();
            }
        }
Beispiel #5
0
        /////////////////////////////////////////

        static string BuildPackage()
        {
            var currentParams = P.GetActiveTargetParams();

            IBuildPlatform builder = null;

            switch (UnityEditorEditorUserBuildSettings.activeBuildTargetGroup)
            {
            case BuildTargetGroup.Standalone:
                builder = new BuildPlatformStandard();
                break;

            case BuildTargetGroup.Android:
                builder = new BuildPlatformAndroid();
                break;

            case BuildTargetGroup.WebGL:
                builder = new BuildPlatformWebGL();
                break;
            }

            if (builder == null)
            {
                return(string.Empty);
            }

            Log($"{builder.GetType().Name}");
            Utils.CallEvent(typeof(Hananoki_BuildPreProcess));

            //Debug.Log( string.Join( " ", PB.GetBuildSceneName( currentParams ) ) );
            var report = builder.BuildPackage(PB.GetBuildSceneName(currentParams));

            //var report = ( UnityEditor.Build.Reporting.BuildReport ) null;
            Utils.CallEvent(typeof(Hananoki_BuildPostProcess));

            if (report == null)
            {
                return(string.Empty);
            }

            Log($"# BuildPipeline Result: {report.summary.result.ToString()}");
            return(report.summary.result.ToString());
        }
Beispiel #6
0
        //static string BuildAssetBundle() {
        //	if( !PB.i.enableAssetBundleBuild ) return string.Empty;

        //	var currentParams = P.GetCurrentParams();
        //	string result = "";

        //	var outputPath = "AssetBundles/" + currentParams.buildTarget.ToString();

        //	if( currentParams.assetBundleOption.Has( P.BUNDLE_OPTION_CLEAR_FILES ) ) {
        //		try {
        //			fs.rm( outputPath, true );
        //		}
        //		catch( Exception e ) {
        //			Debug.LogException( e );
        //		}
        //	}

        //	try {
        //		string[] assetBundleNames = AssetDatabase.GetAllAssetBundleNames();

        //		AssetBundleBuild[] builds = new AssetBundleBuild[ assetBundleNames.Length ];
        //		for( int i = 0; i < builds.Length; i++ ) {
        //			builds[ i ].assetBundleName = assetBundleNames[ i ];
        //			builds[ i ].assetNames = AssetDatabase.GetAssetPathsFromAssetBundle( assetBundleNames[ i ] );
        //		}

        //		fs.mkdir( outputPath );

        //		Debug.Log( "# Start BuildPipeline.BuildAssetBundles:" );
        //		var manifest = BuildPipeline.BuildAssetBundles(
        //				outputPath,
        //				builds,
        //				currentParams.assetBundleOptions,
        //				currentParams.buildTarget );

        //		if( currentParams.assetBundleOption.Has( P.BUNDLE_OPTION_COPY_STREAMINGASSETS ) ) {
        //			for( int i = 0; i < builds.Length; i++ ) {
        //				var p = builds[ i ].assetBundleName;
        //				fs.cp( $"{outputPath}/{p}", $"{Application.streamingAssetsPath}/{p}", true );
        //			}
        //		}

        //		B.CallEvent( typeof( BuildAssistEventAssetBundleBuildPostProcess ) );

        //		AssetDatabase.SaveAssets();
        //		AssetDatabase.Refresh();
        //	}
        //	catch( Exception e ) {
        //		Debug.LogException( e );
        //		throw;
        //	}
        //	return result;
        //}



        public static string Build(int mode)
        {
            Log("Start Build:");
            PB.Load();
            Utils.CallEvent(typeof(Hananoki_BuildStartProcess));

            using (new ScopeBuildExclusionAssets(PB.i.enableExlusionAssets, PB.i.exclusionFileList))
                using (new ScopeBuildSettings())
                    using (new ScopeScriptingDefineSymbols()) {
                        var currentParams = P.GetActiveTargetParams();

                        if (!Application.isBatchMode)
                        {
                            if (EditorUserBuildSettings.activeBuildTarget != currentParams.buildTarget)
                            {
                                EditorUserBuildSettings.SwitchActiveBuildTarget(UnityEditorEditorUserBuildSettings.activeBuildTargetGroup, currentParams.buildTarget);
                            }
                        }

                        var    activeBuildTargetGroup = UnityEditorEditorUserBuildSettings.activeBuildTargetGroup;
                        string symbol = PlayerSettings.GetScriptingDefineSymbolsForGroup(activeBuildTargetGroup);

                        symbol = string.Join(";", symbol, currentParams.scriptingDefineSymbols);

                        PlayerSettings.SetScriptingDefineSymbolsForGroup(activeBuildTargetGroup, symbol);

                        Log($"ActiveBuildTargetGroup: {activeBuildTargetGroup.ToString()}");
                        Log($"ScriptingDefineSymbols: {symbol}");
                        if (mode.Has(0x02))
                        {
                            //BuildAssetBundle();
                            Debug.LogError("BuildAssetBundle is no longer valid");
                        }
                        if (mode.Has(0x01))
                        {
                            BuildPackage();
                        }
                    }

            Log("Exit Build:");

            return("");
        }
Beispiel #7
0
        /////////////////////////////////////////
        protected override void RenameEnded(RenameEndedArgs args)
        {
            base.RenameEnded(args);

            if (args.newName.Length <= 0)
            {
                goto failed;
            }
            if (args.newName == args.originalName)
            {
                goto failed;
            }
            args.acceptedRename = true;

            var item = ToItem(args.itemID);

            item.displayName         = args.newName;
            item.profile.profileName = args.newName;
            PB.Save();
            return;

failed:
            args.acceptedRename = false;
        }
Beispiel #8
0
        static void DrawContentConfig()
        {
            ScopeChange.Begin();

            //PB.i.enableAssetBundleBuild = HEditorGUILayout.ToggleLeft( S._EnableAssetBundleBuild, PB.i.enableAssetBundleBuild );
            //HEditorGUI.DrawDebugRectAtLastRect();
            PB.i.enableOldStyleProjectSettings = HEditorGUILayout.ToggleLeft(S._Usingtheold_styleProjectSettings, PB.i.enableOldStyleProjectSettings);
            GUILayout.Space(8);
            PB.i.enableExlusionAssets = HEditorGUILayout.ToggleLeft(S._Enablingassetexclusionatbuildtime, PB.i.enableExlusionAssets);

            GUILayout.Label(S._ExclusionAssetsList, EditorStyles.boldLabel);

            if (s_exclusionContents == null)
            {
                if (PB.i.exclusionAssets == null)
                {
                    PB.i.exclusionAssets = new List <PB.ExclusionSets>();
                }

                //foreach(var p in PB.i.exclusionAssets ) {
                //	Debug.Log( GUIDUtils.GetAssetPath( p.GUID ) );
                //}
                s_exclusionContents = PB.i.exclusionAssets.Select(x => x.GUID.ToAssetPath()).OrderBy(value => value).Select(x => new GUIContent(x, AssetDatabase.GetCachedIcon(x))).ToArray();
            }

            int removeIndex = -1;

            ScopeVertical.Begin(EditorStyles.helpBox);
            for (int i = 0; i < s_exclusionContents.Length; i++)
            {
                var s = s_exclusionContents[i];
                ScopeHorizontal.Begin();
                GUILayout.Label(EditorHelper.TempContent(""), GUILayout.ExpandWidth(true), GUILayout.Height(18));
                ScopeHorizontal.End();

                var rc = GUILayoutUtility.GetLastRect();
                GUI.Box(rc, "", Styles.projectBrowserHeaderBgMiddle);
                GUI.Label(rc, s, Styles.labelAndIcon);
                rc.x     = rc.xMax - 16;
                rc.width = 16;
                if (HEditorGUI.IconButton(rc, EditorIcon.minus))
                {
                    removeIndex = i;
                }
            }
            GUILayout.FlexibleSpace();
            if (0 <= removeIndex)
            {
                var findGUID = s_exclusionContents[removeIndex].text.ToGUID();
                var rIndex   = PB.i.exclusionAssets.FindIndex(x => x.GUID == findGUID);
                PB.i.exclusionAssets.RemoveAt(rIndex);
                s_exclusionContents = null;
                s_changed           = true;
            }
            ScopeVertical.End();

            var dropRc = GUILayoutUtility.GetLastRect();
            var evt    = Event.current;

            switch (evt.type)
            {
            case EventType.DragUpdated:
            case EventType.DragPerform:
                if (!dropRc.Contains(evt.mousePosition))
                {
                    break;
                }

                DragAndDrop.visualMode = DragAndDropVisualMode.Copy;

                void AddFiles(params string[] paths)
                {
                    PB.i.exclusionAssets.AddRange(paths.Select(x => new PB.ExclusionSets(x.ToGUID(), x)).ToArray());
                    PB.i.exclusionAssets = PB.i.exclusionAssets.Distinct(x => x.GUID).ToList();
                    PB.Save();
                }

                string[] DirFiles(string path)
                {
                    return(DirectoryUtils.GetFiles(path, "*", SearchOption.AllDirectories).Where(x => x.Extension() != ".meta").ToArray());
                }

                if (evt.type == EventType.DragPerform)
                {
                    DragAndDrop.AcceptDrag();
                    if (DragAndDrop.paths.Length == 1)
                    {
                        if (Directory.Exists(DragAndDrop.paths[0]))
                        {
                            var m = new GenericMenu();
                            m.AddItem(S._Registerasafolder, false, (context) => {
                                AddFiles((string)context);
                            }, DragAndDrop.paths[0]);
                            m.AddItem(S._Registeringfilescontainedinafolder, false, (context) => {
                                AddFiles(DirFiles((string)context));
                                ;
                            }, DragAndDrop.paths[0]);
                            m.DropDownAtMousePosition();
                        }
                        else
                        {
                            AddFiles(DragAndDrop.paths);
                        }
                    }
                    else
                    {
                        bool dirChekc = false;
                        foreach (var s in DragAndDrop.paths)
                        {
                            if (Directory.Exists(s))
                            {
                                dirChekc = true;
                                break;
                            }
                        }
                        if (dirChekc)
                        {
                            var m = new GenericMenu();
                            m.AddItem(S._Registerasafolder, false, (context) => {
                                AddFiles((string[])context);
                            }, DragAndDrop.paths);
                            m.AddItem(S._Registeringfilescontainedinafolder, false, (context) => {
                                foreach (var s in ((string[])context))
                                {
                                    if (Directory.Exists(s))
                                    {
                                        AddFiles(DirFiles(s));
                                    }
                                    else
                                    {
                                        AddFiles(s);
                                    }
                                }
                            }, DragAndDrop.paths);
                            m.DropDownAtMousePosition();
                        }
                        else
                        {
                            AddFiles(DragAndDrop.paths);
                        }
                    }

                    DragAndDrop.activeControlID = 0;

                    s_exclusionContents = null;
                }
                s_changed = true;
                Event.current.Use();
                break;
            }

            if (ScopeChange.End())
            {
                s_changed = true;
            }
        }
Beispiel #9
0
        /////////////////////////////////////////

        void OnFocus()
        {
            PB.Load();
        }