private void DrawAnimationGroup(Context contextParent, Sequence.AnimationGroup animationGroup) { var index = animationGroup.AnimationIndex; var count = animationGroup.Count; var context = contextParent.Clone(); //if (animationGroup.Tick1 == 0) // context.CurrentFrameIndex = 0; //else if (animationGroup.Tick2 == 0) // context.CurrentFrameIndex = Math.Min(context.CurrentFrameIndex, animationGroup.Tick1); //else // context.CurrentFrameIndex = (context.CurrentFrameIndex < animationGroup.Tick1) ? context.CurrentFrameIndex : // (animationGroup.Tick1 + ((context.CurrentFrameIndex - animationGroup.Tick1) % (animationGroup.Tick2 - animationGroup.Tick1))); if (animationGroup.Tick2 != 0) { context.FrameIndex = (context.FrameIndex < animationGroup.Tick1) ? context.FrameIndex : (animationGroup.Tick1 + ((context.FrameIndex - animationGroup.Tick1) % (animationGroup.Tick2 - animationGroup.Tick1))); } for (var i = 0; i < count; i++) { DrawAnimation(context, sequence.Animations[index + i]); } }
private bool DrawAnimationGroup(Context contextParent, Sequence.AnimationGroup animationGroup) { var context = contextParent.Clone(); context.FrameIndex = GetActualFrame(animationGroup, context.FrameIndex); for (int i = 0; i < animationGroup.Animations.Count; i++) { DrawAnimation(context, animationGroup.Animations[i], i); } return(animationGroup.DoNotLoop == 0 || context.FrameIndex < animationGroup.Animations.Max(x => x.FrameEnd)); }
public int GetActualFrame(Sequence.AnimationGroup animationGroup, int frameIndex) { if (animationGroup.DoNotLoop != 0) { return(frameIndex); } var frameEnd = animationGroup.LoopEnd; if (frameEnd == 0 && animationGroup.Animations.Count > 0) { frameEnd = animationGroup.Animations.Max(x => x.FrameEnd); } return(Loop(animationGroup.LoopStart, frameEnd, frameIndex)); }
public int GetActualFrame(Sequence.AnimationGroup animationGroup, int frameIndex) { CurrentChildContext.TextPositionX = animationGroup.TextPositionX; CurrentChildContext.TextPositionY = animationGroup.TextPositionY; CurrentChildContext.TextScale = animationGroup.TextScale; CurrentChildContext.UiSize = animationGroup.LightPositionX; CurrentChildContext.UiPadding = animationGroup.UiPadding; if (animationGroup.DoNotLoop != 0) { return(frameIndex); } var frameEnd = animationGroup.LoopEnd; if (frameEnd == 0 && animationGroup.Animations.Count > 0) { frameEnd = animationGroup.Animations.Max(x => x.FrameEnd); } return(Loop(animationGroup.LoopStart, frameEnd, frameIndex)); }
private static Sequence MockSequence(Sequence.AnimationGroup animationGroup) => new Sequence { AnimationGroups = new List <Sequence.AnimationGroup>() { animationGroup, }, SpriteGroups = new List <List <Sequence.SpritePart> >() { new List <Sequence.SpritePart>() { new Sequence.SpritePart { Left = 0, Top = 0, Right = 512, Bottom = 512, } } }, Sprites = new List <Sequence.Sprite>() { new Sequence.Sprite { Left = 0, Top = 0, Right = 512, Bottom = 512, UTranslation = 0, VTranslation = 0, ColorLeft = 0x80808080, ColorTop = 0x80808080, ColorRight = 0x80808080, ColorBottom = 0x80808080, } } };
public AnimationGroupEntryModel(int index, Sequence.AnimationGroup animationGroup) { Index = index; AnimationGroup = animationGroup; }
public static int GetFrameLength(this Sequence.AnimationGroup animGroup) => animGroup.Animations.Aggregate(0, (length, anim) => Math.Max(length, anim.FrameEnd));
public static Rectangle GetVisibilityRectangleFromAnimationGroup( this Sequence sequence, Sequence.AnimationGroup animGroup) => animGroup.Animations.Aggregate(new Rectangle(), (rect, x) => rect.Union(sequence.GetVisibilityRectangleFromAnimation(x)));