Example #1
0
 public void SetData(EditMode editMode,AIClipGroup clipGroup, AIClip dataToEdit, OnCreateNew createCallBack)
 {
     mDataUnit = dataToEdit;
     mClipGroup = clipGroup;
     mMode = editMode;
     onCreateNew = createCallBack;
 }
Example #2
0
    public static void  DrawAiLinkPopup(AIClipGroup clipGroup, AILink link)
    {
        if (clipGroup == null)
        {
            GUILayout.Label("Ai组为空");
            return;
        }
        if (clipGroup.aiClipList.Count == 0)
        {
            GUILayout.Label("片断列表为空");
            return;
        }

        GUILayout.BeginHorizontal();
        GUILayout.Label("连接动画名", GUILayout.Width(70));
        string[] optionClips = new string[clipGroup.aiClipList.Count];
        for (int i = 0; i < optionClips.Length; i++)
        {
            optionClips[i] = clipGroup.aiClipList[i].NameOnUI;
        }
        int curSelectIndex = clipGroup.aiClipList.FindIndex(delegate(AIClip targetClip)
        {
            return(targetClip.clipKey == link.linkToClip);
        });

        if (curSelectIndex < 0)
        {
            curSelectIndex = 0;
        }

        curSelectIndex  = EditorGUILayout.Popup(curSelectIndex, optionClips); //最终的选择
        link.linkToClip = clipGroup.aiClipList[curSelectIndex].clipKey;

        GUILayout.EndHorizontal();
    }
Example #3
0
 /// <summary>
 /// 设置AI组数据
 /// </summary>
 public virtual void SetAIClipGroup(AIClipGroup groupData)
 {
     mAiClipGroup = groupData;
     mCurAIClip   = mAiClipGroup.aiClipList[0];
     SwitchAIClip(mCurAIClip, 0);
     UpdateShape();
 }
Example #4
0
 public void SetData(EditMode editMode, AIClipGroup clipGroup, AIClip dataToEdit, OnCreateNew createCallBack)
 {
     mDataUnit   = dataToEdit;
     mClipGroup  = clipGroup;
     mMode       = editMode;
     onCreateNew = createCallBack;
 }
Example #5
0
 public static void DrawCommanAnimation(AICommonAnimation comAnim, AIClipGroup clipGroup)
 {
     GUILayout.Label("AI通用片断");
     comAnim.die  = AIFUIUtility.DrawAiLinkPopup(clipGroup, comAnim.die, "  默认连接", 150);
     comAnim.hit  = AIFUIUtility.DrawAiLinkPopup(clipGroup, comAnim.hit, "  受击", 150);
     comAnim.idle = AIFUIUtility.DrawAiLinkPopup(clipGroup, comAnim.idle, "  默认待机", 150);
     comAnim.run  = AIFUIUtility.DrawAiLinkPopup(clipGroup, comAnim.run, "  跑步", 150);
     comAnim.walk = AIFUIUtility.DrawAiLinkPopup(clipGroup, comAnim.walk, "  走路", 150);
 }
Example #6
0
 public static void SelectAIGroup(AIClipGroup group)
 {
     if (selecteClipGroup != group)
     {
         selecteClipGroup = group;
     }
     selectedAiClip = null;
     mSelectedLink  = null;
 }
Example #7
0
 /// <summary>
 /// 从AI组里面删除一个片断, 并且会删除其他片断对这个片断的连接
 /// </summary>
 /// <param name="clip"></param>
 /// <param name="clipGroup"></param>
 void DeleteAiClipFromAiGroup(AIClip clip, AIClipGroup clipGroup)
 {
     if (clipGroup.aiClipList.Contains(clip))
     {
         clipGroup.aiClipList.Remove(clip);
     }
     else
     {
         Debug.LogError("片断" + clip + "不在片断组里面" + clipGroup);
     }
 }
Example #8
0
 public static void SelectAIDataUnit(UIAIDataUnit groupUI)
 {
     if (selectedUnit != groupUI)
     {
         selectedUnit     = groupUI;
         selectedDataUnit = groupUI.aiData;
     }
     selectedAiClip   = null;
     mSelectedLink    = null;
     selecteClipGroup = null;
 }
Example #9
0
 public static void SelectAIClip(AIClip aiClip)
 {
     if (selectedAiClip != aiClip)
     {
         selectedAiClip = aiClip;
         //要保证选择AI片断后自动选择这个片断所在的AI组
         selecteClipGroup = FindOwnerClipGroup(aiClip);
         mSelectedLink    = null;
         selectedHitData  = null;
         aiEvent          = null;
     }
 }
Example #10
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();
    }
Example #11
0
 public static void DrawAIClip(AIClip clip,AIClipGroup paretGroup)
 {
     clip.clipKey = EditorGUILayout.TextField( "动画片断键值",clip.clipKey,GUILayout.Width(300));
     clip.name = EditorGUILayout.TextField("片断名称", clip.name, GUILayout.Width(300));
     clip.animationName = EditorGUILayout.TextField("动画名称",clip.animationName, GUILayout.Width(300));
     if (paretGroup != null)
     {
         clip.defaultLinkClip = AIFUIUtility.DrawAiLinkPopup(paretGroup, clip.defaultLinkClip, "  默认连接", 150,150);
     }
     clip.animationTime = EditorGUILayout.FloatField("动画时长", clip.animationTime, GUILayout.Width(300));
     clip.attackRange = EditorGUILayout.FloatField("攻击范围",clip.attackRange, GUILayout.Width(300));
     clip.CheckDirectionInput = GUILayout.Toggle(clip.CheckDirectionInput, "方向输入(检测到方向输入切换到跑步片断)", GUILayout.Width(250));
     clip.runToTarget = GUILayout.Toggle(clip.runToTarget, "跑向目标(找到目标的情况向目标移动)", GUILayout.Width(200));
     clip.applyRootMotion = GUILayout.Toggle(clip.applyRootMotion, "使用动画运动", GUILayout.Width(90));
 }
Example #12
0
 public static void DrawAIClip(AIClip clip, AIClipGroup paretGroup)
 {
     clip.clipKey       = EditorGUILayout.TextField("动画片断键值", clip.clipKey, GUILayout.Width(300));
     clip.name          = EditorGUILayout.TextField("片断名称", clip.name, GUILayout.Width(300));
     clip.animationName = EditorGUILayout.TextField("动画名称", clip.animationName, GUILayout.Width(300));
     if (paretGroup != null)
     {
         clip.defaultLinkClip = AIFUIUtility.DrawAiLinkPopup(paretGroup, clip.defaultLinkClip, "  默认连接", 150, 150);
     }
     clip.animationTime       = EditorGUILayout.FloatField("动画时长", clip.animationTime, GUILayout.Width(300));
     clip.attackRange         = EditorGUILayout.FloatField("攻击范围", clip.attackRange, GUILayout.Width(300));
     clip.CheckDirectionInput = GUILayout.Toggle(clip.CheckDirectionInput, "方向输入(检测到方向输入切换到跑步片断)", GUILayout.Width(250));
     clip.runToTarget         = GUILayout.Toggle(clip.runToTarget, "跑向目标(找到目标的情况向目标移动)", GUILayout.Width(200));
     clip.applyRootMotion     = GUILayout.Toggle(clip.applyRootMotion, "使用动画运动", GUILayout.Width(90));
 }
Example #13
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);
 }
Example #14
0
    /// <summary>
    /// 检查是否可以创建这个新的数据(ID 是否相同等等)
    /// </summary>
    /// <param name="dataToCreate"></param>
    /// <returns></returns>
    public static bool CheckCreateNew(AIClipGroup clipGroup,AIClip clip)
    {
        if (string.IsNullOrEmpty(clip.clipKey))
        {
            EditorUtility.DisplayDialog("提示", "片断名不能为空", "好吧V_V");
            return false;
        }

        AIClip srcClip= clipGroup.aiClipList.Find(delegate(AIClip targetClip)
        {
            return targetClip.clipKey == clip.clipKey;
        });

        if (srcClip != null)
        {
            EditorUtility.DisplayDialog("提示", "动画片断键值和已有的重复!", "确定");
            return false;
        }
        return true;
    }
Example #15
0
    /// <summary>
    /// 检查是否可以创建这个新的数据(ID 是否相同等等)
    /// </summary>
    /// <param name="dataToCreate"></param>
    /// <returns></returns>
    public static bool CheckCreateNew(AIClipGroup clipGroup, AIClip clip)
    {
        if (string.IsNullOrEmpty(clip.clipKey))
        {
            EditorUtility.DisplayDialog("提示", "片断名不能为空", "好吧V_V");
            return(false);
        }

        AIClip srcClip = clipGroup.aiClipList.Find(delegate(AIClip targetClip)
        {
            return(targetClip.clipKey == clip.clipKey);
        });

        if (srcClip != null)
        {
            EditorUtility.DisplayDialog("提示", "动画片断键值和已有的重复!", "确定");
            return(false);
        }
        return(true);
    }
Example #16
0
    public static string  DrawAiLinkPopup(AIClipGroup clipGroup, string curSelect, string strTip, int popUpWidth, int tipWidth = 70)
    {
        if (clipGroup == null)
        {
            GUILayout.Label("Ai组为空");
            return("");
        }
        if (clipGroup.aiClipList.Count == 0)
        {
            GUILayout.Label("片断列表为空");
            return("");
        }

        GUILayout.BeginHorizontal();
        GUILayout.Label(strTip, GUILayout.Width(tipWidth));
        string[] optionClips = new string[clipGroup.aiClipList.Count];
        for (int i = 0; i < optionClips.Length; i++) //显示的是全名, 但是我们记录的是键值
        {
            optionClips[i] = clipGroup.aiClipList[i].NameOnUI;
        }
        int curSelectIndex = clipGroup.aiClipList.FindIndex(delegate(AIClip targetClip)
        {
            return(targetClip.clipKey == curSelect);
        });

        if (curSelectIndex < 0)
        {
            curSelectIndex = 0;
        }

        curSelectIndex = EditorGUILayout.Popup(curSelectIndex, optionClips, GUILayout.Width(popUpWidth));
        curSelect      = clipGroup.aiClipList[curSelectIndex].clipKey;
        GUILayout.EndHorizontal();

        return(curSelect);
    }
Example #17
0
 /// <summary>
 /// 从AI组里面删除一个片断, 并且会删除其他片断对这个片断的连接
 /// </summary>
 /// <param name="clip"></param>
 /// <param name="clipGroup"></param>
 void DeleteAiClipFromAiGroup(AIClip clip, AIClipGroup clipGroup)
 {
     if (clipGroup.aiClipList.Contains(clip))
     {
         clipGroup.aiClipList.Remove(clip);
     }
     else
     {
         Debug.LogError("片断" + clip + "不在片断组里面"+clipGroup);
     }
 }
Example #18
0
 public static void SelectAIClip(AIClip aiClip)
 {
     if (selectedAiClip != aiClip)
     {
         selectedAiClip = aiClip;
         //要保证选择AI片断后自动选择这个片断所在的AI组
         selecteClipGroup = FindOwnerClipGroup(aiClip);
         mSelectedLink = null;
         selectedHitData = null;
         aiEvent = null;
     }
 }
Example #19
0
    public static void EditAILink(AIClipGroup clipGroup, AILink link)
    {
        AILinkEditWnd wnd = EditorWindow.GetWindow <AILinkEditWnd>();

        wnd.SetData(clipGroup, link);
    }
Example #20
0
 public void SetData(AIClipGroup clipGroup, AILink link)
 {
     srcGroup = clipGroup;
     aiLink   = link;
 }
Example #21
0
 public static void DrawCommanAnimation(AICommonAnimation  comAnim,AIClipGroup clipGroup)
 {
     GUILayout.Label("AI通用片断");
     comAnim.die = AIFUIUtility.DrawAiLinkPopup(clipGroup, comAnim.die, "  默认连接", 150);
     comAnim.hit = AIFUIUtility.DrawAiLinkPopup(clipGroup, comAnim.hit, "  受击", 150);
     comAnim.idle = AIFUIUtility.DrawAiLinkPopup(clipGroup, comAnim.idle, "  默认待机", 150);
     comAnim.run = AIFUIUtility.DrawAiLinkPopup(clipGroup, comAnim.run, "  跑步", 150);
     comAnim.walk = AIFUIUtility.DrawAiLinkPopup(clipGroup, comAnim.walk, "  走路", 150);
 }
Example #22
0
    public static string DrawAiLinkPopup(AIClipGroup clipGroup,  string curSelect,string strTip,int popUpWidth,int tipWidth=70)
    {
        if (clipGroup == null)
        {
            GUILayout.Label("Ai组为空");
            return"";
        }
        if (clipGroup.aiClipList.Count == 0)
        {
            GUILayout.Label("片断列表为空");
            return "";
        }

        GUILayout.BeginHorizontal();
        GUILayout.Label(strTip, GUILayout.Width(tipWidth));
        string[] optionClips = new string[clipGroup.aiClipList.Count];
        for (int i = 0; i < optionClips.Length; i++) //显示的是全名, 但是我们记录的是键值
        {
            optionClips[i] = clipGroup.aiClipList[i].NameOnUI;
        }
        int curSelectIndex = clipGroup.aiClipList.FindIndex(delegate(AIClip targetClip)
        {
            return targetClip.clipKey == curSelect;
        });
        if (curSelectIndex < 0)
            curSelectIndex = 0;

        curSelectIndex = EditorGUILayout.Popup(curSelectIndex, optionClips, GUILayout.Width(popUpWidth));
        curSelect = clipGroup.aiClipList[curSelectIndex].clipKey;
        GUILayout.EndHorizontal();

        return curSelect;
    }
Example #23
0
    public static void DrawAiLinkPopup(AIClipGroup clipGroup, AILink link)
    {
        if (clipGroup == null)
        {
            GUILayout.Label("Ai组为空");
            return;
        }
        if (clipGroup.aiClipList.Count == 0)
        {
            GUILayout.Label("片断列表为空");
            return ;
        }

        GUILayout.BeginHorizontal();
        GUILayout.Label("连接动画名", GUILayout.Width(70));
        string[] optionClips =new string[clipGroup.aiClipList.Count];
        for (int i = 0; i < optionClips.Length; i++)
        {
            optionClips[i] = clipGroup.aiClipList[i].NameOnUI;
        }
        int curSelectIndex = clipGroup.aiClipList.FindIndex(delegate(AIClip targetClip)
        {
            return targetClip.clipKey == link.linkToClip;
        });
        if (curSelectIndex < 0)
            curSelectIndex = 0;

        curSelectIndex = EditorGUILayout.Popup(curSelectIndex, optionClips); //最终的选择
        link.linkToClip = clipGroup.aiClipList[curSelectIndex].clipKey;

        GUILayout.EndHorizontal();
    }
Example #24
0
    public static void SelectAIDataUnit(UIAIDataUnit groupUI)
    {
        if (selectedUnit != groupUI)
        {
            selectedUnit = groupUI;
            selectedDataUnit = groupUI.aiData;

        }
        selectedAiClip = null;
        mSelectedLink = null;
        selecteClipGroup = null;
    }
Example #25
0
    public static void SelectAIGroup(AIClipGroup group)
    {
        if (selecteClipGroup != group)
        {
            selecteClipGroup = group;

        }
        selectedAiClip = null;
        mSelectedLink = null;
    }
Example #26
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
            }
        }
    }
Example #27
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();
    }
Example #28
0
    void DrawSelectedAiClipOrGroup()
    {
        GUILayout.BeginArea(new Rect(410, 0, position.width * 0.6f, position.height * 0.9f));
        //selectionScrollPos = GUILayout.BeginScrollView(selectionScrollPos, true, true, GUILayout.Width(400), GUILayout.Height(position.height * 0.9f));

        GUILayout.Label("当前选中");
        AIClip      selectedClip  = AIDataSelection.selectedAiClip;
        AIClipGroup selectedGroup = AIDataSelection.selecteClipGroup;

        if (selectedClip != null)
        {
            AIFUIUtility.DrawAIClip(selectedClip, selectedGroup);
            GUILayout.BeginHorizontal();
            GUILayout.Label("连接片断列表:", GUILayout.Width(100));
            if (GUILayout.Button("添加连接", GUILayout.Width(100)))
            {
                AILink link = new AILink();
                selectedClip.linkAIClipList.Add(link);
                AILinkEditWnd wnd = EditorWindow.GetWindow <AILinkEditWnd>();
                wnd.SetData(AIDataSelection.selecteClipGroup, link);
            }
            GUILayout.EndHorizontal();

            GUILayout.BeginArea(new Rect(250, 150, 500, 700));
            AIFUIUtility.DrawAiEvetList(selectedClip);
            GUILayout.EndArea();

            GUILayout.BeginArea(new Rect(450, 150, 500, 700));
            AIFUIUtility.DrawHitDefinitionList(selectedClip);
            GUILayout.EndArea();

            #region Links
            if (selectedClip.linkAIClipList.Count == 0)
            {
                GUILayout.Label("空列表", GUILayout.Width(300));
            }
            else
            {
                for (int i = 0; i < selectedClip.linkAIClipList.Count; i++)
                {
                    AILink ai = selectedClip.linkAIClipList[i];
                    GUILayout.BeginHorizontal();
                    //string fullClipName=
                    if (AIFUIUtility.LayoutButtonWithColor(ai.linkToClip, AIDataSelection.IsSelectedLinkClip(ai) ? Color.cyan : Color.magenta, 150))
                    {
                        AIDataSelection.SelectLinkClip(ai);
                        AILinkEditWnd.EditAILink(selectedGroup, ai);
                    }
                    if (GUILayout.Button("X", GUILayout.Width(20)))
                    {
                        if (EditorUtility.DisplayDialog("提示", "确定要删除连接吗", "确定"))
                        {
                            selectedClip.linkAIClipList.Remove(ai);
                            return;
                        }
                    }
                    GUILayout.EndHorizontal();
                }



                #region 绘制选择连接
                //AILink link = curSelection.SelectedLink;
                //if (link != null)
                //{
                //    GUILayout.BeginArea(new Rect(300, 50, 500, 700));
                //    link.linkToClip = AIFUIUtility.DrawTextField(link.linkToClip, "连接目标");
                //    conditionListPos = GUILayout.BeginScrollView(conditionListPos, true, true, GUILayout.Width(300), GUILayout.Height(position.height * 0.6f));
                //    AIFUIUtility.DrawAiLinkConditions(link);
                //    GUILayout.EndScrollView();
                //    GUILayout.EndArea();
                //}
                #endregion
            }
            #endregion
        }
        else  //没选中AI片断就检测时候在编辑AI组
        {
            if (AIDataSelection.selecteClipGroup != null)
            {
                AIClipGroup clipGroup = AIDataSelection.selecteClipGroup;
                clipGroup.name       = EditorGUILayout.TextField("Ai组名称", clipGroup.name, GUILayout.Width(300));
                clipGroup.moveSpeed  = EditorGUILayout.FloatField("移动速度", clipGroup.moveSpeed, GUILayout.Width(300));
                clipGroup.targetType = (ETargetType)EditorGUILayout.EnumPopup("目标类型", clipGroup.targetType, GUILayout.Width(300));
                AIFUIUtility.DrawAIShape(AIDataSelection.selecteClipGroup.shape);
                AIFUIUtility.DrawCommanAnimation(AIDataSelection.selecteClipGroup.commonAnimation, AIDataSelection.selecteClipGroup);
            }
            else if (AIDataSelection.selectedUnit != null)
            {
                AIDataSelection.selectedUnit.aiData.AiName = EditorGUILayout.TextField("AI单位名称", AIDataSelection.selectedUnit.aiData.AiName,
                                                                                       GUILayout.Width(400));
                //
            }
        }


        //GUILayout.EndScrollView();
        GUILayout.EndArea();
    }
Example #29
0
 /// <summary>
 /// 设置AI组数据
 /// </summary>
 public virtual void SetAIClipGroup(AIClipGroup groupData)
 {
     mAiClipGroup = groupData;
     mCurAIClip = mAiClipGroup.aiClipList[0];
     SwitchAIClip(mCurAIClip,0);
     UpdateShape();
 }