void DrawMainBody() { //m_renderTools.Draw( m_currentOwner, ref m_availableTags ); EditorGUI.BeginChangeCheck(); { EditorGUILayout.Separator(); int itemCount = m_availableTags.Count; if (itemCount == 0) { EditorGUILayout.HelpBox("Your list is Empty!\nUse the plus button to add one.", MessageType.Info); } int markedToDelete = -1; float originalLabelWidth = EditorGUIUtility.labelWidth; for (int i = 0; i < itemCount; i++) { m_availableTags[i].TagFoldout = m_currentOwner.EditorGUILayoutFoldout(m_availableTags[i].TagFoldout, string.Format("[{0}] - {1}", i, m_availableTags[i].TagName)); if (m_availableTags[i].TagFoldout) { EditorGUI.indentLevel += 1; EditorGUIUtility.labelWidth = 70; //Tag Name EditorGUI.BeginChangeCheck(); m_availableTags[i].TagName = EditorGUILayout.TextField(TagNameStr, m_availableTags[i].TagName); if (EditorGUI.EndChangeCheck()) { m_availableTags[i].TagName = UIUtils.RemoveShaderInvalidCharacters(m_availableTags[i].TagName); //m_renderTools.CheckTagUsage( i ); } //Tag Value EditorGUI.BeginChangeCheck(); m_availableTags[i].TagValue = EditorGUILayout.TextField(TagValueStr, m_availableTags[i].TagValue); if (EditorGUI.EndChangeCheck()) { m_availableTags[i].TagValue = UIUtils.RemoveShaderInvalidCharacters(m_availableTags[i].TagValue); //m_renderTools.CheckTagUsage( i ); } EditorGUIUtility.labelWidth = originalLabelWidth; EditorGUILayout.BeginHorizontal(); { GUILayout.Label(" "); // Add new port if (m_currentOwner.GUILayoutButton(string.Empty, UIUtils.PlusStyle, GUILayout.Width(ShaderKeywordButtonLayoutWidth))) { m_availableTags.Insert(i + 1, new CustomTagData()); EditorGUI.FocusTextInControl(null); } //Remove port if (m_currentOwner.GUILayoutButton(string.Empty, UIUtils.MinusStyle, GUILayout.Width(ShaderKeywordButtonLayoutWidth))) { markedToDelete = i; } } EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel -= 1; } } if (markedToDelete > -1) { if (m_availableTags.Count > markedToDelete) { m_availableTags.RemoveAt(markedToDelete); EditorGUI.FocusTextInControl(null); } } EditorGUILayout.Separator(); } if (EditorGUI.EndChangeCheck()) { m_isDirty = true; } }
void DrawMainBody() { EditorGUI.BeginChangeCheck(); { EditorGUILayout.Separator(); int itemCount = m_availableTags.Count; if (itemCount == 0) { EditorGUILayout.HelpBox("Your list is Empty!\nUse the plus button to add one.", MessageType.Info); } int markedToDelete = -1; float originalLabelWidth = EditorGUIUtility.labelWidth; for (int i = 0; i < itemCount; i++) { m_availableTags[i].TagFoldout = m_currentOwner.EditorGUILayoutFoldout(m_availableTags[i].TagFoldout, string.Format("[{0}] - {1}", i, m_availableTags[i].TagName)); if (m_availableTags[i].TagFoldout) { EditorGUI.indentLevel += 1; EditorGUIUtility.labelWidth = 70; //Tag Name EditorGUI.BeginChangeCheck(); m_availableTags[i].TagName = m_currentOwner.EditorGUILayoutTextField(TagNameStr, m_availableTags[i].TagName); if (EditorGUI.EndChangeCheck()) { m_availableTags[i].TagName = UIUtils.RemoveShaderInvalidCharacters(m_availableTags[i].TagName); m_tagNameCheckFlag = true; m_tagNameCheckItemId = i; m_tagNameCheckTimestamp = EditorApplication.timeSinceStartup; } //Tag Value switch (m_availableTags[i].SpecialTag) { case TemplateSpecialTags.DisableBatching: { m_availableTags[i].Batching = (DisableBatching)m_currentOwner.EditorGUILayoutEnumPopup(RenderTypeLabelStr, m_availableTags[i].Batching); m_availableTags[i].TagValue = m_availableTags[i].Batching.ToString(); } break; case TemplateSpecialTags.RenderType: { m_availableTags[i].RenderType = (RenderType)m_currentOwner.EditorGUILayoutEnumPopup(RenderTypeLabelStr, m_availableTags[i].RenderType); if (m_availableTags[i].RenderType == RenderType.Custom) { m_availableTags[i].TagValue = m_currentOwner.EditorGUILayoutTextField(CustomRenderTypeLabelStr, m_availableTags[i].TagValue); } } break; case TemplateSpecialTags.Queue: { EditorGUI.BeginChangeCheck(); m_availableTags[i].RenderQueue = (RenderQueue)m_currentOwner.EditorGUILayoutEnumPopup(QueueLabelStr, m_availableTags[i].RenderQueue, GUILayout.MinWidth(150)); m_availableTags[i].RenderQueueOffset = m_currentOwner.EditorGUILayoutIntField(QueueIndexStr, m_availableTags[i].RenderQueueOffset); if (EditorGUI.EndChangeCheck()) { m_availableTags[i].BuildQueueTagValue(); } } break; case TemplateSpecialTags.None: { EditorGUI.BeginChangeCheck(); m_availableTags[i].TagValue = m_currentOwner.EditorGUILayoutTextField(TagValueStr, m_availableTags[i].TagValue); if (EditorGUI.EndChangeCheck()) { m_availableTags[i].TagValue = UIUtils.RemoveShaderInvalidCharacters(m_availableTags[i].TagValue); } } break; } EditorGUIUtility.labelWidth = originalLabelWidth; EditorGUILayout.BeginHorizontal(); { GUILayout.Label(" "); // Add new port if (m_currentOwner.GUILayoutButton(string.Empty, UIUtils.PlusStyle, GUILayout.Width(ShaderKeywordButtonLayoutWidth))) { m_availableTags.Insert(i + 1, new CustomTagData()); EditorGUI.FocusTextInControl(null); } //Remove port if (m_currentOwner.GUILayoutButton(string.Empty, UIUtils.MinusStyle, GUILayout.Width(ShaderKeywordButtonLayoutWidth))) { markedToDelete = i; } } EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel -= 1; } } if (markedToDelete > -1) { if (m_availableTags.Count > markedToDelete) { m_availableTags.RemoveAt(markedToDelete); EditorGUI.FocusTextInControl(null); } } EditorGUILayout.Separator(); } if (EditorGUI.EndChangeCheck()) { m_isDirty = true; } }