protected virtual OsbSprite CreateSprite(List <IFragmentableCommand> segment) { var sprite = new OsbSprite() { TexturePath = osbSprite.TexturePath, InitialPosition = osbSprite.InitialPosition, Origin = osbSprite.Origin, }; foreach (var command in segment) { sprite.AddCommand(command); } return(sprite); }
protected override OsbSprite CreateSprite(List <IFragmentableCommand> segment) { if (osbAnimation.LoopType == OsbLoopType.LoopOnce && segment.Min(c => c.StartTime) >= osbAnimation.AnimationEndTime) { //this shouldn't loop again so we need a sprite instead var sprite = new OsbSprite() { InitialPosition = osbAnimation.InitialPosition, Origin = osbAnimation.Origin, TexturePath = getLastFramePath(), }; foreach (var command in segment) { sprite.AddCommand(command); } return(sprite); } else { var animation = new OsbAnimation() { TexturePath = osbAnimation.TexturePath, InitialPosition = osbAnimation.InitialPosition, Origin = osbAnimation.Origin, FrameCount = osbAnimation.FrameCount, FrameDelay = osbAnimation.FrameDelay, LoopType = osbAnimation.LoopType, }; foreach (var command in segment) { animation.AddCommand(command); } return(animation); } }