public AnimationEventController.UnityKeyframeEvent SwapKeyFrameEvent(int targetIndex, AnimationEventController.UnityKeyframeEvent b)
        {
            AnimationEventController.UnityKeyframeEvent target = GetKeyframeEventInCurrentEventAnimation(targetIndex);
            AnimationEventController.UnityKeyframeEvent temp   = new AnimationEventController.UnityKeyframeEvent(b.ID, b.eventKeyframe, b.onKeyframe);

            AnimationEventController.UnityKeyframeEvent result = null;
            if (target == null)
            {
                AddKeyframeEvent(current.eventAnimation, targetIndex);

                RemoveKeyframeEvent(current.eventAnimation, b.eventKeyframe);

                result = GetKeyframeEventInCurrentEventAnimation(targetIndex);

                result.onKeyframe = temp.onKeyframe;
            }
            else
            {
                b.onKeyframe      = target.onKeyframe;
                target.onKeyframe = temp.onKeyframe;

                result = target;
            }

            return(result);
        }
Esempio n. 2
0
        public void Initialize(AnimationEventController data)
        {
            animationEventController = data;

            selectedKeyframeEvent = null;

            InitializeSubView();
        }
        private void AttachUnityAnimationEventToClip(AnimationEventController.UnityKeyframeEvent keyframeEvent, AnimationClip clip)
        {
            //TODO : Undo.RecordObject(clip, "Add Event in clip");

            float interval = 1.0f / clip.frameRate;

            AnimationEvent newEvent = new AnimationEvent();

            newEvent.functionName    = EVENT_FUNCTION_NAME;
            newEvent.stringParameter = keyframeEvent.ID;
            newEvent.time            = keyframeEvent.eventKeyframe * interval;

            int length = clip.events.Length + 1;

            AnimationEvent[] events = new AnimationEvent[length];
            for (int i = 0; i < clip.events.Length; i++)
            {
                events[i] = clip.events[i];
            }

            events[length - 1] = newEvent;

            AnimationUtility.SetAnimationEvents(clip, events);
        }
        public bool AddKeyframeEvent(AnimationEventController.AdvancedAnimationEvent selected, int frame)
        {
            AnimationClip clip = FindClipInAnimator(selected.clipName);

            if (!clip)
            {
                return(false);
            }

            if (!IsUnityAnimationEventInClip(clip, frame))
            {
                if (!IsEventFrameInAdvancedAnimationEvents(selected, frame))
                {
                    string eventName = selected.clipName + frame;
                    AnimationEventController.UnityKeyframeEvent newKeyframeEvent = new AnimationEventController.UnityKeyframeEvent(eventName, frame, null);
                    selected.keyframeEvents.Add(newKeyframeEvent);

                    AttachUnityAnimationEventToClip(newKeyframeEvent, clip);

                    return(true);
                }

                for (int i = 0; i < selected.keyframeEvents.Count; i++)
                {
                    if (selected.keyframeEvents[i].eventKeyframe == frame)
                    {
                        AttachUnityAnimationEventToClip(selected.keyframeEvents[i], clip);
                        return(true);
                    }
                }
            }

            //TODO : RecordObject("[AECE] Add keyframeEvent");

            return(false);
        }
Esempio n. 5
0
        public override void ProcessEvents(Event e)
        {
            base.ProcessEvents(e);

            switch (e.type)
            {
            case EventType.MouseDown:
            {
                if (workTimelineView.IsInTimelineView(new Vector2(e.mousePosition.x - viewRect.x, e.mousePosition.y - viewRect.y)))
                {
                    if (e.button == 0)
                    {
                        int index = workTimelineView.GetFrameIndexOfRange(new Vector2(e.mousePosition.x - viewRect.x, e.mousePosition.y - viewRect.y));
                        if (index != -1)
                        {
                            AnimationEventControllerEditorWindow.Instance.current.timeline.frameIndex = index;
                            isDragged = true;
                            e.Use();
                        }
                    }
                }
                else if (workTimelineView.IsInKeyframeView(new Vector2(e.mousePosition.x - viewRect.x, e.mousePosition.y - viewRect.y)))
                {
                    if (e.button == 0)
                    {
                        int index = workTimelineView.GetFrameIndexOfRange(new Vector2(e.mousePosition.x - viewRect.x, e.mousePosition.y - viewRect.y));
                        if (index != -1)
                        {
                            AnimationEventController.UnityKeyframeEvent keyframeEvent = AnimationEventControllerEditorWindow.Instance.GetKeyframeEventInCurrentEventAnimation(index);
                            if (keyframeEvent != null)
                            {
                                if (keyframeEvent.eventKeyframe != 0 && keyframeEvent.eventKeyframe != AnimationEventControllerEditorWindow.Instance.GetCurrentEventAnimationClipFrameCount() - 1)
                                {
                                    selectedKeyframeEvent = keyframeEvent;
                                }
                                else
                                {
                                    selectedKeyframeEvent = null;
                                }
                            }

                            AnimationEventControllerEditorWindow.Instance.current.timeline.frameIndex = index;
                            isEventDragged = true;
                            e.Use();
                        }
                    }
                    else if (e.button == 1)
                    {
                        int index = workTimelineView.GetFrameIndexOfRange(new Vector2(e.mousePosition.x - viewRect.x, e.mousePosition.y - viewRect.y));
                        if (index != -1)
                        {
                            AnimationEventController.AdvancedAnimationEvent advancedAnimationEvent = AnimationEventControllerEditorWindow.Instance.current.eventAnimation;
                            for (int i = 0; i < advancedAnimationEvent.keyframeEvents.Count; i++)
                            {
                                if (advancedAnimationEvent.keyframeEvents[i].eventKeyframe == index)
                                {
                                    KeyframeEventRemoveGenericMenu(e, AnimationEventControllerEditorWindow.Instance.current.timeline.frameIndex);
                                    return;
                                }
                            }

                            KeyframeEventAddGenericMenu(e, AnimationEventControllerEditorWindow.Instance.current.timeline.frameIndex);
                        }
                    }
                }
            }
            break;

            case EventType.MouseUp:
            {
                isDragged             = false;
                isEventDragged        = false;
                selectedKeyframeEvent = null;
            }
            break;

            case EventType.MouseDrag:
            {
                if (isDragged && workTimelineView.IsInView(new Vector2(e.mousePosition.x - viewRect.x, e.mousePosition.y - viewRect.y)))
                {
                    int index = workTimelineView.GetFrameIndexOfRange(new Vector2(e.mousePosition.x - viewRect.x, e.mousePosition.y - viewRect.y));
                    if (index != -1)
                    {
                        AnimationEventControllerEditorWindow.Instance.current.timeline.frameIndex = index;

                        e.Use();
                    }
                }
                else if (isEventDragged && workTimelineView.IsInView(new Vector2(e.mousePosition.x - viewRect.x, e.mousePosition.y - viewRect.y)))
                {
                    int index = workTimelineView.GetFrameIndexOfRange(new Vector2(e.mousePosition.x - viewRect.x, e.mousePosition.y - viewRect.y));
                    if (index != -1 && AnimationEventControllerEditorWindow.Instance.current.timeline.frameIndex != index)
                    {
                        if (index != 0 && index != AnimationEventControllerEditorWindow.Instance.GetCurrentEventAnimationClipFrameCount() - 1)
                        {
                            AnimationEventController.UnityKeyframeEvent keyframeEvent = AnimationEventControllerEditorWindow.Instance.GetKeyframeEventInCurrentEventAnimation(index);
                            if (selectedKeyframeEvent != null)
                            {
                                selectedKeyframeEvent = AnimationEventControllerEditorWindow.Instance.SwapKeyFrameEvent(index, selectedKeyframeEvent);
                            }
                        }

                        AnimationEventControllerEditorWindow.Instance.current.timeline.frameIndex = index;

                        e.Use();
                    }
                }
            }
            break;
            }
        }