From d307234efb1e687bfac06d48b01eb56d748e8510 Mon Sep 17 00:00:00 2001 From: Paweł Redman Date: Thu, 12 Apr 2018 21:12:28 +0200 Subject: Refactor trace calls and remove the debug crap from the previous commit. --- src/world.cpp | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'src/world.cpp') diff --git a/src/world.cpp b/src/world.cpp index b03105e..05519f0 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -389,7 +389,18 @@ out_no_hit: return res; } -trace_t world_t::trace(v2f_t start, v2f_t end, cflags_t cflags) + +trace_t world_t::ray_v_ents(v2f_t start, v2f_t end, cflags_t cflags, + world::entity_t *ignore) +{ + // TODO + trace_t res; + res.hit = false; + return res; +} + + +trace_t world_t::ray_v_tiles(v2f_t start, v2f_t end, cflags_t cflags) { v2f_t x, dx; size_t quad; @@ -414,6 +425,7 @@ trace_t world_t::trace(v2f_t start, v2f_t end, cflags_t cflags) while (1) { v2f_t mod, P; tile_index_t index; + tile_t *tile; if (x[0] >= end[0] && x[1] >= end[1]) { res.hit = false; @@ -424,11 +436,13 @@ trace_t world_t::trace(v2f_t start, v2f_t end, cflags_t cflags) index = (tile_index_t(x.floor()) ^ transforms_index[quad]) + offsets_index[quad]; + tile = get_tile(index, SECTOR_FULL); - if (tiles[get_tile(index, SECTOR_FULL)->type] & cflags) { + if (tiles[tile->type] & cflags) { res.hit = true; res.end = x ^ transforms[quad]; res.frac = (x - start).len() / (end - start).len(); + res.tile = tile; return res; } @@ -452,6 +466,21 @@ trace_t world_t::trace(v2f_t start, v2f_t end, cflags_t cflags) } } +trace_t world_t::ray_v_all(v2f_t start, v2f_t end, cflags_t cflags, + world::entity_t *ignore) +{ + trace_t v_tiles, v_ents; + + v_tiles = ray_v_tiles(start, end, cflags); + v_ents = ray_v_ents(start, end, cflags, ignore); + + if (v_tiles.frac < v_ents.frac) + return v_tiles; + else + return v_ents; +} + + entity_t::entity_t(int type_) { type = type_; -- cgit