Exemplo n.º 1
0
 public static AnimationEvent FromClipboard(AnimationWindowEventClipboard e)
 {
     return(new AnimationEvent
     {
         time = e.time,
         functionName = e.functionName,
         stringParameter = e.stringParam,
         objectReferenceParameter = InternalEditorUtility.GetObjectFromInstanceID(e.objectParam),
         floatParameter = e.floatParam,
         intParameter = e.intParam,
         messageOptions = e.messageOptions
     });
 }
Exemplo n.º 2
0
        internal static AnimationEvent[] AddPastedEvents(AnimationEvent[] events, float time, out bool[] selected)
        {
            selected = null;
            var data = Clipboard.GetCustomValue <AnimationWindowEventsClipboard>();

            if (data?.events == null || data.events.Length == 0)
            {
                return(null);
            }

            var minTime = data.events.Min(e => e.time);

            var origEventsCount = events.Length;
            // Append new events to the end first,
            var newEvents = new List <AnimationEvent>();

            foreach (var e in data.events)
            {
                var t        = e.time - minTime + time;
                var newEvent = AnimationWindowEventClipboard.FromClipboard(e);
                newEvent.time = t;
                newEvents.Add(newEvent);
            }
            events = events.Concat(newEvents).ToArray();

            // Re-sort events by time
            var order = new int[events.Length];

            for (var i = 0; i < order.Length; i++)
            {
                order[i] = i;
            }
            Array.Sort(events, order, new AnimationEventTimeLine.EventComparer());

            // Mark pasted ones as selected
            selected = new bool[events.Length];
            for (var i = 0; i < order.Length; ++i)
            {
                selected[i] = order[i] >= origEventsCount;
            }

            return(events);
        }