X-Git-Url: https://jasonwoof.com/gitweb/?p=vor.git;a=blobdiff_plain;f=dust.c;h=4eeeb8b034a23f1c4ef8e2c3998801998528eb7e;hp=7b6286732228e755ee2fae7880cb33def25ec3c8;hb=fe549d406b589b1c3db83aeea28c911292a5968e;hpb=88a9e026caed5568363cefb7d49308b875dc5e4a diff --git a/dust.c b/dust.c index 7b62867..4eeeb8b 100644 --- a/dust.c +++ b/dust.c @@ -4,6 +4,7 @@ #include "config.h" #include "globals.h" #include "dust.h" +#include "float.h" #include "mt.h" struct dust_mote { @@ -32,34 +33,13 @@ move_dust(float ticks) int i; float xscroll = screendx * ticks; float yscroll = screendy * ticks; - - // Originally this code was much simpler, but it would crash sometimes - // because the floating point numbers wouldn't always round the same - // direction, and we'd ocanially try to draw off the screen. for(i=0; i (XSIZE - 0.000001)) { - motes[i].x -= XSIZE; - if(motes[i].x < 0) { - motes[i].x = 0; - } - } - - if(motes[i].y < 0) { - motes[i].y += YSIZE; - } - if(motes[i].y > (YSIZE - 0.000001)) { - motes[i].y -= YSIZE; - if(motes[i].y < 0) { - motes[i].y = 0; - } - } + motes[i].y -= yscroll / (1.3 + motes[i].z); + motes[i].y = fwrap(motes[i].y, YSIZE); } }