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 (); } }
/// <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); }
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; }
/// <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); }
/// <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); }
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()); }
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); }
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 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<I> /// </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); }