X-Git-Url: https://jasonwoof.com/gitweb/?p=vor.git;a=blobdiff_plain;f=dust.c;h=7b6286732228e755ee2fae7880cb33def25ec3c8;hp=5ee9e2058345365bf0c2d1d8dcbe133511d20e25;hb=88a9e026caed5568363cefb7d49308b875dc5e4a;hpb=100372ba9cc83542b9d9894001d70f40e28f8f4b diff --git a/dust.c b/dust.c index 5ee9e20..7b62867 100644 --- a/dust.c +++ b/dust.c @@ -32,13 +32,34 @@ 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) motes[i].x -= XSIZE; - else if(motes[i].x < 0) motes[i].x += XSIZE; - if(motes[i].y >= YSIZE) motes[i].y -= YSIZE; - else if(motes[i].y < 0) motes[i].y += YSIZE; + + if(motes[i].x < 0) { + motes[i].x += XSIZE; + } + if(motes[i].x > (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; + } + } } }