Rolling Clamp (numbers looping in a range)

Stats

706 visits, 1,001 views

Translations

This tutorial hasn't been translated.

Tools

If you're ever in a situation where you need to be able to shift through a range of numbers, you may find yourself wanting to "roll" or "loop" through those numbers. You're possibly simulating the animation of a sprite in a controlled fashion. Perhaps you've got a level editor and you're setting the selected tile type by scrolling the mouse wheel. Maybe you've even drummed up some awesome AT-based combat system for your smokin' new RPG.

This is pretty convoluted to do with a simple expression, but if you're anything like me, you enjoy the elegance of a one-liner and appreciate a little mathematical pixie dust just as much as the next guy. Well, I may have a quick and dirty solution for you; enter the "rolling clamp". ;)

    abs(-TOTAL - (CURRENT + DIRECTION)) % TOTAL

Personally, I would suggest to simply use it in an expression as a function (outside of a plugin) is a bit cumbersome to work with.

Here is an example of doing this in that tile type selection I mentioned earlier:

So there it is. It's nothing huge, major, or grand, but it's a cute little trick that I thought might help someone out some day, so here it is.

Edit: I forgot to mention that if your range is not 0-bound (e.g. 0~9 as opposed to 1~10 or 10~20), then you'll need to add the offset at the beginning (or end) of the expression as such:

    OFFSET + (abs(-TOTAL - (CURRENT + DIRECTION)) % TOTAL)

OFFSET in the cases referenced above would be 1 and 10 respectively.

  • 0 Comments

  • Order by
Want to leave a comment? Login or Register an account!