protected override void OnInnerGUI() { if (_myLabelStyle2 == null) { _myLabelStyle2 = new GUIStyle(GUI.skin.label); _myLabelStyle2.fontStyle = FontStyle.Italic; } if (Hoster.SkillData.Result == null) { return; } for (int i = 0; i < Hoster.SkillData.Result.Count; i++) { Hoster.SkillData.Result[i].Index = i; float result_at = (Hoster.SkillData.Result[i].At / XSkillInspector.frame); EditorGUILayout.BeginHorizontal(); Hoster.SkillData.Result[i].LongAttackEffect = EditorGUILayout.Toggle("Long Range Attack", Hoster.SkillData.Result[i].LongAttackEffect); if (GUILayout.Button(_content_remove, GUILayout.MaxWidth(30), GUILayout.MinWidth(30))) { Hoster.SkillData.Result.RemoveAt(i); Hoster.ConfigData.Result.RemoveAt(i); EditorGUILayout.EndHorizontal(); continue; } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); if (Hoster.SkillData.Result[i].LongAttackEffect && Hoster.SkillData.Result[i].LongAttackData == null) { Hoster.SkillData.Result[i].LongAttackData = new XLongAttackResultData(); } EditorGUILayout.LabelField("Affect basic configuration.", _myLabelStyle2); if (Hoster.SkillData.Result[i].LongAttackEffect) { Hoster.SkillData.Result[i].LongAttackData.Type = (XResultBulletType)EditorGUILayout.EnumPopup("Type", Hoster.SkillData.Result[i].LongAttackData.Type); } EditorGUILayout.BeginHorizontal(); result_at = EditorGUILayout.FloatField(Hoster.SkillData.Result[i].LongAttackEffect ? "Fire At" : "Triggered At", result_at); GUILayout.Label("(frame)"); EditorGUILayout.EndHorizontal(); Hoster.ConfigData.Result[i].Result_Ratio = result_at / Hoster.SkillDataExtra.SkillClip_Frame; if (Hoster.ConfigData.Result[i].Result_Ratio > 1) { Hoster.ConfigData.Result[i].Result_Ratio = 1; } Hoster.ConfigData.Result[i].Result_Ratio = EditorGUILayout.Slider("Ratio", Hoster.ConfigData.Result[i].Result_Ratio, 0, 1); Hoster.SkillData.Result[i].At = (Hoster.ConfigData.Result[i].Result_Ratio * Hoster.SkillDataExtra.SkillClip_Frame) * XSkillInspector.frame; if (Hoster.SkillData.Result[i].LongAttackEffect && (Hoster.SkillData.Result[i].LongAttackData.Type != XResultBulletType.Satellite && Hoster.SkillData.Result[i].LongAttackData.Type != XResultBulletType.Ring)) { _xv.FirePos = new Vector3(Hoster.SkillData.Result[i].LongAttackData.At_X, Hoster.SkillData.Result[i].LongAttackData.At_Y, Hoster.SkillData.Result[i].LongAttackData.At_Z); PropertyField[] field = new PropertyField[1]; field[0] = new PropertyField(_xv, typeof(XVector3).GetProperty("FirePos"), SerializedPropertyType.Vector3); ExposeProperties.Expose(field); Hoster.SkillData.Result[i].LongAttackData.At_X = _xv.FirePos.x; Hoster.SkillData.Result[i].LongAttackData.At_Y = _xv.FirePos.y; Hoster.SkillData.Result[i].LongAttackData.At_Z = _xv.FirePos.z; } EditorGUILayout.Space(); EditorGUILayout.LabelField("Affect logical configuration.", _myLabelStyle2); Hoster.SkillData.Result[i].Loop = EditorGUILayout.Toggle("Loop", Hoster.SkillData.Result[i].Loop); if (Hoster.SkillData.Result[i].Loop) { float loop = (Hoster.SkillData.Result[i].Cycle / XSkillInspector.frame); EditorGUILayout.BeginHorizontal(); loop = EditorGUILayout.FloatField("Repeated Cycle", loop); GUILayout.Label("(frame)"); GUILayout.Label("", GUILayout.MaxWidth(30)); EditorGUILayout.EndHorizontal(); Hoster.SkillData.Result[i].Cycle = loop * XSkillInspector.frame; int count = EditorGUILayout.IntField("Repeated Count", Hoster.SkillData.Result[i].Loop_Count); if (count < 100 && count >= 0) { Hoster.SkillData.Result[i].Loop_Count = count; } } if (Hoster.SkillData.Result[i].Loop || Hoster.SkillData.Result[i].Group) { EditorGUILayout.Space(); } Hoster.SkillData.Result[i].Group = EditorGUILayout.Toggle("Group", Hoster.SkillData.Result[i].Group); if (Hoster.SkillData.Result[i].Group) { Hoster.SkillData.Result[i].Clockwise = EditorGUILayout.Toggle("ClockWise", Hoster.SkillData.Result[i].Clockwise); Hoster.SkillData.Result[i].Deviation_Angle = EditorGUILayout.IntField("Deviation Angle", Hoster.SkillData.Result[i].Deviation_Angle); Hoster.SkillData.Result[i].Angle_Step = EditorGUILayout.IntField("Angle Step", Hoster.SkillData.Result[i].Angle_Step); float step = (Hoster.SkillData.Result[i].Time_Step / XSkillInspector.frame); EditorGUILayout.BeginHorizontal(); step = EditorGUILayout.FloatField("Time Step", step); GUILayout.Label("(frame)"); GUILayout.Label("", GUILayout.MaxWidth(30)); EditorGUILayout.EndHorizontal(); Hoster.SkillData.Result[i].Time_Step = step * XSkillInspector.frame; int count = EditorGUILayout.IntField("Count", Hoster.SkillData.Result[i].Group_Count); if (count < 100 && count >= 0) { Hoster.SkillData.Result[i].Group_Count = count; } } EditorGUILayout.Space(); EditorGUILayout.LabelField("Affect area configuration.", _myLabelStyle2); if (Hoster.SkillData.NeedTarget) { Hoster.SkillData.Result[i].Attack_Only_Target = EditorGUILayout.Toggle("Attack Only Target", Hoster.SkillData.Result[i].Attack_Only_Target); } else { Hoster.SkillData.Result[i].Attack_Only_Target = false; } if (Hoster.SkillData.Result[i].LongAttackEffect && !Hoster.SkillData.Result[i].Attack_Only_Target) { Hoster.SkillData.Result[i].Attack_All = EditorGUILayout.Toggle("Attack All", Hoster.SkillData.Result[i].Attack_All); } else { Hoster.SkillData.Result[i].Attack_All = false; } if (Hoster.SkillData.Result[i].Attack_All) { Hoster.SkillData.Result[i].Mobs_Inclusived = EditorGUILayout.Toggle("Include Mobs", Hoster.SkillData.Result[i].Mobs_Inclusived); } EditorGUILayout.Space(); if (!Hoster.SkillData.Result[i].LongAttackEffect || Hoster.SkillData.Result[i].LongAttackData.TriggerAtEnd) { Hoster.SkillData.Result[i].Sector_Type = EditorGUILayout.Toggle("Sector Damage", Hoster.SkillData.Result[i].Sector_Type); if (Hoster.SkillData.Result[i].Sector_Type) { Hoster.SkillData.Result[i].Low_Range = EditorGUILayout.FloatField("Range (↓)", Hoster.SkillData.Result[i].Low_Range); Hoster.SkillData.Result[i].Range = EditorGUILayout.FloatField("Range (↑)", Hoster.SkillData.Result[i].Range); Hoster.SkillData.Result[i].Scope = EditorGUILayout.FloatField("Scope", Hoster.SkillData.Result[i].Scope); } else { Hoster.SkillData.Result[i].Rect_HalfEffect = EditorGUILayout.Toggle("Half Effect", Hoster.SkillData.Result[i].Rect_HalfEffect); Hoster.SkillData.Result[i].None_Sector_Angle_Shift = EditorGUILayout.IntField("Angle Shift", Hoster.SkillData.Result[i].None_Sector_Angle_Shift); Hoster.SkillData.Result[i].Range = EditorGUILayout.FloatField("Depth", Hoster.SkillData.Result[i].Range); Hoster.SkillData.Result[i].Scope = EditorGUILayout.FloatField("Width", Hoster.SkillData.Result[i].Scope); } if (Hoster.SkillData.Result[i].Low_Range > Hoster.SkillData.Result[i].Range) { Hoster.SkillData.Result[i].Low_Range = Hoster.SkillData.Result[i].Range; } Hoster.SkillData.Result[i].Offset_X = EditorGUILayout.FloatField("OffsetX", Hoster.SkillData.Result[i].Offset_X); Hoster.SkillData.Result[i].Offset_Z = EditorGUILayout.FloatField("OffsetZ", Hoster.SkillData.Result[i].Offset_Z); EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("view")) { Hoster.nHotID = i; } EditorGUILayout.EndHorizontal(); } else { EditorGUILayout.Space(); } if (Hoster.SkillData.Result[i].LongAttackEffect) { EditorGUILayout.LabelField("Collision setting", _myLabelStyle2); Hoster.SkillData.Result[i].LongAttackData.StaticCollider = EditorGUILayout.Toggle("Static Enabled", Hoster.SkillData.Result[i].LongAttackData.StaticCollider); Hoster.SkillData.Result[i].LongAttackData.DynamicCollider = EditorGUILayout.Toggle("Dynamic Enabled", Hoster.SkillData.Result[i].LongAttackData.DynamicCollider); EditorGUILayout.Space(); EditorGUILayout.LabelField("Bullet's setting", _myLabelStyle2); if (Hoster.SkillData.Result[i].LongAttackData.Type != XResultBulletType.Satellite && Hoster.SkillData.Result[i].LongAttackData.Type != XResultBulletType.Ring) { Hoster.SkillData.Result[i].LongAttackData.IsPingPong = EditorGUILayout.Toggle("Is PingPong", Hoster.SkillData.Result[i].LongAttackData.IsPingPong); } if (Hoster.SkillData.Result[i].LongAttackData.IsPingPong) { Hoster.SkillData.Result[i].LongAttackData.AutoRefine_at_Half = EditorGUILayout.Toggle("Auto Refine at Half", Hoster.SkillData.Result[i].LongAttackData.AutoRefine_at_Half); } else { Hoster.SkillData.Result[i].LongAttackData.AutoRefine_at_Half = false; } Hoster.SkillData.Result[i].LongAttackData.WithCollision = EditorGUILayout.Toggle("With Collision", Hoster.SkillData.Result[i].LongAttackData.WithCollision); if (Hoster.SkillData.Result[i].LongAttackData.WithCollision) { Hoster.SkillData.Result[i].LongAttackData.TriggerOnce = EditorGUILayout.Toggle("Once", Hoster.SkillData.Result[i].LongAttackData.TriggerOnce); if (!Hoster.SkillData.Result[i].LongAttackData.TriggerOnce) { EditorGUILayout.BeginHorizontal(); Hoster.SkillData.Result[i].LongAttackData.Refine_Cycle = EditorGUILayout.FloatField("Refine Cycle", Hoster.SkillData.Result[i].LongAttackData.Refine_Cycle); GUILayout.Label("(s) zero means never."); GUILayout.Label("", GUILayout.MaxWidth(30)); EditorGUILayout.EndHorizontal(); if (Hoster.SkillData.Result[i].LongAttackData.Refine_Cycle > 0) { Hoster.SkillData.Result[i].LongAttackData.Refine_Count = EditorGUILayout.IntField("Refine Count", Hoster.SkillData.Result[i].LongAttackData.Refine_Count); if (Hoster.SkillData.Result[i].LongAttackData.Refine_Count < 1) { Hoster.SkillData.Result[i].LongAttackData.Refine_Count = 1; } } } } if (Hoster.SkillData.Result[i].LongAttackData.Type != XResultBulletType.Ring) { EditorGUILayout.Space(); EditorGUILayout.LabelField("Manipulation setting", _myLabelStyle2); Hoster.SkillData.Result[i].LongAttackData.Manipulation = EditorGUILayout.Toggle("Has Manipulation", Hoster.SkillData.Result[i].LongAttackData.Manipulation); if (Hoster.SkillData.Result[i].LongAttackData.Manipulation) { Hoster.SkillData.Result[i].LongAttackData.ManipulationRadius = EditorGUILayout.FloatField("Radius", Hoster.SkillData.Result[i].LongAttackData.ManipulationRadius); Hoster.SkillData.Result[i].LongAttackData.ManipulationForce = EditorGUILayout.FloatField("Force", Hoster.SkillData.Result[i].LongAttackData.ManipulationForce); } else { Hoster.SkillData.Result[i].LongAttackData.ManipulationRadius = 0; Hoster.SkillData.Result[i].LongAttackData.ManipulationForce = 0; } } EditorGUILayout.Space(); if (Hoster.SkillData.NeedTarget && Hoster.SkillData.Result[i].LongAttackData.Type != XResultBulletType.Satellite && Hoster.SkillData.Result[i].LongAttackData.Type != XResultBulletType.Ring) { Hoster.SkillData.Result[i].LongAttackData.Follow = EditorGUILayout.Toggle("Follow", Hoster.SkillData.Result[i].LongAttackData.Follow); } EditorGUILayout.BeginHorizontal(); Hoster.SkillData.Result[i].LongAttackData.Runningtime = EditorGUILayout.FloatField("Running Time", Hoster.SkillData.Result[i].LongAttackData.Runningtime); GUILayout.Label("(s)"); GUILayout.Label("", GUILayout.MaxWidth(30)); EditorGUILayout.EndHorizontal(); if (Hoster.SkillData.Result[i].LongAttackData.Type != XResultBulletType.Satellite && Hoster.SkillData.Result[i].LongAttackData.Type != XResultBulletType.Ring) { EditorGUILayout.BeginHorizontal(); Hoster.SkillData.Result[i].LongAttackData.Stickytime = EditorGUILayout.FloatField("Sticky Time", Hoster.SkillData.Result[i].LongAttackData.Stickytime); GUILayout.Label("(s)"); GUILayout.Label("", GUILayout.MaxWidth(30)); EditorGUILayout.EndHorizontal(); if (!Hoster.SkillData.Result[i].Warning) { Hoster.SkillData.Result[i].LongAttackData.Velocity = EditorGUILayout.FloatField("Velocity", Hoster.SkillData.Result[i].LongAttackData.Velocity); } } else { if (Hoster.SkillData.Result[i].LongAttackData.Type == XResultBulletType.Satellite) { if (!Hoster.SkillData.Result[i].Warning) { EditorGUILayout.BeginHorizontal(); Hoster.SkillData.Result[i].LongAttackData.Palstance = EditorGUILayout.FloatField("Palstance", Hoster.SkillData.Result[i].LongAttackData.Palstance); GUILayout.Label("(degree/s)"); GUILayout.Label("", GUILayout.MaxWidth(30)); EditorGUILayout.EndHorizontal(); } EditorGUILayout.BeginHorizontal(); Hoster.SkillData.Result[i].LongAttackData.RingRadius = EditorGUILayout.FloatField("Ring Radius", Hoster.SkillData.Result[i].LongAttackData.RingRadius); GUILayout.Label("(m)"); GUILayout.Label("", GUILayout.MaxWidth(30)); EditorGUILayout.EndHorizontal(); } else if (Hoster.SkillData.Result[i].LongAttackData.Type == XResultBulletType.Ring) { if (!Hoster.SkillData.Result[i].Warning) { EditorGUILayout.BeginHorizontal(); Hoster.SkillData.Result[i].LongAttackData.RingVelocity = EditorGUILayout.FloatField("Ring Velocity", Hoster.SkillData.Result[i].LongAttackData.RingVelocity); GUILayout.Label("(m/s)"); GUILayout.Label("", GUILayout.MaxWidth(30)); EditorGUILayout.EndHorizontal(); } EditorGUILayout.BeginHorizontal(); Hoster.SkillData.Result[i].LongAttackData.RingRadius = EditorGUILayout.FloatField("Ring Width", Hoster.SkillData.Result[i].LongAttackData.RingRadius); GUILayout.Label("(m)"); GUILayout.Label("", GUILayout.MaxWidth(30)); EditorGUILayout.EndHorizontal(); Hoster.SkillData.Result[i].LongAttackData.RingFull = EditorGUILayout.Toggle("Is Ring Full", Hoster.SkillData.Result[i].LongAttackData.RingFull); } } if (Hoster.SkillData.Result[i].LongAttackData.WithCollision && Hoster.SkillData.Result[i].LongAttackData.Type != XResultBulletType.Ring) { EditorGUILayout.BeginHorizontal(); Hoster.SkillData.Result[i].LongAttackData.Radius = EditorGUILayout.FloatField("Radius", Hoster.SkillData.Result[i].LongAttackData.Radius); GUILayout.Label("(m)"); GUILayout.Label("", GUILayout.MaxWidth(30)); EditorGUILayout.EndHorizontal(); } if (Hoster.SkillData.Result[i].LongAttackData.Type != XResultBulletType.Ring) { Hoster.SkillData.Result[i].LongAttackData.FireAngle = EditorGUILayout.IntField("Angle (clockwise)", Hoster.SkillData.Result[i].LongAttackData.FireAngle); } EditorGUILayout.Space(); if (Hoster.SkillData.Result[i].LongAttackData.Type != XResultBulletType.Ring) { Hoster.SkillData.Result[i].LongAttackData.FlyWithTerrain = EditorGUILayout.Toggle("Fly with Terrain", Hoster.SkillData.Result[i].LongAttackData.FlyWithTerrain); } else { Hoster.SkillData.Result[i].LongAttackData.FlyWithTerrain = false; } if (Hoster.SkillData.NeedTarget && (Hoster.SkillData.Result[i].LongAttackData.Type != XResultBulletType.Satellite && Hoster.SkillData.Result[i].LongAttackData.Type != XResultBulletType.Ring)) { Hoster.SkillData.Result[i].LongAttackData.AimTargetCenter = EditorGUILayout.Toggle("Aim Target Center", Hoster.SkillData.Result[i].LongAttackData.AimTargetCenter); } EditorGUILayout.Space(); if (Hoster.SkillData.Result[i].LongAttackData.Type != XResultBulletType.Ring) { if (!Hoster.SkillData.Result[i].LongAttackData.IsPingPong) { Hoster.SkillData.Result[i].LongAttackData.TriggerAtEnd = EditorGUILayout.Toggle("Trigger At End", Hoster.SkillData.Result[i].LongAttackData.TriggerAtEnd); } else { Hoster.SkillData.Result[i].LongAttackData.TriggerAtEnd = false; } } else { Hoster.SkillData.Result[i].LongAttackData.TriggerAtEnd = false; } if (Hoster.SkillData.Result[i].LongAttackData.TriggerAtEnd) { float cycle = (Hoster.SkillData.Result[i].LongAttackData.TriggerAtEnd_Cycle / XSkillInspector.frame); EditorGUILayout.BeginHorizontal(); cycle = EditorGUILayout.FloatField("Trigger End Cycle", cycle); GUILayout.Label("(frame)"); GUILayout.Label("", GUILayout.MaxWidth(30)); EditorGUILayout.EndHorizontal(); Hoster.SkillData.Result[i].LongAttackData.TriggerAtEnd_Cycle = cycle * XSkillInspector.frame; Hoster.SkillData.Result[i].LongAttackData.TriggerAtEnd_Count = EditorGUILayout.IntField("Trigger End Repeated Count", Hoster.SkillData.Result[i].LongAttackData.TriggerAtEnd_Count); } EditorGUILayout.Space(); EditorGUILayout.LabelField("Bullet presentation configuration.", _myLabelStyle2); GameObject o = EditorGUILayout.ObjectField("Prefab", Hoster.SkillDataExtra.ResultEx[i].BulletPrefab, typeof(GameObject), true) as GameObject; { if (XInnerEditor.CheckPrefab(o) && AssetDatabase.GetAssetPath(o).Contains("Prefabs/Bullets/")) { Hoster.SkillDataExtra.ResultEx[i].BulletPrefab = o; string path = AssetDatabase.GetAssetPath(o).Remove(0, 17); Hoster.SkillData.Result[i].LongAttackData.Prefab = path.Remove(path.LastIndexOf('.')); } else { Hoster.SkillDataExtra.ResultEx[i].BulletPrefab = null; Hoster.SkillData.Result[i].LongAttackData.Prefab = null; } } EditorGUILayout.Space(); if (!Hoster.SkillData.Result[i].LongAttackData.FlyWithTerrain && Hoster.SkillData.Result[i].LongAttackData.Type != XResultBulletType.Ring) { GameObject hitfx = EditorGUILayout.ObjectField("Hit Ground Fx", Hoster.SkillDataExtra.ResultEx[i].BulletHitGroundFx, typeof(GameObject), true) as GameObject; { if (hitfx == null || !AssetDatabase.GetAssetPath(hitfx).Contains("Resources/Effects/")) { Hoster.SkillData.Result[i].LongAttackData.HitGround_Fx = null; Hoster.SkillDataExtra.ResultEx[i].BulletHitGroundFx = null; } else { Hoster.SkillDataExtra.ResultEx[i].BulletHitGroundFx = hitfx; string path = AssetDatabase.GetAssetPath(hitfx).Remove(0, 17); Hoster.SkillData.Result[i].LongAttackData.HitGround_Fx = path.Remove(path.LastIndexOf('.')); } } if (Hoster.SkillData.Result[i].LongAttackData.HitGround_Fx != null) { Hoster.SkillData.Result[i].LongAttackData.HitGroundFx_LifeTime = EditorGUILayout.FloatField("Hit Ground Fx Duration", Hoster.SkillData.Result[i].LongAttackData.HitGroundFx_LifeTime); } } GameObject fx = EditorGUILayout.ObjectField("End Fx", Hoster.SkillDataExtra.ResultEx[i].BulletEndFx, typeof(GameObject), true) as GameObject; if (fx == null || !AssetDatabase.GetAssetPath(fx).Contains("Resources/Effects/")) { Hoster.SkillData.Result[i].LongAttackData.End_Fx = null; Hoster.SkillDataExtra.ResultEx[i].BulletEndFx = null; } else { Hoster.SkillDataExtra.ResultEx[i].BulletEndFx = fx; string path = AssetDatabase.GetAssetPath(fx); path = path.Remove(0, path.IndexOf("Effects/")); path = path.Remove(path.LastIndexOf('.')); Hoster.SkillData.Result[i].LongAttackData.End_Fx = path; } if (Hoster.SkillData.Result[i].LongAttackData.End_Fx != null) { Hoster.SkillData.Result[i].LongAttackData.EndFx_LifeTime = EditorGUILayout.FloatField("End Fx Duration", Hoster.SkillData.Result[i].LongAttackData.EndFx_LifeTime); Hoster.SkillData.Result[i].LongAttackData.EndFx_Ground = EditorGUILayout.Toggle("End Fx Ground", Hoster.SkillData.Result[i].LongAttackData.EndFx_Ground); } EditorGUILayout.Space(); Hoster.SkillData.Result[i].LongAttackData.Audio = EditorGUILayout.TextField("Audio", Hoster.SkillData.Result[i].LongAttackData.Audio); if (!string.IsNullOrEmpty(Hoster.SkillData.Result[i].LongAttackData.Audio)) { Hoster.SkillData.Result[i].LongAttackData.Audio_Channel = AudioChannel.Motion; EditorGUILayout.EnumPopup("Channel", Hoster.SkillData.Result[i].LongAttackData.Audio_Channel); } Hoster.SkillData.Result[i].LongAttackData.End_Audio = EditorGUILayout.TextField("End Audio", Hoster.SkillData.Result[i].LongAttackData.End_Audio); if (!string.IsNullOrEmpty(Hoster.SkillData.Result[i].LongAttackData.End_Audio)) { Hoster.SkillData.Result[i].LongAttackData.End_Audio_Channel = AudioChannel.Motion; EditorGUILayout.EnumPopup("Channel", Hoster.SkillData.Result[i].LongAttackData.End_Audio_Channel); } EditorGUILayout.Space(); } EditorGUILayout.LabelField("Other settings.", _myLabelStyle2); Hoster.SkillData.Result[i].Warning = EditorGUILayout.Toggle("Has Warning", Hoster.SkillData.Result[i].Warning); if (Hoster.SkillData.Result[i].Warning) { Hoster.SkillData.Result[i].Warning_Idx = EditorGUILayout.IntField("Waring Idx", Hoster.SkillData.Result[i].Warning_Idx); } if (Hoster.SkillData.Result[i].LongAttackEffect) { Hoster.SkillData.Result[i].Affect_Direction = XResultAffectDirection.AttackDir; } else { Hoster.SkillData.Result[i].Affect_Direction = (XResultAffectDirection)EditorGUILayout.EnumPopup("Result Affect Direction", Hoster.SkillData.Result[i].Affect_Direction); } if (i != Hoster.SkillData.Result.Count - 1) { GUILayout.Box("", line); EditorGUILayout.Space(); } } }
static void SkillOpener() { XInnerEditor.OpenSkill(); }
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; } }