diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2009-10-31 20:56:16 +0100 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2009-11-01 21:45:26 +0100 |
commit | be58c68878c08c4d1373c2f38c9ef11d66010d06 (patch) | |
tree | cf58242500fe30c94dc0f2b34cfcb1180ebfdb75 /crawl-ref/source/ray.cc | |
parent | b81b08f9aa02afd4a8195bf8d8b846b7de0788cd (diff) | |
download | crawl-ref-be58c68878c08c4d1373c2f38c9ef11d66010d06.tar.gz crawl-ref-be58c68878c08c4d1373c2f38c9ef11d66010d06.zip |
Simplify geom2d ray advance code.
Diffstat (limited to 'crawl-ref/source/ray.cc')
-rw-r--r-- | crawl-ref/source/ray.cc | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/crawl-ref/source/ray.cc b/crawl-ref/source/ray.cc index 56fc3058d1..f93cf12668 100644 --- a/crawl-ref/source/ray.cc +++ b/crawl-ref/source/ray.cc @@ -65,7 +65,8 @@ coord_def ray_def::pos() const return (coord_def(x, y)); } -// Return false if we passed or hit a corner. +// Return true if we didn't hit a corner, hence if this +// is a good ray so far. bool ray_def::advance() { ASSERT(on_corner || in_diamond_int(r.start)); @@ -73,17 +74,17 @@ bool ray_def::advance() { ASSERT (is_corner(r.start)); on_corner = false; - r.move_half_cell(diamonds); + r.to_grid(diamonds, true); } else { // Starting inside a diamond. - bool c = !r.to_next_cell(diamonds); + bool c = r.to_next_cell(diamonds); if (c) { // r is now on a corner, going from diamond to diamond. - r.move_half_cell(diamonds); + r.to_grid(diamonds, true); return (false); } } @@ -91,7 +92,7 @@ bool ray_def::advance() // Now inside a non-diamond. ASSERT(!in_diamond(r.start)); - if (r.to_next_cell(diamonds)) + if (!r.to_next_cell(diamonds)) { ASSERT(in_diamond_int(r.start)); return (true); |