Example #1
0
        public virtual com.brashmonkey.spriter.animation.SpriterKeyFrame getNextFrameFor(
            com.brashmonkey.spriter.objects.SpriterAbstractObject @object, com.brashmonkey.spriter.animation.SpriterKeyFrame
            currentFrame, int direction)
        {
            com.brashmonkey.spriter.animation.SpriterKeyFrame nextFrame = null;
            int  cnt    = 0;
            bool isBone = @object is com.brashmonkey.spriter.objects.SpriterBone;

            for (int j = (currentFrame.getId() + direction + this.numberOfFrames()) % this.numberOfFrames();
                 nextFrame == null && cnt < this.numberOfFrames(); j = (j + direction + this.numberOfFrames()) %
                                                                       this.numberOfFrames(), cnt++)
            {
                com.brashmonkey.spriter.animation.SpriterKeyFrame frame = this.frames[j];
                bool contains = (isBone) ? frame.containsBone((com.brashmonkey.spriter.objects.SpriterBone
                                                               )@object) : frame.containsObject((com.brashmonkey.spriter.objects.SpriterObject)
                                                                                                @object);
                if (contains)
                {
                    com.brashmonkey.spriter.objects.SpriterAbstractObject objectInFrame;
                    if (isBone)
                    {
                        objectInFrame = frame.getBoneFor((com.brashmonkey.spriter.objects.SpriterBone)@object);
                    }
                    else
                    {
                        objectInFrame = frame.getObjectFor((com.brashmonkey.spriter.objects.SpriterObject)@object);
                    }
                    if (@object.equals(objectInFrame))
                    {
                        nextFrame = frame;
                    }
                }
            }
            return(nextFrame);
        }
        public virtual void resolve(float x, float y, int chainLength, com.brashmonkey.spriter.objects.SpriterAbstractObject
                                    effector)
        {
            float xx = effector.getX() + (float)System.Math.Cos(SpriterCalculator.DegreeToRadian(effector
                                                                                                 .getAngle())) * SpriterCalculator.BONE_LENGTH * effector
                       .getScaleX();
            float yy = effector.getY() + (float)System.Math.Sin(SpriterCalculator.DegreeToRadian(effector
                                                                                                 .getAngle())) * SpriterCalculator.BONE_LENGTH * effector
                       .getScaleX();

            effector.setAngle(com.brashmonkey.spriter.SpriterCalculator.angleBetween(effector
                                                                                     .getX(), effector.getY(), x, y));
            if (this.player.getFlipX() == -1)
            {
                effector.setAngle(effector.getAngle() + 180f);
            }
            com.brashmonkey.spriter.objects.SpriterBone parent = null;
            if (effector.hasParent())
            {
                parent = player.getRuntimeBones()[effector.getParentId()];
                effector.copyValuesTo(temp);
                com.brashmonkey.spriter.SpriterCalculator.reTranslateRelative(parent, temp);
                if (effector is com.brashmonkey.spriter.objects.SpriterBone)
                {
                    temp.copyValuesTo(player.lastFrame.getBones()[effector.getId()]);
                }
                else
                {
                    temp.copyValuesTo(player.lastFrame.getObjects()[effector.getId()]);
                }
            }
            for (int i = 0; i < chainLength && parent != null; i++)
            {
                if (com.brashmonkey.spriter.SpriterCalculator.distanceBetween(xx, yy, x, y) <= 1)
                {
                    return;
                }
                parent.setAngle(parent.getAngle() + com.brashmonkey.spriter.SpriterCalculator.angleDifference
                                    (com.brashmonkey.spriter.SpriterCalculator.angleBetween(parent.getX(), parent.getY
                                                                                                (), x, y), com.brashmonkey.spriter.SpriterCalculator.angleBetween(parent.getX(),
                                                                                                                                                                  parent.getY(), xx, yy)));
                this.player.updateRecursively(parent);
                if (parent.hasParent())
                {
                    parent = player.getRuntimeBones()[parent.getParent().getId()];
                }
                else
                {
                    parent = null;
                }
                xx = effector.getX() + (float)System.Math.Cos(SpriterCalculator.DegreeToRadian(effector.getAngle
                                                                                                   ())) * SpriterCalculator.BONE_LENGTH * effector.getScaleX
                         ();
                yy = effector.getY() + (float)System.Math.Sin(SpriterCalculator.DegreeToRadian(effector.getAngle
                                                                                                   ())) * SpriterCalculator.BONE_LENGTH * effector.getScaleX
                         ();
            }
        }
Example #3
0
 /// <param name="object">to compare with</param>
 /// <returns>true if both objects have the same id.</returns>
 public virtual bool equals(com.brashmonkey.spriter.objects.SpriterAbstractObject
                            @object)
 {
     if (@object == null)
     {
         return(false);
     }
     return(this.timeline == @object.getTimeline());
 }
 private void modObject(com.brashmonkey.spriter.objects.SpriterAbstractObject @object
                        )
 {
     @object.setAngle(@object.getAngle() + this.angle);
     @object.setScaleX(@object.getScaleX() * this.scaleX);
     @object.setScaleY(@object.getScaleY() * this.scaleY);
     @object.setX(@object.getX() + this.x);
     @object.setY(@object.getY() + this.y);
 }
Example #5
0
 public override void copyValuesTo(com.brashmonkey.spriter.objects.SpriterAbstractObject
                                   bone)
 {
     base.copyValuesTo(bone);
     if (!(bone is com.brashmonkey.spriter.objects.SpriterBone))
     {
         return;
     }
     ((com.brashmonkey.spriter.objects.SpriterBone)bone).childBones   = this.childBones;
     ((com.brashmonkey.spriter.objects.SpriterBone)bone).childObjects = this.childObjects;
 }
 public SpriterAbstractObject()
 {
     this.x = 0;
     this.y = 0;
     this.angle = 0f;
     this.scaleX = 1f;
     this.scaleY = 1f;
     this.id = -1;
     this.parentId = -1;
     this.name = string.Empty;
     this.parent = null;
 }
Example #7
0
 public SpriterAbstractObject()
 {
     this.x        = 0;
     this.y        = 0;
     this.angle    = 0f;
     this.scaleX   = 1f;
     this.scaleY   = 1f;
     this.id       = -1;
     this.parentId = -1;
     this.name     = string.Empty;
     this.parent   = null;
 }
Example #8
0
 /// <summary>Sets the values of this instance to the given one.</summary>
 /// <remarks>Sets the values of this instance to the given one.</remarks>
 /// <param name="object">which has to be manipulated.</param>
 public virtual void copyValuesTo(com.brashmonkey.spriter.objects.SpriterAbstractObject
                                  @object)
 {
     @object.setAngle(angle);
     @object.setScaleX(scaleX);
     @object.setScaleY(scaleY);
     @object.setX(x);
     @object.setY(y);
     @object.setId(id);
     @object.setParentId(parentId);
     @object.setParent(parent);
     @object.setTimeline(timeline);
     @object.setSpin(spin);
     @object.setName(name);
 }
Example #9
0
        /// <summary>Rotates the given point around the given parent.</summary>
        /// <remarks>Rotates the given point around the given parent.</remarks>
        /// <param name="parent"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="target">save new position in</param>
        public static void translateRelative(com.brashmonkey.spriter.objects.SpriterAbstractObject
                                             parent, float x, float y, com.brashmonkey.spriter.objects.SpriterAbstractObject
                                             target)
        {
            float px   = x * (parent.getScaleX());
            float py   = y * (parent.getScaleY());
            float s    = (float)System.Math.Sin(DegreeToRadian(parent.getAngle()));
            float c    = (float)System.Math.Cos(DegreeToRadian(parent.getAngle()));
            float xnew = (px * c) - (py * s);
            float ynew = (px * s) + (py * c);

            xnew += parent.getX();
            ynew += parent.getY();
            target.setX(xnew);
            target.setY(ynew);
        }
Example #10
0
        public static void reTranslateRelative(com.brashmonkey.spriter.objects.SpriterAbstractObject
                                               parent, float x, float y, com.brashmonkey.spriter.objects.SpriterAbstractObject
                                               target)
        {
            target.setAngle(target.getAngle() - parent.getAngle());
            target.setScaleX(target.getScaleX() / parent.getScaleX());
            target.setScaleY(target.getScaleY() / parent.getScaleY());
            float  xx    = x - parent.getX();
            float  yy    = y - parent.getY();
            double angle = DegreeToRadian(parent.getAngle());
            float  cos   = (float)System.Math.Cos(angle);
            float  sin   = (float)System.Math.Sin(angle);
            float  newX  = yy * sin + xx * cos;
            float  newY  = yy * cos - xx * sin;

            target.setX(newX / parent.getScaleX());
            target.setY(newY / parent.getScaleY());
        }
Example #11
0
 public override void copyValuesTo(com.brashmonkey.spriter.objects.SpriterAbstractObject
                                   @object)
 {
     base.copyValuesTo(@object);
     if (!(@object is com.brashmonkey.spriter.objects.SpriterObject))
     {
         return;
     }
     ((com.brashmonkey.spriter.objects.SpriterObject)@object).setAlpha(alpha);
     ((com.brashmonkey.spriter.objects.SpriterObject)@object).setRef(@ref);
     ((com.brashmonkey.spriter.objects.SpriterObject)@object).setPivotX(pivotX);
     ((com.brashmonkey.spriter.objects.SpriterObject)@object).setPivotY(pivotY);
     ((com.brashmonkey.spriter.objects.SpriterObject)@object).setTransientObject(transientObject
                                                                                 );
     ((com.brashmonkey.spriter.objects.SpriterObject)@object).setZIndex(zIndex);
     //((com.brashmonkey.spriter.objects.SpriterObject)@object).setLoader(loader);
     ((com.brashmonkey.spriter.objects.SpriterObject)@object).setVisible(visible);
     ((com.brashmonkey.spriter.objects.SpriterObject)@object).rect.set(this.rect);
 }
Example #12
0
 private void interpolateAbstractObject(com.brashmonkey.spriter.objects.SpriterAbstractObject
                                        target, com.brashmonkey.spriter.objects.SpriterAbstractObject obj1, com.brashmonkey.spriter.objects.SpriterAbstractObject
                                        obj2, float startTime, float endTime, float frame)
 {
     if (obj2 == null)
     {
         return;
     }
     target.setX(this.interpolate(obj1.getX(), obj2.getX(), startTime, endTime, frame)
                 );
     target.setY(this.interpolate(obj1.getY(), obj2.getY(), startTime, endTime, frame)
                 );
     target.setScaleX(this.interpolate(obj1.getScaleX(), obj2.getScaleX(), startTime,
                                       endTime, frame));
     target.setScaleY(this.interpolate(obj1.getScaleY(), obj2.getScaleY(), startTime,
                                       endTime, frame));
     target.setAngle(this.interpolateAngle(obj1.getAngle(), obj2.getAngle(), startTime
                                           , endTime, frame));
 }
        /// <param name="rootParent">the rootParent to set</param>
        internal virtual void setRootParent(com.brashmonkey.spriter.objects.SpriterAbstractObject
			 rootParent)
        {
            this.rootParent = rootParent;
        }
 public SpriterCCDResolver(com.brashmonkey.spriter.player.SpriterAbstractPlayer target
                           )
 {
     this.player = target;
     this.temp   = new com.brashmonkey.spriter.objects.SpriterBone();
 }
        /// <param name="parent">the parent to set</param>
        public virtual void setParent(com.brashmonkey.spriter.objects.SpriterAbstractObject
			 parent)
        {
            this.parent = parent;
        }
        public SpriterCCDResolver(com.brashmonkey.spriter.player.SpriterAbstractPlayer target
			)
        {
            this.player = target;
            this.temp = new com.brashmonkey.spriter.objects.SpriterBone();
        }
Example #17
0
 public static void reTranslateRelative(com.brashmonkey.spriter.objects.SpriterAbstractObject
                                        parent, com.brashmonkey.spriter.objects.SpriterAbstractObject child)
 {
     reTranslateRelative(parent, child.getX(), child.getY(), child);
 }
        /// <summary>Constructs a new SpriterAbstractPlayer object which is able to animate SpriterBone instances and SpriterObject instances.
        /// 	</summary>
        /// <remarks>Constructs a new SpriterAbstractPlayer object which is able to animate SpriterBone instances and SpriterObject instances.
        /// 	</remarks>
        /// <param name="loader">
        /// 
        /// <see cref="com.brashmonkey.spriter.file.FileLoader{I}">com.brashmonkey.spriter.file.FileLoader&lt;I&gt;
        /// 	</see>
        /// which you have to implement on your own.
        /// </param>
        /// <param name="keyframes">
        /// A list of SpriterKeyFrame arrays. See
        /// <see cref="com.brashmonkey.spriter.SpriterKeyFrameProvider.generateKeyFramePool(com.discobeard.spriter.dom.SpriterData, com.discobeard.spriter.dom.Entity)
        /// 	">com.brashmonkey.spriter.SpriterKeyFrameProvider.generateKeyFramePool(com.discobeard.spriter.dom.SpriterData, com.discobeard.spriter.dom.Entity)
        /// 	</see>
        /// to get the list.
        /// Generate these keyframes once to save memory.
        /// </param>
        public SpriterAbstractPlayer(com.brashmonkey.spriter.file.FileLoader loader,
            System.Collections.Generic.IList<com.brashmonkey.spriter.animation.SpriterAnimation
			> animations)
        {
            this.loader = loader;
            this.animations = animations;
            this.rootParent = new com.brashmonkey.spriter.objects.SpriterBone();
            this.tempParent = new com.brashmonkey.spriter.objects.SpriterBone();
            this.rootParent.setName("playerRoot");
            this.tempParent.setName("playerRoot");
            this.lastFrame = new com.brashmonkey.spriter.animation.SpriterKeyFrame();
            this.lastTempFrame = new com.brashmonkey.spriter.animation.SpriterKeyFrame();
            this.interpolator = com.brashmonkey.spriter.interpolation.SpriterLinearInterpolator
                .interpolator;
            this.players = new System.Collections.Generic.LinkedList<com.brashmonkey.spriter.player.SpriterAbstractPlayer>();
            rect = new com.brashmonkey.spriter.SpriterRectangle(0, 0, 0, 0);
        }
Example #19
0
 /// <param name="parent">the parent to set</param>
 public virtual void setParent(com.brashmonkey.spriter.objects.SpriterAbstractObject
                               parent)
 {
     this.parent = parent;
 }