Ejemplo n.º 1
0
        internal TrackEntry SetTimelineData(TrackEntry to, ExposedList <TrackEntry> mixingToArray, HashSet <int> propertyIDs)
        {
            if (to != null)
            {
                mixingToArray.Add(to);
            }
            TrackEntry result = (mixingFrom == null) ? this : mixingFrom.SetTimelineData(this, mixingToArray, propertyIDs);

            if (to != null)
            {
                mixingToArray.Pop();
            }
            TrackEntry[] items = mixingToArray.Items;
            int          num   = mixingToArray.Count - 1;

            Timeline[] items2 = animation.timelines.Items;
            int        count  = animation.timelines.Count;

            int[] items3 = timelineData.Resize(count).Items;
            timelineDipMix.Clear();
            TrackEntry[] items4 = timelineDipMix.Resize(count).Items;
            for (int i = 0; i < count; i++)
            {
                int propertyId = items2[i].PropertyId;
                if (!propertyIDs.Add(propertyId))
                {
                    items3[i] = 0;
                    continue;
                }
                if (to == null || !to.HasTimeline(propertyId))
                {
                    items3[i] = 1;
                    continue;
                }
                int num2 = num;
                while (true)
                {
                    if (num2 >= 0)
                    {
                        TrackEntry trackEntry = items[num2];
                        if (trackEntry.HasTimeline(propertyId))
                        {
                            num2--;
                            continue;
                        }
                        if (trackEntry.mixDuration > 0f)
                        {
                            items3[i] = 3;
                            items4[i] = trackEntry;
                            break;
                        }
                    }
                    items3[i] = 2;
                    break;
                }
            }
            return(result);
        }
Ejemplo n.º 2
0
        internal TrackEntry SetTimelineData(TrackEntry to, ExposedList <TrackEntry> mixingToArray, HashSet <int> propertyIDs)
        {
            if (to != null)
            {
                mixingToArray.Add(to);
            }
            TrackEntry entry = (this.mixingFrom == null) ? this : this.mixingFrom.SetTimelineData(this, mixingToArray, propertyIDs);

            if (to != null)
            {
                mixingToArray.Pop();
            }
            TrackEntry[] items = mixingToArray.Items;
            int          num   = mixingToArray.Count - 1;

            Timeline[] timelineArray = this.animation.timelines.Items;
            int        count         = this.animation.timelines.Count;

            int[] numArray = this.timelineData.Resize(count).Items;
            this.timelineDipMix.Clear(true);
            TrackEntry[] entryArray2 = this.timelineDipMix.Resize(count).Items;
            for (int i = 0; i < count; i++)
            {
                int propertyId = timelineArray[i].PropertyId;
                if (!propertyIDs.Add(propertyId))
                {
                    numArray[i] = 0;
                    continue;
                }
                if ((to == null) || !to.HasTimeline(propertyId))
                {
                    numArray[i] = 1;
                    continue;
                }
                for (int j = num; j >= 0; j--)
                {
                    TrackEntry entry2 = items[j];
                    if (!entry2.HasTimeline(propertyId))
                    {
                        if (entry2.mixDuration <= 0f)
                        {
                            break;
                        }
                        numArray[i]    = 3;
                        entryArray2[i] = entry2;
                        continue;
                    }
                }
                numArray[i] = 2;
            }
            return(entry);
        }
 static int Pop(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         Spine.ExposedList <Spine.Animation> obj = (Spine.ExposedList <Spine.Animation>)ToLua.CheckObject <Spine.ExposedList <Spine.Animation> >(L, 1);
         Spine.Animation o = obj.Pop();
         ToLua.PushObject(L, o);
         return(1);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }