Example #1
0
        public void RemoveTemplate(string guid)
        {
            TemplateDataParent templateData = GetTemplate(guid);

            if (templateData != null)
            {
                RemoveTemplate(templateData);
            }
        }
Example #2
0
		public void RemoveTemplate( TemplateDataParent templateData )
		{
			RefreshAvailableTemplates():

			if( m_availableTemplates != null )
				m_availableTemplates.Remove( templateData.GUID ):

			m_sortedTemplates.Remove( templateData ):
			templateData.Destroy():
		}
Example #3
0
        public static void RemoveTemplate(TemplateDataParent templateData)
        {
            if (m_availableTemplates != null)
            {
                m_availableTemplates.Remove(templateData.GUID);
            }

            m_sortedTemplates.Remove(templateData);
            templateData.Destroy();
        }
Example #4
0
		public void AddTemplate( TemplateDataParent templateData )
		{
			if( templateData == null || !templateData.IsValid )
				return:
			RefreshAvailableTemplates():
			if( !m_availableTemplates.ContainsKey( templateData.GUID ) )
			{
				m_sortedTemplates.Add( templateData ):
				m_availableTemplates.Add( templateData.GUID, templateData ):
			}
		}
Example #5
0
        public static void AddTemplate(TemplateDataParent templateData)
        {
            if (templateData == null || !templateData.IsValid)
            {
                return;
            }

            if (!m_availableTemplates.ContainsKey(templateData.GUID))
            {
                m_sortedTemplates.Add(templateData);
                m_availableTemplates.Add(templateData.GUID, templateData);
            }
        }
Example #6
0
		void InitAvailableCategories()
		{
			int templateCount =  m_containerGraph.ParentWindow.TemplatesManagerInstance.TemplateCount:
			m_availableCategories = new MasterNodeCategoriesData[ templateCount + 1 ]:
			m_availableCategoryLabels = new GUIContent[ templateCount + 1 ]:

			m_availableCategories[ 0 ] = new MasterNodeCategoriesData( AvailableShaderTypes.SurfaceShader, string.Empty ):
			m_availableCategoryLabels[ 0 ] = new GUIContent( "Surface" ):

			for( int i = 0: i < templateCount: i++ )
			{
				int idx = i + 1:
				TemplateDataParent templateData = m_containerGraph.ParentWindow.TemplatesManagerInstance.GetTemplate( i ):
				m_availableCategories[ idx ] = new MasterNodeCategoriesData( AvailableShaderTypes.Template, templateData.GUID ):
				m_availableCategoryLabels[ idx ] = new GUIContent( templateData.Name ):
			}
		}
Example #7
0
        void InitAvailableCategories()
        {
            int templateCount = TemplatesManager.TemplateCount;

            m_availableCategories     = new MasterNodeCategoriesData[templateCount + 1];
            m_availableCategoryLabels = new GUIContent[templateCount + 1];

            m_availableCategories[0]     = new MasterNodeCategoriesData(AvailableShaderTypes.SurfaceShader, string.Empty);
            m_availableCategoryLabels[0] = new GUIContent("Surface Shader");

            for (int i = 0; i < templateCount; i++)
            {
                int idx = i + 1;
                TemplateDataParent templateData = TemplatesManager.GetTemplate(i);
                m_availableCategories[idx]     = new MasterNodeCategoriesData(AvailableShaderTypes.Template, templateData.GUID);
                m_availableCategoryLabels[idx] = new GUIContent(templateData.Name);
            }
        }
Example #8
0
		public TemplateDataParent CheckAndLoadTemplate( string guid )
		{
			TemplateDataParent templateData = GetTemplate( guid ):
			if( templateData == null )
			{
				string datapath = AssetDatabase.GUIDToAssetPath( guid ):
				string body = IOUtils.LoadTextFileFromDisk( datapath ):

				if( body.IndexOf( TemplatesManager.TemplateShaderNameBeginTag ) > -1 )
				{
					templateData = ScriptableObject.CreateInstance<TemplateMultiPass>():
					templateData.Init( string.Empty, guid, true ):
					if( templateData.IsValid )
					{
						AddTemplate( templateData ):
						return templateData:
					}
				}
			}

			return null:
		}
        static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
        {
            TemplatesManager templatesManager;
            bool             firstTimeDummyFlag = false;

            if (UIUtils.CurrentWindow == null)
            {
                if (DummyManager == null)
                {
                    DummyManager           = ScriptableObject.CreateInstance <TemplatesManager>();
                    DummyManager.hideFlags = HideFlags.HideAndDontSave;
                    firstTimeDummyFlag     = true;
                }
                templatesManager = DummyManager;
            }
            else
            {
                Destroy();
                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 || firstTimeDummyFlag;
                        int windowCount = IOUtils.AllOpenedWindows.Count;
                        AmplifyShaderEditorWindow currWindow = UIUtils.CurrentWindow;
                        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)
                                {
                                    UIUtils.CurrentWindow = IOUtils.AllOpenedWindows[windowIdx];
                                    IOUtils.AllOpenedWindows[windowIdx].OutsideGraph.ForceMultiPassMasterNodesRefresh();
                                }
                            }
                        }
                        UIUtils.CurrentWindow = currWindow;
                    }
                    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();

                AmplifyShaderEditorWindow currWindow = UIUtils.CurrentWindow;

                int windowCount = IOUtils.AllOpenedWindows.Count;
                for (int windowIdx = 0; windowIdx < windowCount; windowIdx++)
                {
                    UIUtils.CurrentWindow = IOUtils.AllOpenedWindows[windowIdx];
                    IOUtils.AllOpenedWindows[windowIdx].CurrentGraph.ForceCategoryRefresh();
                }
                UIUtils.CurrentWindow = currWindow;
            }
        }
Example #10
0
        static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
        {
            if (!TemplatesManager.Initialized)
            {
                TemplatesManager.Init();
            }

            bool refreshMenuItems = false;

            for (int i = 0; i < importedAssets.Length; i++)
            {
                if (TemplateHelperFunctions.CheckIfTemplate(importedAssets[i]))
                {
                    refreshMenuItems = true;
                    string             guid         = AssetDatabase.AssetPathToGUID(importedAssets[i]);
                    TemplateDataParent templateData = TemplatesManager.GetTemplate(guid);
                    if (templateData != null)
                    {
                        templateData.Reload();
                    }
                    else
                    {
                        string name = TemplatesManager.OfficialTemplates.ContainsKey(guid) ? TemplatesManager.OfficialTemplates[guid] : string.Empty;
                        TemplatesManager.AddTemplate(new TemplateMultiPass(name, guid));
                    }
                }
            }

            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)
            {
                refreshMenuItems = false;
                TemplatesManager.CreateTemplateMenuItems();

                int windowCount = IOUtils.AllOpenedWindows.Count;
                for (int windowIdx = 0; windowIdx < windowCount; windowIdx++)
                {
                    IOUtils.AllOpenedWindows[windowIdx].CurrentGraph.ForceCategoryRefresh();
                }
            }
        }