예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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();
                }
            }
        }
예제 #4
0
        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();
            }
        }