Beispiel #1
0
        /// <summary>Copy constructor.</summary>
        public Slot(Slot slot, Bone bone)
        {
            if (slot == null)
            {
                throw new ArgumentNullException("slot", "slot cannot be null.");
            }
            if (bone == null)
            {
                throw new ArgumentNullException("bone", "bone cannot be null.");
            }
            data      = slot.data;
            this.bone = bone;
            r         = slot.r;
            g         = slot.g;
            b         = slot.b;
            a         = slot.a;

            // darkColor = slot.darkColor == null ? null : new Color(slot.darkColor);
            if (slot.hasSecondColor)
            {
                r2 = slot.r2;
                g2 = slot.g2;
                b2 = slot.b2;
            }
            else
            {
                r2 = g2 = b2 = 0;
            }
            hasSecondColor = slot.hasSecondColor;

            attachment     = slot.attachment;
            attachmentTime = slot.attachmentTime;
            deform.AddRange(slot.deform);
        }
 static int AddRange(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 2);
         Spine.ExposedList <Spine.Animation> obj = (Spine.ExposedList <Spine.Animation>)ToLua.CheckObject <Spine.ExposedList <Spine.Animation> >(L, 1);
         System.Collections.Generic.IEnumerable <Spine.Animation> arg0 = (System.Collections.Generic.IEnumerable <Spine.Animation>)ToLua.CheckObject <System.Collections.Generic.IEnumerable <Spine.Animation> >(L, 2);
         obj.AddRange(arg0);
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
Beispiel #3
0
        /// <summary>Caches information about bones and constraints. Must be called if bones, constraints or weighted path attachments are added
        /// or removed.</summary>
        public void UpdateCache()
        {
            ExposedList <IUpdatable> updateCache = this.updateCache;

            updateCache.Clear();

            ExposedList <Bone> bones = this.bones;

            for (int i = 0, n = bones.Count; i < n; i++)
            {
                bones.Items[i].sorted = false;
            }

            ExposedList <IkConstraint> ikConstraints = this.ikConstraintsSorted;

            ikConstraints.Clear();
            ikConstraints.AddRange(this.ikConstraints);
            int ikCount = ikConstraints.Count;

            for (int i = 0, level, n = ikCount; i < n; i++)
            {
                IkConstraint ik   = ikConstraints.Items[i];
                Bone         bone = ik.bones.Items[0].parent;
                for (level = 0; bone != null; level++)
                {
                    bone = bone.parent;
                }
                ik.level = level;
            }
            for (int i = 1, ii; i < ikCount; i++)
            {
                IkConstraint ik    = ikConstraints.Items[i];
                int          level = ik.level;
                for (ii = i - 1; ii >= 0; ii--)
                {
                    IkConstraint other = ikConstraints.Items[ii];
                    if (other.level < level)
                    {
                        break;
                    }
                    ikConstraints.Items[ii + 1] = other;
                }
                ikConstraints.Items[ii + 1] = ik;
            }
            for (int i = 0, n = ikConstraints.Count; i < n; i++)
            {
                IkConstraint constraint = ikConstraints.Items[i];
                Bone         target     = constraint.target;
                SortBone(target);

                ExposedList <Bone> constrained = constraint.bones;
                Bone parent = constrained.Items[0];
                SortBone(parent);

                updateCache.Add(constraint);

                SortReset(parent.children);
                constrained.Items[constrained.Count - 1].sorted = true;
            }

            ExposedList <PathConstraint> pathConstraints = this.pathConstraints;

            for (int i = 0, n = pathConstraints.Count; i < n; i++)
            {
                PathConstraint constraint = pathConstraints.Items[i];

                Slot slot      = constraint.target;
                int  slotIndex = slot.data.index;
                Bone slotBone  = slot.bone;
                if (skin != null)
                {
                    SortPathConstraintAttachment(skin, slotIndex, slotBone);
                }
                if (data.defaultSkin != null && data.defaultSkin != skin)
                {
                    SortPathConstraintAttachment(data.defaultSkin, slotIndex, slotBone);
                }
                for (int ii = 0, nn = data.skins.Count; ii < nn; ii++)
                {
                    SortPathConstraintAttachment(data.skins.Items[ii], slotIndex, slotBone);
                }

                PathAttachment attachment = slot.Attachment as PathAttachment;
                if (attachment != null)
                {
                    SortPathConstraintAttachment(attachment, slotBone);
                }

                ExposedList <Bone> constrained = constraint.bones;
                int boneCount = constrained.Count;
                for (int ii = 0; ii < boneCount; ii++)
                {
                    SortBone(constrained.Items[ii]);
                }

                updateCache.Add(constraint);

                for (int ii = 0; ii < boneCount; ii++)
                {
                    SortReset(constrained.Items[ii].children);
                }
                for (int ii = 0; ii < boneCount; ii++)
                {
                    constrained.Items[ii].sorted = true;
                }
            }

            ExposedList <TransformConstraint> transformConstraints = this.transformConstraints;

            for (int i = 0, n = transformConstraints.Count; i < n; i++)
            {
                TransformConstraint constraint = transformConstraints.Items[i];

                SortBone(constraint.target);

                ExposedList <Bone> constrained = constraint.bones;
                int boneCount = constrained.Count;
                for (int ii = 0; ii < boneCount; ii++)
                {
                    SortBone(constrained.Items[ii]);
                }

                updateCache.Add(constraint);

                for (int ii = 0; ii < boneCount; ii++)
                {
                    SortReset(constrained.Items[ii].children);
                }
                for (int ii = 0; ii < boneCount; ii++)
                {
                    constrained.Items[ii].sorted = true;
                }
            }

            for (int i = 0, n = bones.Count; i < n; i++)
            {
                SortBone(bones.Items[i]);
            }
        }
Beispiel #4
0
        public void UpdateCache()
        {
            ExposedList <IUpdatable> exposedList = this.updateCache;

            exposedList.Clear(true);
            ExposedList <Bone> exposedList2 = this.bones;
            int i     = 0;
            int count = exposedList2.Count;

            while (i < count)
            {
                exposedList2.Items[i].sorted = false;
                i++;
            }
            ExposedList <IkConstraint> exposedList3 = this.ikConstraintsSorted;

            exposedList3.Clear(true);
            exposedList3.AddRange(this.ikConstraints);
            int count2 = exposedList3.Count;
            int j      = 0;
            int num    = count2;

            while (j < num)
            {
                IkConstraint ikConstraint = exposedList3.Items[j];
                Bone         parent       = ikConstraint.bones.Items[0].parent;
                int          num2         = 0;
                while (parent != null)
                {
                    parent = parent.parent;
                    num2++;
                }
                ikConstraint.level = num2;
                j++;
            }
            for (int k = 1; k < count2; k++)
            {
                IkConstraint ikConstraint2 = exposedList3.Items[k];
                int          level         = ikConstraint2.level;
                int          l;
                for (l = k - 1; l >= 0; l--)
                {
                    IkConstraint ikConstraint3 = exposedList3.Items[l];
                    if (ikConstraint3.level < level)
                    {
                        break;
                    }
                    exposedList3.Items[l + 1] = ikConstraint3;
                }
                exposedList3.Items[l + 1] = ikConstraint2;
            }
            int m      = 0;
            int count3 = exposedList3.Count;

            while (m < count3)
            {
                IkConstraint ikConstraint4 = exposedList3.Items[m];
                Bone         target        = ikConstraint4.target;
                this.SortBone(target);
                ExposedList <Bone> exposedList4 = ikConstraint4.bones;
                Bone bone = exposedList4.Items[0];
                this.SortBone(bone);
                exposedList.Add(ikConstraint4);
                this.SortReset(bone.children);
                exposedList4.Items[exposedList4.Count - 1].sorted = true;
                m++;
            }
            ExposedList <PathConstraint> exposedList5 = this.pathConstraints;
            int n      = 0;
            int count4 = exposedList5.Count;

            while (n < count4)
            {
                PathConstraint pathConstraint = exposedList5.Items[n];
                Slot           target2        = pathConstraint.target;
                int            index          = target2.data.index;
                Bone           bone2          = target2.bone;
                if (this.skin != null)
                {
                    this.SortPathConstraintAttachment(this.skin, index, bone2);
                }
                if (this.data.defaultSkin != null && this.data.defaultSkin != this.skin)
                {
                    this.SortPathConstraintAttachment(this.data.defaultSkin, index, bone2);
                }
                int num3   = 0;
                int count5 = this.data.skins.Count;
                while (num3 < count5)
                {
                    this.SortPathConstraintAttachment(this.data.skins.Items[num3], index, bone2);
                    num3++;
                }
                PathAttachment pathAttachment = target2.Attachment as PathAttachment;
                if (pathAttachment != null)
                {
                    this.SortPathConstraintAttachment(pathAttachment, bone2);
                }
                ExposedList <Bone> exposedList6 = pathConstraint.bones;
                int count6 = exposedList6.Count;
                for (int num4 = 0; num4 < count6; num4++)
                {
                    this.SortBone(exposedList6.Items[num4]);
                }
                exposedList.Add(pathConstraint);
                for (int num5 = 0; num5 < count6; num5++)
                {
                    this.SortReset(exposedList6.Items[num5].children);
                }
                for (int num6 = 0; num6 < count6; num6++)
                {
                    exposedList6.Items[num6].sorted = true;
                }
                n++;
            }
            ExposedList <TransformConstraint> exposedList7 = this.transformConstraints;
            int num7   = 0;
            int count7 = exposedList7.Count;

            while (num7 < count7)
            {
                TransformConstraint transformConstraint = exposedList7.Items[num7];
                this.SortBone(transformConstraint.target);
                ExposedList <Bone> exposedList8 = transformConstraint.bones;
                int count8 = exposedList8.Count;
                for (int num8 = 0; num8 < count8; num8++)
                {
                    this.SortBone(exposedList8.Items[num8]);
                }
                exposedList.Add(transformConstraint);
                for (int num9 = 0; num9 < count8; num9++)
                {
                    this.SortReset(exposedList8.Items[num9].children);
                }
                for (int num10 = 0; num10 < count8; num10++)
                {
                    exposedList8.Items[num10].sorted = true;
                }
                num7++;
            }
            int num11  = 0;
            int count9 = exposedList2.Count;

            while (num11 < count9)
            {
                this.SortBone(exposedList2.Items[num11]);
                num11++;
            }
        }