public static ClipData CreateClipData(AssetType type) { ClipData clip = null; switch (type) { case AssetType.Animation: clip = new AnimClipData(); break; case AssetType.BoneFx: clip = new BoneFxClipData(); break; case AssetType.PostProcess: clip = new PostprocessData(); break; case AssetType.SceneFx: clip = new SceneFxClipData(); break; case AssetType.LogicValue: clip = new LogicClipData(); break; default: Debug.Log("unknown clip " + type); break; } return(clip); }
protected override void OnAddClip(float t) { LogicClipData clipData = new LogicClipData(); clipData.start = t; clipData.duration = 16; var clip = track.BuildClip(clipData); track.AddClip(clip, clipData); }
protected override void OnEnter() { base.OnEnter(); var bindTrack = track.root as XBindTrack; Data = data as LogicClipData; if (Data.showShape && bindTrack?.bindObj) { bindObj = bindTrack.bindObj; if (Data.showShape) { DrawAttackArea(); } } }
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); if (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", TimelineStyles.bottomShadow, GUILayout.MaxWidth(20))) { data.effect = TimelineUtil.Remv(data.effect, i); data.logicType = TimelineUtil.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 { TimelineUtil.Add(ref data.logicType, LogicType.HP); TimelineUtil.Add(ref data.effect, 0.5f); } } EditorGUILayout.Space(); } }