예제 #1
0
        protected override void OnGUI(Rect rect)
        {
            FrameConfig configs = win.currentFrame;

            if (null == configs)
            {
                return;
            }

            bool lastStay = configs.stayBodyRange;

            GUILayout.BeginVertical(AEStyles.box);
            bool nextStay = EditorGUILayoutEx.DrawObject("保持上一帧", lastStay);

            GUILayout.EndVertical();

            if (nextStay)
            {
                if (!lastStay)
                {
                    configs.bodyRanges.Clear();
                    win.bodyRangeSelectIndex = -1;
                }
            }
            else
            {
                if (lastStay)
                {//从保持到非保持,则拷贝保持的范围到当前
                    win.CopyBodyRangeToCurrentFrameIfStay();
                }
                win.bodyRangeSelectIndex = EditorGUILayoutEx.DrawList(configs.bodyRanges, win.bodyRangeSelectIndex, ref scrollPos, NewRange, ActionEditorUtility.RangeConfigDrawer);
            }
            configs.stayBodyRange = nextStay;//处理完之后再设置,否者CopyBodyRangeToCurrentFrameIfStay不会执行
        }
예제 #2
0
        protected override void OnGUI(Rect rect)
        {
            StateConfig config = win.currentState;

            if (null == config)
            {
                return;
            }

            scrollView = EditorGUILayout.BeginScrollView(scrollView);

            EditorGUI.BeginChangeCheck();

            config.stateName        = EditorGUILayoutEx.DrawObject("状态名", config.stateName);
            config.dafualtAnimIndex = EditorGUILayoutEx.DrawObject("默认动画序号", config.dafualtAnimIndex);
            config.animNames        = EditorGUILayoutEx.DrawObject("动画名", config.animNames);
            config.fadeTime         = EditorGUILayoutEx.DrawObject("过度时间", config.fadeTime);

            config.enableLoop = EditorGUILayoutEx.DrawObject("循环", config.enableLoop);
            if (!config.enableLoop)
            {
                config.nextStateName = EditorGUILayoutEx.DrawObject("下一个状态", config.nextStateName);
                config.nextAnimIndex = EditorGUILayoutEx.DrawObject("下一个状态动画序号", config.nextAnimIndex);
            }

            if (EditorGUI.EndChangeCheck())
            {
                win.actionMachineDirty = true;
            }

            EditorGUILayout.EndScrollView();
        }
예제 #3
0
        private void EditorMode()
        {
            Event evt = Event.current;

            if (GUILayout.Button("保存", GUILayout.Width(80)))
            {
                GUI.FocusControl(null);
                SaveConfig();
            }
            if (GUILayout.Button("保存到", GUILayout.Width(80)))
            {
                GUI.FocusControl(null);
                SaveConfigToSelect(win.config);
            }
            if (GUILayout.Button("还原修改", GUILayout.Width(80)))
            {
                GUI.FocusControl(null);
                ResetConfig();
            }
            if (GUILayout.Button("拷贝配置", GUILayout.Width(80)))
            {
                GUI.FocusControl(null);
                CopyConfig();
            }
            if (GUILayout.Button("粘贴配置", GUILayout.Width(80)))
            {
                GUI.FocusControl(null);
                PasteConfig();
            }

            win.setting.showView = EditorGUILayoutEx.DrawObject("显示", win.setting.showView);

            GUILayout.FlexibleSpace();

            EditorGUI.BeginChangeCheck();
            win.actionMachineObj = (GameObject)EditorGUILayout.ObjectField(win.actionMachineObj, typeof(GameObject), true);
            if (EditorGUI.EndChangeCheck() && win.actionMachineObj != null)
            {
                if (win.actionMachineObj != null)
                {
                    win.UpdateTarget(win.actionMachineObj);
                }
            }

            EditorGUI.BeginChangeCheck();
            win.configAsset = (TextAsset)EditorGUILayout.ObjectField(win.configAsset, typeof(TextAsset), false);
            if (EditorGUI.EndChangeCheck())
            {
                if (win.configAsset != null)
                {
                    win.UpdateConfig(win.configAsset);
                }
            }

            if (GUILayout.Button("创建", GUILayout.Width(80)))
            {
                GUI.FocusControl(null);
                CreateNew();
            }
        }
예제 #4
0
 public void OnGUI(Rect rect)
 {
     GUILayout.BeginVertical(AEStyles.box);
     win.config.firstStateName = EditorGUILayoutEx.DrawObject("起始状态名", win.config.firstStateName);
     GUILayout.EndVertical();
     GUILayout.Space(4);
     win.stateSelectIndex = EditorGUILayoutEx.DrawList(win.config.states, win.stateSelectIndex, ref scrollPos, NewState, ActionEditorUtility.StateDrawer);
 }
예제 #5
0
        public static void RangeConfigDrawer(int index, ref bool selected, RangeConfig obj)
        {
            if (GUILayout.Button($"{index}", selected ? AEStyles.item_head_select : AEStyles.item_head_normal, GUILayout.ExpandHeight(true), GUILayout.Width(15)))
            {
                GUI.FocusControl(null);
                selected = !selected;
            }

            EditorGUILayoutEx.DrawObject(GUIContent.none, obj);
        }
예제 #6
0
        private void PlayMode()
        {
            win.setting.showView = EditorGUILayoutEx.DrawObject("显示", win.setting.showView);
            GUILayout.FlexibleSpace();

            string[] configNames = ActionMachineHelper.loadedConfig.Keys.ToArray();
            if (configNames == null || configNames.Length == 0)
            {
                selectConfigName = string.Empty;

                GUILayout.Label("当前没有已加载的配置文件");
                return;
            }

            bool isInit = true;
            int  index  = 0;

            if (!string.IsNullOrEmpty(selectConfigName))
            {
                index = Array.FindIndex(configNames, t => string.Compare(t, selectConfigName) == 0);
                if (index < 0)
                {
                    index = 0;
                }
            }
            else
            {
                isInit = false;
            }

            GUILayout.Label("已加载配置文件");

            EditorGUI.BeginChangeCheck();
            index = EditorGUILayout.Popup(GUIContent.none, index, configNames, GUILayout.Width(200f));
            if (EditorGUI.EndChangeCheck() || !isInit)
            {
                selectConfigName = configNames[index];

                MachineConfig config = ActionMachineHelper.loadedConfig[selectConfigName];
                win.config = config;
            }

            if (GUILayout.Button("覆盖到", GUILayout.Width(80)))
            {
                GUI.FocusControl(null);
                SaveConfigToSelect(win.config);
            }
            if (GUILayout.Button("另存到", GUILayout.Width(100)))
            {
                GUI.FocusControl(null);
                CopyToNew(win.config);
            }
        }
예제 #7
0
        protected override void OnGUI(Rect rect)
        {
            object obj = win.currentGlobalAction;

            if (null == obj)
            {
                return;
            }

            scrollView = EditorGUILayout.BeginScrollView(scrollView);
            EditorGUILayoutEx.DrawObject(GUIContent.none, obj, obj.GetType());
            EditorGUILayout.EndScrollView();
        }
예제 #8
0
        protected override void OnGUI(Rect rect)
        {
            object obj = win.currentAction;

            if (null == obj)
            {
                return;
            }

            scrollView = EditorGUILayout.BeginScrollView(scrollView);
            EditorGUILayoutEx.DrawObject(GUIContent.none, obj, obj.GetType());
            EditorGUILayout.EndScrollView();

            /*
             * Type type = obj.GetType();
             * FieldInfo[] fieldInfos = type.GetFields();
             * foreach (var fieldInfo in fieldInfos)
             * {
             *  DrawField(obj, fieldInfo);
             * }*/
        }
예제 #9
0
        private void DrawFrameTool()
        {
            GUILayout.BeginVertical();

            GUILayout.Label("帧操作");

            setting.frameCnt = EditorGUILayoutEx.DrawObject("帧数(N)", setting.frameCnt);

            if (GUILayout.Button("添加 N 帧到末尾"))
            {
                GUI.FocusControl(null);
                AddFrameToEnd();
            }

            if (GUILayout.Button("向前插入 N 帧"))
            {
                GUI.FocusControl(null);
                InsertFrameTo(true);
            }
            if (GUILayout.Button("向后插入 N 帧"))
            {
                GUI.FocusControl(null);
                InsertFrameTo(false);
            }

            if (GUILayout.Button("删除选择帧"))
            {
                GUI.FocusControl(null);
                if (win.frameSelectIndex < 0)
                {
                    EditorUtility.DisplayDialog("提示", "请选择一帧", "确定");
                    return;
                }

                if (win.frameSelectIndex >= 0)
                {
                    win.currentFrames.RemoveAt(win.frameSelectIndex);
                }
            }

            if (GUILayout.Button("从上一帧拷贝"))
            {
                CopyPrevFrame();
            }
            GUILayout.BeginHorizontal();
            setting.fromIndex = EditorGUILayoutEx.DrawObject("开始", setting.fromIndex);
            setting.toIndex   = EditorGUILayoutEx.DrawObject("结束", setting.toIndex);
            GUILayout.EndHorizontal();
            if (GUILayout.Button("粘贴范围"))
            {
                PasteRangeFrame();
            }
            if (GUILayout.Button("删除范围"))
            {
                DeleteRangeFrame();
            }

            if (GUILayout.Button("设置使用上一帧范围"))
            {
                for (int i = setting.fromIndex; i <= setting.toIndex; i++)
                {
                    FrameConfig config = win.currentFrames[i];
                    config.bodyRanges.Clear();
                    config.stayBodyRange = true;
                }
            }

            GUILayout.Space(4f);

            GUILayout.Label("操作选项");

            win.setting.enableQuickKey = EditorGUILayoutEx.DrawObject("启用快捷键", win.setting.enableQuickKey);
            setting.copyAttackRanges   = EditorGUILayoutEx.DrawObject("拷贝攻击范围", setting.copyAttackRanges);
            setting.copyBodyRanges     = EditorGUILayoutEx.DrawObject("拷贝身体范围", setting.copyBodyRanges);

            win.setting.frameListViewRectHeight = EditorGUILayoutEx.DrawObject("帧视图高", win.setting.frameListViewRectHeight);
            win.setting.frameWidth = EditorGUILayoutEx.DrawObject("帧宽", win.setting.frameWidth);

            GUILayout.EndVertical();
        }