void OnGUIRule(ABPackRuleConfig.Rule rule, bool selected)
{
ABPackRuleConfig config = AutoABNamePostprocessor.config;
EditorGUILayout.BeginVertical(selected ? GUI.skin.button : GUI.skin.box);
EditorGUILayout.BeginHorizontal();
rule.path = EditorGUILayout.TextField("Path: ", rule.path);
if (Event.current.type == EventType.DragUpdated && GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition))
{
if (DragAndDrop.objectReferences[0] is DefaultAsset)
{
DragAndDrop.visualMode = DragAndDropVisualMode.Move;
DragAndDrop.AcceptDrag();
Event.current.Use();
}
}
else if (Event.current.type == EventType.DragPerform && GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition))
{
rule.path = GetAssetPath(DragAndDrop.paths[0]);
Event.current.Use();
EditorUtility.SetDirty(config);
}
if (GUILayout.Button("Select", GUILayout.Width(100)))
{
string result = EditorUtility.OpenFolderPanel("", "选择目录", "");
if (result != null)
{
rule.path = GetAssetPath(result);
GUI.FocusControl(null);
EditorUtility.SetDirty(config);
}
}
EditorGUILayout.EndHorizontal();
if (!string.IsNullOrEmpty(rule.path))
{
rule.typeFilter = EditorGUILayout.TextField("TypeFilter: ", rule.typeFilter);
if (Event.current.type == EventType.DragUpdated && GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition))
{
DragAndDrop.visualMode = DragAndDropVisualMode.Move;
DragAndDrop.AcceptDrag();
Event.current.Use();
}
else if (Event.current.type == EventType.DragPerform && GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition))
{
rule.typeFilter = string.Join(",", DragAndDrop.objectReferences.Select(x => x.GetType().Name).Distinct().ToArray());
Event.current.Use();
EditorUtility.SetDirty(config);
}
rule.ruleType = EditorGUILayout.Popup("Rule: ", rule.ruleType, AutoABNamePostprocessor.packRuleNames.ToArray());
}
EditorGUILayout.EndVertical();
}