Example #1
0
        public void SetChildAction(ActionEditor action)
        {
            foreach (var item in _childActor)
            {
                ActorEditor         actor = item.Value;
                List <ActionEditor> list  = null;
                if (action.IsSkillAction)
                {
                    list = actor.SkillActions;
                }
                else
                {
                    list = actor.GeneralActions;
                }

                int index = list.FindIndex(s => s.ActionName.Equals(action.ActionName));
                if (index == -1)
                {
                    ActionEditor add = Clipboard.Paste <ActionEditor>();
                    add.ActState = ActionEditor.ActionState.New;
                    list.Add(add);
                    continue;
                }

                if (list[index].ActState == ActionEditor.ActionState.Override)
                {
                    continue;
                }

                Clipboard.Copy(action, CopyModes.DeepCopy);
                ActionEditor temp = Clipboard.Paste <ActionEditor>();
                temp.ResetActorEditor(actor);
                list[index] = temp;
            }
        }
Example #2
0
        public ActionEditor(ActorEditor actorEditor, GeneralAction modelAction, bool isSkill)
        {
            ModelAction   = modelAction;
            IsSkillAction = isSkill;

            _actorEditor = actorEditor;
        }
Example #3
0
        public static void Init(ActorEditor actorEditor, ActionEditor action, bool isAddAction, Action <ActionEditor> result = null)
        {
            var window = GetWindow <ActionSettingWindow>(true, "行为配置窗口", true);

            window.position = GUIHelper.GetEditorWindowRect().AlignCenter(400, 250);
            window.minSize  = new Vector2(400, 250);
            window.maxSize  = new Vector2(400, 250);

            window._nameStyle                  = SirenixGUIStyles.BoldTitleCentered;
            window._nameStyle.fontSize         = 30;
            window._nameStyle.fontStyle        = FontStyle.Bold;
            window._nameStyle.normal.textColor = Color.white;

            window._isAddAction     = isAddAction;
            window._selfActorEditor = actorEditor;
            window._action          = action;
            window._actionName      = action.ActionName;
            window._clipName        = action.ActionClip;
            window._otherModelName  = action.OtherModelName;
            window._result          = result;
            if (!action.IsFromOther)
            {
                window.LoadSelfAction();
            }
            else
            {
                window.LoadOtherAction(action.OtherModelName);
            }
        }
Example #4
0
        public static GameObject Instantiate(ActorEditor actorEditor)
        {
            GameObject role     = Instantiate(actorEditor.CharacterPath);
            GameObject avatargo = Instantiate(actorEditor.AvatarPath);

            Debug.Log("骨骼:" + actorEditor.CharacterPath + "\n蒙皮:" + actorEditor.AvatarPath);
            if (role != null && avatargo != null)
            {
                role.SetActive(false);
                Transform bip = role.transform.Find(ROOT_BONE);
                if (bip != null)
                {
                    UnityEngine.Object.DestroyImmediate(bip.gameObject, true);
                }

                while (avatargo.transform.childCount > 0)
                {
                    Transform trans = avatargo.transform.GetChild(0);
                    trans.parent = role.transform;
                }
                UnityEngine.Object.DestroyImmediate(avatargo, true);
                role.SetActive(true);
                role.transform.localScale = Vector3.one * actorEditor.ModelScale;
                role.tag = "Player";
            }
            var mc = role.AddComponent <MecanimControl>();

            return(role);
        }
Example #5
0
 void RemoveChildActor(ActorEditor childCfg)
 {
     childCfg.RemoveAllBaseAction();
     if (_childActor.ContainsKey(childCfg.ModelName))
     {
         _childActor.Remove(childCfg.ModelName);
     }
 }
Example #6
0
 protected override void OnDestroy()
 {
     _action           = null;
     _selfActorEditor  = null;
     _otherActorEditor = null;
     _result           = null;
     _actClipList      = null;
 }
Example #7
0
        public void LoadAll()
        {
            ClearAll();

            _config = ActorConfig.Instance;
            CfgManager.ConfigDir = ConfigDir;
            CfgManager.LoadAll();

            //--初始化资源路径
            EUtil.GetAssetsInSubFolderRecursively(_config.CharacterRelativeDir, "*.prefab", ref AllCharacters);
            EUtil.GetAssetsInSubFolderRecursively(_config.AvatarRelativeDir, "*.prefab", ref AllAvatars);
            EUtil.GetAssetsInSubFolderRecursively(_config.EffectRelativeDir, "*.prefab", ref AllEffects);
            foreach (var item in AllCharacters)
            {
                string searchDir = item.Value.Substring(0, item.Value.LastIndexOf(@"/prefab")) + "/clips";
                var    selfClips = new Dictionary <string, string>();
                EUtil.GetAssetsInSubFolderRecursively(searchDir, "*.anim", ref selfClips);
                AllCharacterClips[item.Key] = selfClips;
            }

            //--加载行为配置
            foreach (var model in CfgManager.Model)
            {
                var    modelName = model.Key;
                string path      = string.Format("{0}/{1}.xml", ActionConfigPath, modelName);
                if (!File.Exists(path))
                {
                    var config = new XmlCfg.Skill.ActorConfig()
                    {
                        ModelName = modelName
                    };
                    string savePath = string.Format("{0}/{1}.xml", ActorConfig.Instance.ActionConfigPath, modelName);
                    var    actor    = new ActorEditor(savePath, config);
                    actor.Save(true);
                    Debug.LogFormat("<color=orange>新建Actor - {0}</color>", modelName);
                }
            }

            string[] files = Directory.GetFiles(ActionConfigPath, "*.xml", SearchOption.TopDirectoryOnly);
            foreach (var path in files)
            {
                var actor = new ActorEditor(path);
                AddActor(actor);
            }
            foreach (var item in _modelDict)
            {
                item.Value.InitBaseModelAction();
            }

            var window = ActorEditorWindow.GetWindow <ActorEditorWindow>();

            window.RefreshTree();
            IsInit = true;
            Debug.Log("加载所有动作 完毕!");
        }
Example #8
0
 public void RemoveActor(ActorEditor model)
 {
     if (!ModelGroupDict.ContainsKey(model.GroupType))
     {
         Debug.LogError("未定义组类型 " + model.GroupType);
         return;
     }
     if (!ModelGroupDict[model.GroupType].Remove(model))
     {
         Debug.LogErrorFormat("{0} 无法从分组中移除", model.MenuItemName);
     }
     if (_modelDict.ContainsKey(model.ModelName))
     {
         _modelDict.Remove(model.ModelName);
     }
 }
Example #9
0
 public void AddActor(ActorEditor model)
 {
     if (ModelGroupDict.ContainsKey(model.GroupType))
     {
         ModelGroupDict[model.GroupType].Add(model);
     }
     else
     {
         ModelGroupDict.Add(model.GroupType, new List <ActorEditor>());
         ModelGroupDict[model.GroupType].Add(model);
     }
     if (!_modelDict.ContainsKey(model.ModelName))
     {
         _modelDict.Add(model.ModelName, model);
     }
 }
Example #10
0
 void OnGUI_Func()
 {
     EditorGUILayout.BeginHorizontal();
     GUIHelper.PushGUIPositionOffset(UnityEngine.Vector2.up * -2);
     if (GUILayout.Button("设置受击对象", GUILayout.Width(150)))
     {
         SimplePopupCreator.ShowDialog(new List <string>(CfgManager.Model.Keys), (name) =>
         {
             _targetDisplayName = name;
             ActorEditor actor  = GetActorEditor(name);
         });
     }
     GUIHelper.PopGUIPositionOffset();
     EditorGUILayout.LabelField(_targetDisplayName, EditorStyles.textArea);
     EditorGUILayout.EndHorizontal();
 }
Example #11
0
        void AddChildActor(ActorEditor childCfg)
        {
            var modelDict = childCfg.GetGeneralActionDict();

            foreach (var item in GeneralActions)
            {
                if (modelDict.ContainsKey(item.ActionName))
                {
                    modelDict[item.ActionName].ActState = ActionEditor.ActionState.Override;
                }
                else
                {
                    Clipboard.Copy(item, CopyModes.DeepCopy);
                    ActionEditor action = Clipboard.Paste <ActionEditor>();
                    action.ActState = ActionEditor.ActionState.Inherit;
                    childCfg.GeneralActions.Add(action);
                    action.ResetActorEditor(childCfg);
                }
            }
            var skillDict = childCfg.GetSkillActionDict();

            foreach (var item in SkillActions)
            {
                if (skillDict.ContainsKey(item.ActionName))
                {
                    skillDict[item.ActionName].ActState = ActionEditor.ActionState.Override;
                }
                else
                {
                    Clipboard.Copy(item, CopyModes.DeepCopy);
                    ActionEditor action = Clipboard.Paste <ActionEditor>();
                    action.ActState = ActionEditor.ActionState.Inherit;
                    childCfg.SkillActions.Add(action);
                    action.ResetActorEditor(childCfg);
                }
            }
            if (!_childActor.ContainsKey(childCfg.ModelName))
            {
                _childActor.Add(childCfg.ModelName, childCfg);
            }
        }
Example #12
0
        public void Delete()
        {
            if (EditorUtility.DisplayDialog("删除操作", "确定要删除文件 -> " + ModelName, "确定", "取消"))
            {
                if (File.Exists(_path))
                {
                    File.Delete(_path);
                }

                ActorEditorWindow window = ActorEditorWindow.GetWindow <ActorEditorWindow>();
                OdinMenuItem      item   = window.MenuTree.Selection.FirstOrDefault();
                if (item != null && item.Value != null)
                {
                    ActorEditor model = item.Value as ActorEditor;
                    HomeConfig.Instance.RemoveActor(model);
                    item.Parent.ChildMenuItems.Remove(item);
                    item.MenuTree.Selection.Clear();
                    item.Parent.Select();
                    item.MenuTree.UpdateMenuTree();
                    item.MenuTree.DrawMenuTree();
                }
            }
        }
Example #13
0
 public void ResetActorEditor(ActorEditor actorEditor)
 {
     _actorEditor = actorEditor;
     OnCfgChange();
 }
Example #14
0
 private void LoadOtherAction(string name)
 {
     _otherModelName   = name;
     _otherActorEditor = HomeConfig.Instance.GetActorEditor(name);
     _actClipList      = _otherActorEditor.GetActionClips();
 }
Example #15
0
 private void LoadSelfAction()
 {
     _otherModelName   = string.Empty;
     _otherActorEditor = null;
     _actClipList      = _selfActorEditor.GetActionClips();
 }