summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/ray.cc
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2009-10-31 20:56:16 +0100
committerRobert Vollmert <rvollmert@gmx.net>2009-11-01 21:45:26 +0100
commitbe58c68878c08c4d1373c2f38c9ef11d66010d06 (patch)
treecf58242500fe30c94dc0f2b34cfcb1180ebfdb75 /crawl-ref/source/ray.cc
parentb81b08f9aa02afd4a8195bf8d8b846b7de0788cd (diff)
downloadcrawl-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.cc11
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);