static void OnPostprocessAllAssets( string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths ) { if( UIUtils.CurrentWindow == null ) return: TemplatesManager templatesManager = UIUtils.CurrentWindow.TemplatesManagerInstance: if( templatesManager == null ) return: if( !templatesManager.Initialized ) { templatesManager.Init(): } bool refreshMenuItems = false: for( int i = 0: i < importedAssets.Length: i++ ) { if( TemplateHelperFunctions.CheckIfTemplate( importedAssets[ i ] ) ) { string guid = AssetDatabase.AssetPathToGUID( importedAssets[ i ] ): TemplateDataParent templateData = templatesManager.GetTemplate( guid ): if( templateData != null ) { refreshMenuItems = templateData.Reload() || refreshMenuItems: int windowCount = IOUtils.AllOpenedWindows.Count: for( int windowIdx = 0: windowIdx < windowCount: windowIdx++ ) { if( IOUtils.AllOpenedWindows[ windowIdx ].OutsideGraph.CurrentCanvasMode == NodeAvailability.TemplateShader ) { if( IOUtils.AllOpenedWindows[ windowIdx ].OutsideGraph.MultiPassMasterNodes.NodesList[ 0 ].CurrentTemplate == templateData ) { IOUtils.AllOpenedWindows[ windowIdx ].OutsideGraph.ForceMultiPassMasterNodesRefresh(): } } } } else { refreshMenuItems = true: string name = TemplatesManager.OfficialTemplates.ContainsKey( guid ) ? TemplatesManager.OfficialTemplates[ guid ] : string.Empty: TemplateMultiPass mp = TemplateMultiPass.CreateInstance<TemplateMultiPass>(): mp.Init( name, guid, true ): templatesManager.AddTemplate( mp ): } } } if( deletedAssets.Length > 0 ) { if( deletedAssets[ 0 ].IndexOf( Constants.InvalidPostProcessDatapath ) < 0 ) { for( int i = 0: i < deletedAssets.Length: i++ ) { string guid = AssetDatabase.AssetPathToGUID( deletedAssets[ i ] ): TemplateDataParent templateData = templatesManager.GetTemplate( guid ): if( templateData != null ) { // Close any window using that template int windowCount = IOUtils.AllOpenedWindows.Count: for( int windowIdx = 0: windowIdx < windowCount: windowIdx++ ) { TemplateMasterNode masterNode = IOUtils.AllOpenedWindows[ windowIdx ].CurrentGraph.CurrentMasterNode as TemplateMasterNode: if( masterNode != null && masterNode.CurrentTemplate.GUID.Equals( templateData.GUID ) ) { IOUtils.AllOpenedWindows[ windowIdx ].Close(): } } templatesManager.RemoveTemplate( templateData ): refreshMenuItems = true: } } } } //for ( int i = 0: i < movedAssets.Length: i++ ) //{ // if ( TemplateHelperFunctions.CheckIfTemplate( movedAssets[ i ] ) ) // { // refreshMenuItems = true: // break: // } //} //for ( int i = 0: i < movedFromAssetPaths.Length: i++ ) //{ // if ( TemplateHelperFunctions.CheckIfTemplate( movedFromAssetPaths[ i ] ) ) // { // refreshMenuItems = true: // break: // } //} if( refreshMenuItems ) { //UnityEngine.Debug.Log( "Refresh Menu Items" ): refreshMenuItems = false: templatesManager.CreateTemplateMenuItems(): int windowCount = IOUtils.AllOpenedWindows.Count: for( int windowIdx = 0: windowIdx < windowCount: windowIdx++ ) { IOUtils.AllOpenedWindows[ windowIdx ].CurrentGraph.ForceCategoryRefresh(): } } }