예제 #1
0
    private void ShowCurEventWindow()
    {
        //展示窗口
        if (this.curEvent == null)
        {
            return;
        }
        GUILayout.BeginVertical();
        //卡卡卡卡
//        Type t = EditorSkillTool.GetTypeBySEAttributeName(this.curEvent.EventName);
//        ISkillEventEditor obj = (ISkillEventEditor) t.Assembly.CreateInstance(t.FullName);
//        obj.OnGuiEditor(this.curEvent);
        GUILayout.Label(string.Format("正在编辑第{0}帧第{1}个事件{2}", this.curframe, this.eventIndex, this.curEvent.EventName));
        ISkillEventEditor obj;

        if (!this.seEditorDict.TryGetValue(this.curEvent.EventName, out obj))
        {
            Type t = EditorSkillTool.GetTypeBySEAttributeName(this.curEvent.EventName);
            if (t == null)
            {
                Debug.LogError("不存在" + this.curEvent.EventName + "标签对应的类");
                return;
            }

            obj = (ISkillEventEditor)t.Assembly.CreateInstance(t.FullName);
            this.seEditorDict.Add(this.curEvent.EventName, obj);
        }

//        string str = "";
//        EditorGUILayout.TextField("切换event点一下这个输入框", str, GUILayout.Width(200));
        obj.OnGuiEditor(this.curEvent);
        GUILayout.EndVertical();
    }
예제 #2
0
 void SetFrame(int f, bool force = false)
 {
     if (curframe != f || force)
     {
         ani.SetPose(curAniClip, f, true);
         curframe = f;
         //动画编辑器 切换帧刷新curSkillEventList
         curSkillEventList = EditorSkillTool.GetCurFrameEventList(this.curframe, curSkillblock);
     }
 }
예제 #3
0
 public void Show(AniPlayer ani, Skills skill)
 {
     this.skill = skill;
     this.ani   = ani;
     if (this.skill.SkillList == null)
     {
         this.skill.SkillList = new List <Game.Battle.Skill.Skill>();
     }
     //var c = ani.clips[0];
     skillEditorDict = EditorSkillTool.GetSkillEditorDict();
     this.Show();
 }
예제 #4
0
    private void EditorSkillBlock()
    {
        if (this.curblock != null)
        {
            EditorSkillTool.GetSkillEventDict(this.curblock, ref seDict); //获取当前block event组
        }
        else
        {
            seDict.Clear();
            return;
        }

        GUILayout.BeginVertical();
        this.ShowCurAni();
        TableToolMenu.Layout_DrawSeparator(Color.gray, 2);
        GUILayout.Space(10);
        this.ShowSkillEventWindow();
        //重组 覆盖当前block的List<SkillEvent>
        EditorSkillTool.PushSkillEventToBlock(ref this.curblock, seDict);
        EditorUtility.SetDirty(this.ani);
        GUILayout.EndVertical();
    }
예제 #5
0
    private void OnGUI_DrawAniFrame()
    {
        GUILayout.Label("动画播放器:");
        var ani = curAniClip;

        anipos = EditorGUILayout.BeginScrollView(anipos, true, false, GUILayout.Height(230));
        if (curAniClip == null)
        {
            EditorGUILayout.EndScrollView();
            return;
        }

        GUILayout.Label("Animation pos:(" + curframe + "/" + ani.aniFrameCount + ")");
        int nf = (int)GUILayout.HorizontalScrollbar(curframe, 1, 0, ani.aniFrameCount);

        GUILayout.BeginHorizontal();
        for (int i = 0; i < ani.aniFrameCount; i++)
        {
            var obc = GUI.backgroundColor;
            if (curframe == i)
            {
                GUI.backgroundColor = Color.green;
            }

            GUILayout.BeginVertical(GUILayout.Width(1));

            var    oc  = GUI.color;
            string txt = "F";
            if (ani.frames[i].key)
            {
                GUI.color = new Color(1.0f, 0.4f, 0.6f, 1.0f);
                txt       = "K";
            }

            GUILayout.Label(i.ToString());
            if (GUILayout.Button(txt))
            {
                nf = i;
                GUI.FocusControl("RefreshFocus");
            }

            GUI.color = oc;

            List <SkillEvent> tmp = EditorSkillTool.GetCurFrameEventList(i, curSkillblock);
            if (tmp.Count == 0 || tmp == null)
            {
                GUILayout.Space(60);
            }
            else
            {
                GUI.color = new Color(1.0f, 1f, 0f, 1.0f);
                GUILayout.Space(39);
                if (GUILayout.Button("e"))
                {
                    nf = i;
                    GUI.FocusControl("RefreshFocus");
                }
            }

            //关键帧下需要条垂直的空格
            if (ani.frames[i].key)
            {
                GUILayout.Space(60);
            }

            GUI.color = oc;
            if (ani.frames[i].key == false)
            {
                //调整曲线
                GUILayout.BeginHorizontal();
                GUILayout.Space(5);
                float lerp = GUILayout.VerticalScrollbar(ani.frames[i].lerp, 0.01f, 1.0f, 0, GUILayout.Height(120));
                if (lerp != ani.frames[i].lerp)
                {
                    ani.frames[i].lerp = lerp;
                    ani.CalcLerpFrameOne(i);
                    if (i == curframe)
                    {
                        SetFrame(curframe, true);
                        // EditorUtility.SetDirty(ani);
                    }
                }

                GUILayout.EndHorizontal();
            }

            //box帧按钮
            string b_txt = "F";
            if (ani.frames[i].box_key)
            {
                GUI.color = new Color(1.0f, 0.4f, 0.6f, 1.0f);
                b_txt     = "K";
            }

            if (GUILayout.Button(b_txt))
            {
                nf = i;
                GUI.FocusControl("RefreshFocus");
            }


            GUI.color = oc;

            string d_txt = "○";
            if (ani.frames[i].dot_key)
            {
                GUI.color = new Color(1.0f, 0.4f, 0.6f, 1.0f);
                d_txt     = "●";
            }

            if (GUILayout.Button(d_txt))
            {
                nf = i;
                GUI.FocusControl("RefreshFocus");
            }

            GUILayout.EndVertical();
            GUI.color           = oc;
            GUI.backgroundColor = obc;
        }

        SetFrame(nf);

        GUILayout.EndHorizontal();
        GUILayout.EndScrollView();
    }
예제 #6
0
    /// <summary>
    /// 当前技能block
    /// </summary>
    private void OnGUI_DrawSkillBlock()
    {
        GUILayout.BeginVertical(GUILayout.Width(300), GUILayout.Height(800));

        GUILayout.Label("技能块列表:");
        if (curSkillblockList != null)
        {
            int count = curSkillblockList.Count;
            for (int i = 0; i < count; i++)
            {
                GUILayout.BeginVertical();
                if (curSkillblockIndex == i)
                {
                    GUI.color = Color.green;
                }
                else
                {
                    GUI.color = Color.white;
                }

                var sb = this.curSkillblockList[i];
                GUILayout.BeginHorizontal();
                if (GUILayout.Button(string.Format("[{0}] -" + sb.AniName, i)))
                {
                    curSkillblockIndex  = i;
                    curAniClip          = ani.GetClip(sb.AniName);
                    curSkillblock       = sb;
                    curSkillEventList   = EditorSkillTool.GetCurFrameEventList(this.curframe, curSkillblock);
                    curSkillEvnetIndex  = -1;
                    curSkillEventEditor = null;
                    GUI.FocusControl("RefreshFocus");
                }

                GUI.color = GUI.backgroundColor;
                if (GUILayout.Button("DEL", GUILayout.Width(35)))
                {
                    this.curSkillblockList.Remove(sb);
                    count = curSkillblockList.Count;
                    curSkillblockIndex  = -1;
                    curSkillblock       = null;
                    curSkillEventList   = null;
                    curSkillEvnetIndex  = -1;
                    curAniClip          = null;
                    curSkillEventEditor = null;

                    GUI.FocusControl("RefreshFocus");
                }

                GUILayout.EndHorizontal();

                GUILayout.EndVertical();
            }
        }

        GUILayout.Space(20);
        if (curSkillblockList != null)
        {
            if (GUILayout.Button("创建skillBlock"))
            {
                Window_SelectAniClip window =
                    (Window_SelectAniClip)EditorWindow.GetWindow(typeof(Window_SelectAniClip), false, "SelectAniClip");
                window.Show(this.curSkillblockList, this.ani);
            }
        }

        GUILayout.EndVertical();

        TableToolMenu.Layout_DrawSeparatorV(Color.gray, 2);
    }
예제 #7
0
    private void ShowBlockList(List <SkillBlock> blocks)
    {
        int count = blocks.Count;

        if (count == 0)
        {
            curblock = null;
            if (GUILayout.Button("新建一个Block", GUILayout.Width(300)))
            {
                Window_SelectAniClip window =
                    (Window_SelectAniClip)EditorWindow.GetWindow(typeof(Window_SelectAniClip), false, "SelectAniClip");
                window.Show(blocks, 0, this.ani);
            }
        }
        else
        {
            for (int i = 0; i < count; i++)
            {
                SkillBlock sb = blocks[i];
                if (!EditorSkillTool.CheckAniExist(this.ani.clips, sb.AniName))
                {
                    GUIStyle titleStyle2 = new GUIStyle();
                    titleStyle2.normal.textColor = new Color(1, 0, 0, 1);
                    GUILayout.Label("ani不存在动作:" + sb.AniName, titleStyle2);
                }

                GUILayout.BeginHorizontal(GUILayout.Width(300));
                if (this.blockIndex == i)
                {
                    GUI.color = Color.green;
                    curblock  = sb;
                }
                else
                {
                    GUI.color = Color.white;
                }

                if (GUILayout.Button(sb.AniName + " index:" + i))
                {
                    blockIndex = i;
                    curblock   = sb;
                    eventIndex = 0;
                    curEvent   = null;

                    GUI.FocusControl("RefreshFocus");
                }

                GUI.color = GUI.backgroundColor;
                if (GUILayout.Button("add", GUILayout.Width(50)))
                {
                    Window_SelectAniClip window =
                        (Window_SelectAniClip)EditorWindow.GetWindow(typeof(Window_SelectAniClip), false,
                                                                     "SelectAniClip");
                    window.Show(blocks, i + 1, this.ani);
                }

                if (GUILayout.Button("del", GUILayout.Width(50)))
                {
                    blocks.Remove(sb);
                    count = blocks.Count;
                    if (blockIndex == i)
                    {
                        curblock   = null;
                        blockIndex = 0;
                    }
                    else if (blockIndex > i)
                    {
                        blockIndex--;
                    }
                }

                GUILayout.EndHorizontal();
            }
        }
    }