Exemplo n.º 1
0
    void AddAIGroup(AIDataUnit aiData)
    {
        UIAIDataUnit uiGroup = new UIAIDataUnit(aiData);

        listUIGroups.Add(uiGroup);
        AIDataSelection.SelectAIDataUnit(uiGroup);
        Repaint();
    }
Exemplo n.º 2
0
    /// <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();
    }
Exemplo n.º 3
0
 public static void SelectAIDataUnit(UIAIDataUnit groupUI)
 {
     if (selectedUnit != groupUI)
     {
         selectedUnit     = groupUI;
         selectedDataUnit = groupUI.aiData;
     }
     selectedAiClip   = null;
     mSelectedLink    = null;
     selecteClipGroup = null;
 }
Exemplo n.º 4
0
    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);
    }
Exemplo n.º 5
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();
    }
Exemplo n.º 6
0
    /// <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;
    }
Exemplo n.º 7
0
    /// <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);
    }
Exemplo n.º 8
0
 /// <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);
 }
Exemplo n.º 9
0
 public UIAIDataUnit(AIDataUnit data)
 {
     aiData = data;
 }
Exemplo n.º 10
0
    public virtual void SetAIDataUnit(AIDataUnit aiData)
    {
        mDataUnit = aiData;

        SetAIClipGroup(mDataUnit.aiGroups[0]);
    }
Exemplo n.º 11
0
 public UIAIDataUnit(AIDataUnit data)
 {
     aiData = data;
 }
Exemplo n.º 12
0
    public static void SelectAIDataUnit(UIAIDataUnit groupUI)
    {
        if (selectedUnit != groupUI)
        {
            selectedUnit = groupUI;
            selectedDataUnit = groupUI.aiData;

        }
        selectedAiClip = null;
        mSelectedLink = null;
        selecteClipGroup = null;
    }
Exemplo n.º 13
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();
    }
Exemplo n.º 14
0
 /// <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();
 }
Exemplo n.º 15
0
 public void SetData(EditMode editMode, AIDataUnit dataToEdit,OnCreateNew createCallBack)
 {
     mDataUnit = dataToEdit;
     mMode = editMode;
     onCreateNew = createCallBack;
 }
Exemplo n.º 16
0
 void AddAIGroup(AIDataUnit aiData)
 {
     UIAIDataUnit uiGroup = new UIAIDataUnit(aiData);
     listUIGroups.Add(uiGroup);
     AIDataSelection.SelectAIDataUnit(uiGroup);
     Repaint();
 }
Exemplo n.º 17
0
    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
            }
        }
    }
Exemplo n.º 18
0
    public virtual void SetAIDataUnit(AIDataUnit aiData)
    {
        mDataUnit = aiData;

        SetAIClipGroup(mDataUnit.aiGroups[0]);
    }
Exemplo n.º 19
0
 public void SetData(EditMode editMode, AIDataUnit dataToEdit, OnCreateNew createCallBack)
 {
     mDataUnit   = dataToEdit;
     mMode       = editMode;
     onCreateNew = createCallBack;
 }