diff options
author | Paweł Redman <pawel.redman@gmail.com> | 2018-04-20 13:08:58 +0200 |
---|---|---|
committer | Paweł Redman <pawel.redman@gmail.com> | 2018-04-20 13:08:58 +0200 |
commit | e8b487b0d2c1dc622256b89642ac291632f101fc (patch) | |
tree | 02df8baf050da52e22d9eb8ab55b45b0e242d87c /src/world.cpp | |
parent | f4fe2c7f10a8d2e253de27f1a540ca68184d5d29 (diff) |
More improvements to shooting.
Diffstat (limited to 'src/world.cpp')
-rw-r--r-- | src/world.cpp | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/src/world.cpp b/src/world.cpp index 0d96234..6688e0b 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -433,6 +433,27 @@ trace_t world_t::ray_v_ents(v2f_t start, v2f_t end, cflags_t cflags, return best; } +trace_t world_t::point_v_tiles(v2f_t at, cflags_t cflags) +{ + tile_index_t index; + tile_t *tile; + trace_t trace; + + index = tile_index_t(at.floor()); + tile = get_tile(index, SECTOR_FULL); + + if (tiles[tile->type] & cflags) { + trace.hit = true; + trace.frac = 0.0f; + trace.tile = tile; + } else { + trace.hit = false; + trace.frac = 1.0f; + } + + trace.end = at; + return trace; +} trace_t world_t::ray_v_tiles(v2f_t start, v2f_t end, cflags_t cflags) { @@ -443,12 +464,8 @@ trace_t world_t::ray_v_tiles(v2f_t start, v2f_t end, cflags_t cflags) dx = end - start; quad = quadrant(dx); - if (quad == 4) { - res.hit = false; - res.end = end; - res.frac = 1.0f; - return res; - } + if (quad == 4) + return point_v_tiles(start, cflags); start ^= transforms[quad]; dx ^= transforms[quad]; |