protected override void OnInspectorClip(IClip c) { base.OnInspectorClip(c); XLogicClip clip = (XLogicClip)c; if (clip) { if (folds == null) { folds = new bool[max]; } LogicClipData data = clip.data as LogicClipData; len = data.effect?.Length ?? 0; if (len > 0) { data.showShape = EditorGUILayout.Toggle("Show Attack Atea", data.showShape); data.attackShape = (AttackShape)EditorGUILayout.EnumPopup("Shape", data.attackShape); if (data.attackShape == AttackShape.Rect) { data.attackArg = EditorGUILayout.FloatField("length: ", data.attackArg); data.attackArg2 = EditorGUILayout.FloatField("width: ", data.attackArg2); } else if (data.attackShape == AttackShape.Ring) { data.attackArg = EditorGUILayout.FloatField("radius: ", data.attackArg); } else if (data.attackShape == AttackShape.Sector) { data.attackArg = EditorGUILayout.FloatField("radius: ", data.attackArg); data.attackArg2 = EditorGUILayout.FloatField("angle: ", data.attackArg2); } for (int i = 0; i < len; i++) { EditorGUILayout.BeginHorizontal(); folds[i] = EditorGUILayout.Foldout(folds[i], (i + 1) + ": " + data.logicType[i]); EditorGUILayout.Space(); if (GUILayout.Button("x", SeqenceStyle.bottomShadow, GUILayout.MaxWidth(20))) { data.effect = SeqenceUtil.Remv(data.effect, i); data.logicType = SeqenceUtil.Remv(data.logicType, i); GUIUtility.ExitGUI(); } EditorGUILayout.EndHorizontal(); if (folds[i]) { data.logicType[i] = (LogicType)EditorGUILayout.EnumPopup(" type", data.logicType[i]); data.effect[i] = EditorGUILayout.FloatField(" effect", data.effect[i]); if (data.logicType[i] == LogicType.MAX) { EditorGUILayout.HelpBox("max is attr", MessageType.Error); } } EditorGUILayout.Space(); } } if (GUILayout.Button(" Add")) { if (data.effect?.Length >= max) { EditorUtility.DisplayDialog("warn", "max attribute is: " + max, "ok"); } else { SeqenceUtil.Add(ref data.logicType, LogicType.HP); SeqenceUtil.Add(ref data.effect, 0.5f); } } EditorGUILayout.Space(); } }
private void AddMark() { MarkConfig config = new MarkConfig(); SeqenceUtil.Add(ref conf.marks, config); }