internal override float runStep(DisplayModel displayModel, float timeToConsume) { if (method == ClearCommand.Methods.Instant) { displayModel.SetAll(targetState); return(timeToConsume); } if (counter < 0) { while (timeToConsume >= secondsPerDot) { if (method == ClearCommand.Methods.MoveLeft) { displayModel.PushLeft(); if (targetState > 0) { displayModel.SetColumn(displayModel.Width - 1, targetState); } } else if (method == ClearCommand.Methods.MoveRight) { displayModel.PushRight(); if (targetState > 0) { displayModel.SetColumn(0, targetState); } } else if (method == ClearCommand.Methods.MoveUp) { displayModel.PushUp(); if (targetState > 0) { displayModel.SetRow(displayModel.Height - 1, targetState); } } else if (method == ClearCommand.Methods.MoveDown) { displayModel.PushDown(); if (targetState > 0) { displayModel.SetRow(0, targetState); } } timeToConsume -= secondsPerDot; if (isFinished(displayModel)) { break; } } } else { while (timeToConsume >= secondsPerDot && counter < counterMax) { if (method == ClearCommand.Methods.ColumnByColumnFromLeft) { displayModel.SetColumn(counter, targetState); } else if (method == ClearCommand.Methods.ColumnByColumnFromRight) { displayModel.SetColumn(displayModel.Width - counter - 1, targetState); } else if (method == ClearCommand.Methods.RowByRowFromTop) { displayModel.SetRow(counter, targetState); } else if (method == ClearCommand.Methods.RowByRowFromBottom) { displayModel.SetRow(displayModel.Height - counter - 1, targetState); } timeToConsume -= secondsPerDot; counter++; } } return(timeToConsume); }