void AddAIGroup(AIDataUnit aiData) { UIAIDataUnit uiGroup = new UIAIDataUnit(aiData); listUIGroups.Add(uiGroup); AIDataSelection.SelectAIDataUnit(uiGroup); Repaint(); }
/// <summary> /// 创建一个新的AI组 并且添加到UI列表里面 /// </summary> /// <param name="unit"></param> void CreateAIGroup(AIDataUnit unit) { aiDataSet.aiDataList.Add(unit); UIAIDataUnit uiGroup = new UIAIDataUnit(unit); listUIGroups.Add(uiGroup); AIDataSelection.SelectAIDataUnit(uiGroup); Repaint(); }
public static void SelectAIDataUnit(UIAIDataUnit groupUI) { if (selectedUnit != groupUI) { selectedUnit = groupUI; selectedDataUnit = groupUI.aiData; } selectedAiClip = null; mSelectedLink = null; selecteClipGroup = null; }
public AIDataUnit GetAIUnitData(int aiID) { AIDataUnit targetData = dataSet.aiDataList.Find(delegate(AIDataUnit dataUnit) { return(dataUnit.Id == aiID); }); if (targetData == null) { Debug.LogError(string.Format("找不到AI数据{0}", aiID)); } return(targetData); }
/// <summary> /// 绘制所有的AI组 /// </summary> void DrawAIUnits() { if (GUILayout.Button("新建AI组", GUILayout.Width(60))) { AIDataUnitEditWnd wnd = EditorWindow.GetWindow <AIDataUnitEditWnd>(); AIDataUnit unit = new AIDataUnit(); wnd.SetData(AIDataUnitEditWnd.EditMode.Create, unit, delegate(AIDataUnit data) { CreateAIGroup(data); }); } groupScrollPos = GUILayout.BeginScrollView(groupScrollPos, false, true, GUILayout.Width(400), GUILayout.Height(position.height * 0.9f)); for (int i = 0; i < listUIGroups.Count; i++) { UIAIDataUnit uiGroup = listUIGroups[i]; GUILayout.BeginHorizontal(); if (GUILayout.Button(uiGroup.bExpand ? "-" : "+", GUILayout.Width(20))) { uiGroup.bExpand = !uiGroup.bExpand; } Color prevColor = GUI.color; GUI.color = uiGroup == AIDataSelection.selectedUnit ? Color.yellow : prevColor; if (GUILayout.Button(uiGroup.Name, GUILayout.Width(200))) { AIDataSelection.SelectAIDataUnit(uiGroup); } GUI.color = prevColor; if (GUILayout.Button("添加", GUILayout.Width(40))) { AIClipGroup group = new AIClipGroup(); uiGroup.aiData.aiGroups.Add(group); } if (GUILayout.Button("X", GUILayout.Width(20))) { if (EditorUtility.DisplayDialog("提示", "确定要AI组吗?", "确定")) { DeleteAIGroup(uiGroup); return; } } GUILayout.EndHorizontal(); if (uiGroup.bExpand)//没有展开 { DrawAIUnit(uiGroup); } } GUILayout.EndScrollView(); }
/// <summary> /// 检查是否可以创建这个新的数据(ID 是否相同等等) /// </summary> /// <param name="dataToCreate"></param> /// <returns></returns> public static bool CheckCreateNew(AIDataUnit dataToCreate) { if(dataToCreate.Id==0) { EditorUtility.DisplayDialog("提示", "ID 不能为0", "好吧V_V"); return false; } AIDataUnit src = AIDataEditor.aiDataSet.aiDataList.Find(delegate(AIDataUnit unit) { return unit.Id == dataToCreate.Id; }); return src == null; }
/// <summary> /// 检查是否可以创建这个新的数据(ID 是否相同等等) /// </summary> /// <param name="dataToCreate"></param> /// <returns></returns> public static bool CheckCreateNew(AIDataUnit dataToCreate) { if (dataToCreate.Id == 0) { EditorUtility.DisplayDialog("提示", "ID 不能为0", "好吧V_V"); return(false); } AIDataUnit src = AIDataEditor.aiDataSet.aiDataList.Find(delegate(AIDataUnit unit) { return(unit.Id == dataToCreate.Id); }); return(src == null); }
/// <summary> /// 寻找制定AI片断归属的AI组 /// </summary> /// <param name="clip"></param> /// <returns></returns> public static AIClipGroup FindOwnerClipGroup(AIClip clip) { for (int i = 0; i < AIDataEditor.aiDataSet.aiDataList.Count; i++) { AIDataUnit aiUnit = AIDataEditor.aiDataSet.aiDataList[i]; AIClipGroup clipGroup = aiUnit.aiGroups.Find(delegate(AIClipGroup Group) { return(Group.aiClipList.Contains(clip)); }); if (clipGroup != null) { return(clipGroup); } } Debug.LogError(string.Format("片断{0}没有找到归属组", clip)); return(null); }
public UIAIDataUnit(AIDataUnit data) { aiData = data; }
public virtual void SetAIDataUnit(AIDataUnit aiData) { mDataUnit = aiData; SetAIClipGroup(mDataUnit.aiGroups[0]); }
/// <summary> /// 绘制所有的AI组 /// </summary> void DrawAIUnits() { if (GUILayout.Button("新建AI组", GUILayout.Width(60))) { AIDataUnitEditWnd wnd = EditorWindow.GetWindow<AIDataUnitEditWnd>(); AIDataUnit unit = new AIDataUnit(); wnd.SetData(AIDataUnitEditWnd.EditMode.Create, unit, delegate(AIDataUnit data) { CreateAIGroup(data); }); } groupScrollPos = GUILayout.BeginScrollView(groupScrollPos, false, true, GUILayout.Width(400), GUILayout.Height(position.height * 0.9f)); for (int i = 0; i < listUIGroups.Count; i++) { UIAIDataUnit uiGroup = listUIGroups[i]; GUILayout.BeginHorizontal(); if (GUILayout.Button(uiGroup.bExpand ? "-" : "+",GUILayout.Width(20))) { uiGroup.bExpand =! uiGroup.bExpand; } Color prevColor = GUI.color; GUI.color = uiGroup == AIDataSelection.selectedUnit ? Color.yellow : prevColor; if(GUILayout.Button(uiGroup.Name,GUILayout.Width(200))) { AIDataSelection.SelectAIDataUnit(uiGroup); } GUI.color = prevColor; if (GUILayout.Button("添加", GUILayout.Width(40))) { AIClipGroup group = new AIClipGroup(); uiGroup.aiData.aiGroups.Add(group); } if (GUILayout.Button("X", GUILayout.Width(20))) { if (EditorUtility.DisplayDialog("提示", "确定要AI组吗?", "确定")) { DeleteAIGroup(uiGroup); return; } } GUILayout.EndHorizontal(); if (uiGroup.bExpand)//没有展开 { DrawAIUnit(uiGroup); } } GUILayout.EndScrollView(); }
public void SetData(EditMode editMode, AIDataUnit dataToEdit,OnCreateNew createCallBack) { mDataUnit = dataToEdit; mMode = editMode; onCreateNew = createCallBack; }
void DrawAIUnit(UIAIDataUnit groupUnit) { AIDataUnit aiData = groupUnit.aiData; for (int groupIndex = 0; groupIndex < aiData.aiGroups.Count; groupIndex++) { AIClipGroup clipGroup = aiData.aiGroups[groupIndex]; GUILayout.BeginHorizontal(); GUILayout.Space(20); bool expandGroup = groupUnit.GetChildExpand(groupIndex); if (GUILayout.Button(expandGroup?"-":"+", GUILayout.Width(25))) { groupUnit.SetChildExpand(groupIndex, !expandGroup); } if (AIFUIUtility.LayoutButtonWithColor(clipGroup.GroupName, clipGroup == AIDataSelection.selecteClipGroup?Color.magenta:GUI.color, 170)) { AIDataSelection.SelectAIGroup(clipGroup); } if (GUILayout.Button("Add", GUILayout.Width(45))) { AIClip aiClip = new AIClip(); AIClipEditWnd wnd = EditorWindow.GetWindow <AIClipEditWnd>(); wnd.SetData(AIClipEditWnd.EditMode.Create, clipGroup, aiClip, delegate { clipGroup.aiClipList.Add(aiClip); }); } if (GUILayout.Button("X", GUILayout.Width(45))) { if (EditorUtility.DisplayDialog("警告", "确定删除动作组?", "确定")) { aiData.aiGroups.Remove(clipGroup); Repaint(); return; } } GUILayout.EndHorizontal(); if (expandGroup) { const int indentSpace = 40; #region 绘制展开的AI组片断 if (clipGroup.aiClipList.Count == 0) { GUILayout.BeginHorizontal(); GUILayout.Space(indentSpace); GUILayout.Label("空"); GUILayout.EndHorizontal(); } else { for (int i = 0; i < clipGroup.aiClipList.Count; i++) { AIClip clip = clipGroup.aiClipList[i]; GUILayout.BeginHorizontal(); GUILayout.Space(indentSpace); Color col = AIDataSelection.selectedAiClip == clip ? Color.green : GUI.color; if (AIFUIUtility.LayoutButtonWithColor(clip.NameOnUI, col, AIFGUISKin.GetStyle("button"), GUILayout.Width(150))) { AIDataSelection.SelectAIDataUnit(groupUnit); AIDataSelection.SelectAIClip(clip); } if (clip == AIDataSelection.selectedAiClip) { } if (GUILayout.Button("X", GUILayout.Width(30))) { if (EditorUtility.DisplayDialog("删除AI片断", "确定要删除?", "Yes")) { DeleteAiClipFromAiGroup(clip, clipGroup); clipGroup.aiClipList.Remove(clip); return; } } GUILayout.EndHorizontal(); } } #endregion } } }
public void SetData(EditMode editMode, AIDataUnit dataToEdit, OnCreateNew createCallBack) { mDataUnit = dataToEdit; mMode = editMode; onCreateNew = createCallBack; }