public override void DoGUI(IGUIDrawer drawer) { drawer.ImportantLabel("Keywords:"); drawer.BeginToolbarHorizontal(); m_AutoRefreshKeyword.Set(drawer.ToolbarToggle(m_AutoRefreshKeyword, "自动刷新")); if (!m_AutoRefreshKeyword && drawer.ToolbarButton(false, "刷新")) { RefreshShaderKeywords(); } m_OnlyDisplayEnabledKeyword.Set(drawer.ToolbarToggle(m_OnlyDisplayEnabledKeyword, "只显示已启用")); if (drawer.ToolbarButton(false, "Log")) { LogShaderKeywords(); } drawer.EndHorizontal(); drawer.BeginToolbarHorizontal(); float rowWidth = 0; bool dirty = false; for (int iKeyword = 0; iKeyword < m_GlobalKeywords.Count; iKeyword++) { KeywordItem iterKeyword = m_GlobalKeywords[iKeyword]; if (m_OnlyDisplayEnabledKeyword && !iterKeyword.Enable) { continue; } if (drawer.ToolbarButton(iterKeyword.Enable, iterKeyword.Content.text)) { dirty = true; if (iterKeyword.Enable) { Shader.DisableKeyword(iterKeyword.KeywordName); } else { Shader.EnableKeyword(iterKeyword.KeywordName); } } drawer.CalcMinMaxWidth_Button(iterKeyword.Content, out float minWidth, out float maxWidth); rowWidth += maxWidth; if (rowWidth >= drawer.GetPanelWidth() * 0.64f) { rowWidth = 0; drawer.EndHorizontal(); drawer.BeginToolbarHorizontal(); } } drawer.EndHorizontal(); if (dirty || m_AutoRefreshKeyword) { RefreshShaderKeywords(); } }
private void LogShaderKeywords() { RefreshShaderKeywords(); StringBuilder disableKeywords = new StringBuilder(); StringBuilder enabledKeywords = new StringBuilder(); for (int iKeyword = 0; iKeyword < m_GlobalKeywords.Count; iKeyword++) { KeywordItem iterKeyword = m_GlobalKeywords[iKeyword]; if (Shader.IsKeywordEnabled(iterKeyword.KeywordName)) { enabledKeywords.Append(iKeyword).Append(",是,") .Append(iterKeyword.KeywordName).Append(',') .Append(iterKeyword.KeywordType).Append('\n'); } else { disableKeywords.Append(iKeyword).Append(",否,") .Append(iterKeyword.KeywordName).Append(',') .Append(iterKeyword.KeywordType).Append('\n'); } } string shaderKeywords = $"编号,是否启用,名字,类型\n{enabledKeywords.ToString()}{disableKeywords.ToString()}"; MDebug.Log("ShaderTools", "ShaderKeywords:\n" + shaderKeywords); #if UNITY_EDITOR string reportFileName = $"{Application.dataPath}/../Temp/ShaderKeywords.csv"; File.WriteAllText(reportFileName, shaderKeywords); EditorUtility.OpenWithDefaultApp(reportFileName); EditorUtility.RevealInFinder(reportFileName); #endif }
public KeyWordList() { InitializeComponent(); mRootItem = new KeywordItem(); mListSelectedObjects_KeyWords = new List <KeywordItem>(); mListKeywordInfos = new List <KeywordInfo>(); mListKeywordItems = new List <KeywordItem>(); Loaded += KeyWordList_Loaded; }
protected virtual void OnReadMetadata(XmlReader reader) { if (reader.IsEmptyElement) { return; } string startName = reader.Name; while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "keyword": KeywordItem keyItem = new KeywordItem(); keyItem.ReadXml(reader); if (!keyItem.IsEmpty) { _keywords.Add(keyItem); } break; case "attribute": AttributeItem attrItem = new AttributeItem(); attrItem.ReadXml(reader); if (!attrItem.IsEmpty) { _attributes.Add(attrItem); } break; case "authoring": break; } } else if (reader.NodeType == XmlNodeType.EndElement) { if (String.Equals(reader.Name, startName, StringComparison.OrdinalIgnoreCase)) { break; } } } }
private void RefreshShaderKeywords() { m_GlobalKeywords.Clear(); for (int iKeyword = 0; iKeyword < UnityEngineReflectionUtility.ShaderKeyword.MAX_SHADER_KEYWORDS; iKeyword++) { ShaderKeyword iterKeyword = UnityEngineReflectionUtility.ShaderKeyword.NewShaderKeyword(iKeyword); string keywordName = ShaderKeyword.GetGlobalKeywordName(iterKeyword); if (!ShaderUtility.IsValidAndUsed(iterKeyword, keywordName)) { continue; } KeywordItem keywordItem = new KeywordItem(); keywordItem.KeywordName = keywordName; keywordItem.KeywordType = ShaderKeyword.GetGlobalKeywordType(iterKeyword); keywordItem.Enable = Shader.IsKeywordEnabled(keywordItem.KeywordName); keywordItem.Content = new GUIContent(keywordItem.KeywordName); m_GlobalKeywords.Add(keywordItem); } }
private void GetCheckedInspector(KeywordItem parentItem) { try { for (int i = 0; i < parentItem.Children.Count; i++) { KeywordItem item = parentItem.Children[i] as KeywordItem; if (item != null) { if (item.IsChecked == true && item.ObjID > 0) { mListSelectedObjects_KeyWords.Add(item); } GetCheckedInspector(item); } } } catch (Exception ex) { ShowException(ex.Message); } }
private void CreateKeywordItems() { try { mRootItem.Children.Clear(); mListKeywordItems.Clear(); //所有关键词 KeywordItem allItem = new KeywordItem(); allItem.ObjID = 0; allItem.Name = CurrentApp.GetLanguageInfo("3102001", "All Keyword"); allItem.Description = CurrentApp.GetLanguageInfo("3102001", "All Keyword"); mRootItem.AddChild(allItem); mListKeywordItems.Add(allItem); var keywords = mListKeywordInfos.GroupBy(k => k.SerialNo); foreach (var keyword in keywords) { KeywordItem item = new KeywordItem(); long serialNo = 0; string strName = string.Empty; string strDesc = string.Empty; foreach (var content in keyword) { serialNo = content.SerialNo; strName = content.Name; strDesc += string.Format("{0};", content.Content); item.ListKeywordInfos.Add(content); } item.ObjID = serialNo; item.Name = strName; item.Description = string.Format("{0} ({1}) ", strName, strDesc); allItem.AddChild(item); mListKeywordItems.Add(item); } } catch (Exception ex) { ShowException(ex.Message); } }
protected virtual bool OnLoadTopicMetadata() { if (_filePath == null || !_filePath.Exists) { return(false); } XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; settings.IgnoreWhitespace = true; settings.IgnoreProcessingInstructions = true; XmlReader reader = null; try { reader = XmlReader.Create(_filePath, settings); XmlNodeType nodeType = reader.MoveToContent(); Debug.Assert(nodeType == XmlNodeType.Element); if (nodeType != XmlNodeType.Element) { return(false); } if (String.Equals(reader.Name, "topic", StringComparison.OrdinalIgnoreCase)) { _includesTopicId = true; _topicId = reader.GetAttribute("id"); string strTemp = reader.GetAttribute("revisionNumber"); if (!String.IsNullOrEmpty(strTemp)) { _revNumber = Convert.ToInt32(strTemp); } string nodeName = null; while (reader.Read()) { nodeType = reader.NodeType; nodeName = reader.Name; if (nodeType == XmlNodeType.Element) { if (ConceptualUtils.IsValidDocumentTag(nodeName)) { this.OnDocumentType(nodeName); break; } } else if (nodeType == XmlNodeType.EndElement) { if (String.Equals(nodeName, "topic") || ConceptualUtils.IsValidDocumentTag(nodeName)) { this.OnDocumentType(nodeName); break; } } } } else if (ConceptualUtils.IsValidDocumentTag(reader.Name)) { _includesTopicId = false; this.OnDocumentType(reader.Name); } } finally { if (reader != null) { reader.Close(); } } // If the companion file is available, load it... string companionFile = Path.ChangeExtension(_filePath, ".cmp"); if (!File.Exists(companionFile)) { return(true); } try { reader = XmlReader.Create(companionFile, settings); XmlNodeType nodeType = XmlNodeType.None; string nodeName = null; string nodeText = null; while (reader.Read()) { nodeType = reader.NodeType; nodeName = reader.Name; if (nodeType == XmlNodeType.Element) { switch (nodeName) { case "title": nodeText = reader.ReadString().Trim(); if (!String.IsNullOrEmpty(nodeText)) { _topicTitle = nodeText; } break; case "tableOfContentsTitle": nodeText = reader.ReadString().Trim(); if (!String.IsNullOrEmpty(nodeText)) { _topicTocTitle = nodeText; } break; case "linkText": nodeText = reader.ReadString().Trim(); if (!String.IsNullOrEmpty(nodeText)) { _topicLinkText = nodeText; } break; case "keyword": KeywordItem keyItem = new KeywordItem(); keyItem.ReadXml(reader); if (!keyItem.IsEmpty) { _keywords.Add(keyItem); } break; case "attribute": AttributeItem attrItem = new AttributeItem(); attrItem.ReadXml(reader); if (!attrItem.IsEmpty) { _attributes.Add(attrItem); } break; case "authoring": break; } } else if (nodeType == XmlNodeType.EndElement) { if (String.Equals(nodeName, "metadata")) { this.OnDocumentType(nodeName); break; } } } } finally { if (reader != null) { reader.Close(); } } return(true); }
private void ReadTopic(XmlReader reader, ConceptualContent content, ConceptualItem parentItem) { XmlNodeType nodeType = XmlNodeType.None; string nodeName = null; int revNumber = 1; while (reader.Read()) { nodeType = reader.NodeType; if (nodeType == XmlNodeType.Element) { nodeName = reader.Name; if (String.Equals(nodeName, "Topic")) { bool isVisible = true; string docId = reader.GetAttribute("id"); if (ConceptualUtils.IsValidId(docId)) { string textTemp = reader.GetAttribute("visible"); if (!String.IsNullOrEmpty(textTemp)) { isVisible = Convert.ToBoolean(textTemp); } string docTitle = reader.GetAttribute("title"); if (!String.IsNullOrEmpty(docTitle)) { string fullPath = Path.Combine(_contentDir, docId + ".aml"); ConceptualTopic docItem = new ConceptualTopic( new BuildFilePath(fullPath), docTitle, docId); docItem.Content = content; docItem.BeginInit(); docItem.Visible = isVisible; docItem.TopicRevisions = revNumber; //docItem.IncludesTopicId = true; docItem.EndInit(); // handle the sub-item... if (!reader.IsEmptyElement) { ReadTopic(reader, content, docItem); } parentItem.Add(docItem); } } } else if (String.Equals(nodeName, "HelpKeyword")) { string index = reader.GetAttribute("index"); string term = reader.GetAttribute("term"); if (!String.IsNullOrEmpty(index) && !String.IsNullOrEmpty(term)) { KeywordItem keyword = new KeywordItem( KeywordItem.ParseIndex(index), term); parentItem.Keywords.Add(keyword); } } } else if (nodeType == XmlNodeType.EndElement) { if (String.Equals(reader.Name, "Topic")) { break; } } } }