Ejemplo n.º 1
0
 static void SkillOpener()
 {
     XInnerEditor.OpenSkill();
 }
Ejemplo n.º 2
0
    public override void OnInspectorGUI()
    {
        if (_labelstyle == null)
        {
            _labelstyle          = new GUIStyle(EditorStyles.boldLabel);
            _labelstyle.fontSize = 13;
        }

        if (_myLabelStyle2 == null)
        {
            _myLabelStyle2           = new GUIStyle(GUI.skin.label);
            _myLabelStyle2.fontStyle = FontStyle.Italic;
        }

        /*****Camera Settings*****/
        GUILayout.Label("Camera Settings :", _labelstyle);
        _hoster.defaultFov = EditorGUILayout.FloatField("Field of View", _hoster.defaultFov);

        /*****Base Settings*****/
        GUILayout.Label("Basic Settings :", _labelstyle);
        EditorGUILayout.LabelField("Data File", _hoster.SkillDataExtra.ScriptFile);
        EditorGUILayout.LabelField("Data Path", _hoster.SkillDataExtra.ScriptPath);
        _hoster.ConfigData.Speed       = EditorGUILayout.FloatField("Speed", _hoster.ConfigData.Speed);
        _hoster.ConfigData.RotateSpeed = EditorGUILayout.FloatField("Rotate Speed", _hoster.ConfigData.RotateSpeed);
        EditorGUILayout.Space();
        _hoster.EditorData.XFrameByFrame = EditorGUILayout.Toggle("Frame By Frame", _hoster.EditorData.XFrameByFrame);
        EditorGUILayout.Space();

        /*****Skill Settings*****/
        GUILayout.Label("Skill Settings :", _labelstyle);
        if (_hoster.SkillData.TypeToken != 2)
        {
            EditorGUI.BeginChangeCheck();
            AnimationClip clip = EditorGUILayout.ObjectField("Clip", _hoster.SkillDataExtra.SkillClip, typeof(AnimationClip), true) as AnimationClip;
            if (EditorGUI.EndChangeCheck() && clip != null)
            {
                _hoster.SkillDataExtra.SkillClip = clip;
                _hoster.ConfigData.SkillClip     = AssetDatabase.GetAssetPath(clip);
                _hoster.ConfigData.SkillClipName = clip.name;
            }
            EditorGUILayout.LabelField("Clip Name", _hoster.ConfigData.SkillClip);
            if (_hoster.SkillDataExtra.SkillClip != null)
            {
                _hoster.SkillDataExtra.SkillClip_Frame = (_hoster.SkillDataExtra.SkillClip.length / frame);
            }
        }

        EditorGUILayout.LabelField("Clip Length", (_hoster.SkillDataExtra.SkillClip_Frame * frame).ToString("F3") + "s" + "\t" + _hoster.SkillDataExtra.SkillClip_Frame.ToString("F1") + "(frame)");
        EditorGUILayout.Space();
        if (_hoster.SkillData.TypeToken == 2)
        {
            _hoster.SkillDataExtra.SkillClip_Frame = 0;
        }
        _hoster.SkillData.NeedTarget      = EditorGUILayout.Toggle("Need Target", _hoster.SkillData.NeedTarget);
        _hoster.SkillData.OnceOnly        = EditorGUILayout.Toggle("Once Only", _hoster.SkillData.OnceOnly);
        _hoster.SkillData.IgnoreCollision = EditorGUILayout.Toggle("Disable Collision", _hoster.SkillData.IgnoreCollision);

        EditorGUILayout.Space();
        _hoster.SkillData.Time      = EditorGUILayout.FloatField("Skill Time", _hoster.SkillData.Time);
        _hoster.SkillData.CoolDown  = EditorGUILayout.FloatField("Cool Down", _hoster.SkillData.CoolDown);
        _hoster.SkillData.TypeToken = EditorGUILayout.Popup("Skill Type", _hoster.SkillData.TypeToken, XSkillData.Skills);
        if (_hoster.SkillData.TypeToken != 2 && _hoster.SkillDataExtra.SkillClip == null)
        {
            return;
        }
        if (_hoster.SkillData.TypeToken == 0)
        {
            _hoster.SkillData.SkillPosition = (int)EditorGUILayout.Popup("Position", _hoster.SkillData.SkillPosition, XSkillData.JA_Command);
            if (!_xOptions.Contains("Combos"))
            {
                _xOptions.Insert(2, "Combos");
            }
        }
        else if (_hoster.SkillData.TypeToken != 2)
        {
            if (_xOptions.Contains("Combos"))
            {
                _xOptions.Remove("Combos");
            }
        }
        EditorGUILayout.Space();

        _hoster.SkillData.Cast_Range_Rect = EditorGUILayout.Toggle("Cast Range Rect", _hoster.SkillData.Cast_Range_Rect);
        if (_hoster.SkillData.Cast_Range_Rect)
        {
            _hoster.SkillData.Cast_Scope       = EditorGUILayout.FloatField("Cast Range Width", _hoster.SkillData.Cast_Scope);
            _hoster.SkillData.Cast_Range_Upper = EditorGUILayout.FloatField("Cast Range Depth", _hoster.SkillData.Cast_Range_Upper);
            _hoster.SkillData.Cast_Offset_X    = EditorGUILayout.FloatField("Cast Offset X", _hoster.SkillData.Cast_Offset_X);
            _hoster.SkillData.Cast_Offset_Z    = EditorGUILayout.FloatField("Cast Offset Z", _hoster.SkillData.Cast_Offset_Z);
            EditorGUILayout.LabelField("Positive means Clock-wise.", _myLabelStyle2);
            _hoster.SkillData.Cast_Scope_Shift = EditorGUILayout.FloatField("Cast Rect Shift", _hoster.SkillData.Cast_Scope_Shift);
        }
        else
        {
            _hoster.SkillData.Cast_Range_Lower = EditorGUILayout.FloatField("Cast Range (↓)", _hoster.SkillData.Cast_Range_Lower);
            _hoster.SkillData.Cast_Range_Upper = EditorGUILayout.FloatField("Cast Range (↑)", _hoster.SkillData.Cast_Range_Upper);
            _hoster.SkillData.Cast_Scope       = EditorGUILayout.FloatField("Cast Scope", _hoster.SkillData.Cast_Scope);
            _hoster.SkillData.Cast_Offset_X    = EditorGUILayout.FloatField("Cast Offset X", _hoster.SkillData.Cast_Offset_X);
            _hoster.SkillData.Cast_Offset_Z    = EditorGUILayout.FloatField("Cast Offset Z", _hoster.SkillData.Cast_Offset_Z);
            EditorGUILayout.LabelField("Positive means Clock-wise.", _myLabelStyle2);
            _hoster.SkillData.Cast_Scope_Shift = EditorGUILayout.FloatField("Cast Scope Shift", _hoster.SkillData.Cast_Scope_Shift);
        }

        EditorGUILayout.Space();

        EditorGUILayout.BeginHorizontal();
        _hoster.SkillData.CameraTurnBack = EditorGUILayout.FloatField("Camera Tail Speed Ratio", _hoster.SkillData.CameraTurnBack);
        EditorGUILayout.LabelField("(multiplied by)", GUILayout.MaxWidth(90));
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.Space();
        bool MultipleAttackSupported = _hoster.SkillData.MultipleAttackSupported;

        _hoster.SkillData.MultipleAttackSupported = EditorGUILayout.Toggle("Multiple Direction", _hoster.SkillData.MultipleAttackSupported);
        if (!MultipleAttackSupported && _hoster.SkillData.MultipleAttackSupported)
        {
            _hoster.SkillData.MultipleAttackSupported = EditorUtility.DisplayDialog("Confirm your selection.",
                                                                                    "Multiple direction needs 8 attacking-animations support!",
                                                                                    "Confirmed", "Cancel");
        }
        if (_hoster.SkillData.MultipleAttackSupported)
        {
            _hoster.SkillData.BackTowardsDecline = EditorGUILayout.Slider("Backwards Decline", _hoster.SkillData.BackTowardsDecline, 0, 1);
        }
        EditorGUILayout.Space();
        EditorGUILayout.Space();

        /*****Timer*****/
        GUILayout.Label("Timer :", _labelstyle);
        EditorGUILayout.BeginHorizontal();
        if (_hoster.SkillData.TypeToken == 2)
        {
            _option = EditorGUILayout.Popup("Create", _option, new string[] { "Combined", "Fx", "Audio", "Camera Shake" });
        }
        else
        {
            _option = EditorGUILayout.Popup("Create", _option, _xOptions.ToArray());
        }

        if (GUILayout.Button(_content_add, GUILayout.MaxWidth(30)))
        {
            if (_hoster.SkillData.TypeToken == 2)
            {
                switch (_option)
                {
                case 1: _fx.Add(); break;
                }
            }
            else
            {
                switch (_option)
                {
                case 0: _result.Add(); break;

                case 1: _hit.Add(); break;

                case 2: _manip.Add(); break;

                case 3: _fx.Add(); break;

                case 4: _warning.Add(); break;

                case 5: _mob.Add(); break;
                }
            }
        }
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Space();
        if (_hoster.SkillData.TypeToken == 2)
        {
            _hit.OnGUI();
            EditorGUILayout.Space();
            _fx.OnGUI();
            EditorGUILayout.Space();
        }
        else
        {
            foreach (XPanel panel in _panels)
            {
                panel.OnGUI();
                EditorGUILayout.Space();
            }
        }

        EditorGUILayout.Space();
        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button("Apply", GUILayout.MaxWidth(150)))
        {
            SerializeData(GetDataFileWithPath());
        }
        EditorGUILayout.Space();
        if (GUILayout.Button("Revert", GUILayout.MaxWidth(150)))
        {
            DeserializeData(GetDataFileWithPath());
        }
        if (!string.IsNullOrEmpty(last_file))
        {
            EditorGUILayout.Space();
            if (GUILayout.Button("Open Last", GUILayout.MaxWidth(150)))
            {
                next_file = last_file;
            }
        }
        GUILayout.FlexibleSpace();
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.Space();

        XDataBuilder.singleton.Update(_hoster);
        /*Repaint();*/

        if (!string.IsNullOrEmpty(next_file))
        {
            if (EditorUtility.DisplayDialog("Open new skill", "Do you want to save current skill?", "Do", "Do Not"))
            {
                SerializeData(GetDataFileWithPath());
            }

            last_file = GetDataFileWithPath();
            XInnerEditor.OpenSkill(next_file);
            next_file = null;
        }
    }