From e8b487b0d2c1dc622256b89642ac291632f101fc Mon Sep 17 00:00:00 2001 From: Paweł Redman Date: Fri, 20 Apr 2018 13:08:58 +0200 Subject: More improvements to shooting. --- src/world.cpp | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'src/world.cpp') 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]; -- cgit