diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2009-10-16 11:00:40 +0200 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2009-10-16 16:09:28 +0200 |
commit | 0a624bcd948148817226c9585db7ce16bf5cb599 (patch) | |
tree | 4776ca7d42aae270582e779e8568ec3bb8c12efe /crawl-ref/source/ray.cc | |
parent | 8ba1550e401b3b67a046e2173b4143c8f51bd933 (diff) | |
download | crawl-ref-0a624bcd948148817226c9585db7ce16bf5cb599.tar.gz crawl-ref-0a624bcd948148817226c9585db7ce16bf5cb599.zip |
Rewrite find_ray to use precomputed cellrays.
During precomputation, we store the minimal cellrays by target
and sort them according to niceness.
find_ray now simply picks the first non-blocked ray to a
target, which means looping through the 10 or so minimal
cellrays with that target -- this should be a lot more
efficient. (An extended findray test went from 150s to 40s
(debug) and 40s to 26s (profile)).
The interface to find_ray has changed: cycle_dir=-1,0,1 was
changed to cyle=false/true since we never cycle in the other
direction anyway. find_shortest was removed: all rays to a
target had the same length all along, but now we also return
the straightest one automatically.
The change also eliminates the duplicate corner-cutting code
between ray_def::advance and find_ray as imbalance calculation
now relies on ray_def::advance.
Diffstat (limited to 'crawl-ref/source/ray.cc')
-rw-r--r-- | crawl-ref/source/ray.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/crawl-ref/source/ray.cc b/crawl-ref/source/ray.cc index 50195ed2bc..4beb6bed92 100644 --- a/crawl-ref/source/ray.cc +++ b/crawl-ref/source/ray.cc @@ -19,7 +19,7 @@ static int ifloor(double d) } ray_def::ray_def(double ax, double ay, double s, int qx, int qy, int idx) - : accx(ax), accy(ay), slope(s), quadx(qx), quady(qy), fullray_idx(idx) + : accx(ax), accy(ay), slope(s), quadx(qx), quady(qy), cycle_idx(idx) { } |