#include "AppHdr.h"
#include "los.h"
#include <cmath>
#include <algorithm>
#include "areas.h"
#include "bitary.h"
#include "coord.h"
#include "coord-circle.h"
#include "coordit.h"
#include "debug.h"
#include "externs.h"
#include "geom2d.h"
#include "losglobal.h"
#include "losparam.h"
#include "player.h"
#include "ray.h"
#include "stuff.h"
#include "env.h"
#include "terrain.h"
Classes | |
class | quadrant_iterator |
struct | los_ray |
struct | cellray |
struct | opacity_trans |
struct | los_param_funcs |
Defines | |
#define | LOS_MAX_ANGLE (2*LOS_MAX_RANGE-2) |
#define | LOS_INTERCEPT_MULT (2) |
Typedefs | |
typedef FixedArray< bit_array *, LOS_MAX_RANGE+1, LOS_MAX_RANGE+1 > | blockrays_t |
Enumerations | |
enum | compare_type { C_SUBRAY, C_SUPERRAY, C_NEITHER } |
Functions | |
void | clear_rays_on_exit () |
void | set_los_radius (int r) |
int | get_los_radius_sq () |
bool | double_is_zero (const double x) |
bool | complexity_lt (const std::pair< int, int > &lhs, const std::pair< int, int > &rhs) |
bool | find_ray (const coord_def &source, const coord_def &target, ray_def &ray, const opacity_func &opc, const circle_def &bds, bool cycle) |
bool | exists_ray (const coord_def &source, const coord_def &target, const opacity_func &opc, const circle_def &bds) |
dungeon_feature_type | ray_blocker (const coord_def &source, const coord_def &target) |
void | fallback_ray (const coord_def &source, const coord_def &target, ray_def &ray) |
int | num_feats_between (const coord_def &source, const coord_def &target, dungeon_feature_type min_feat, dungeon_feature_type max_feat, bool exclude_endpoints, bool just_check) |
bool | cell_see_cell (const coord_def &p1, const coord_def &p2) |
void | losight (los_grid &sh, const los_param &dat) |
void | losight (los_grid &sh, const coord_def ¢er, const opacity_func &opc, const circle_def &bounds) |
void | los_actor_moved (const actor *act, const coord_def &oldpos) |
void | los_monster_died (const monster *mon) |
void | los_terrain_changed (const coord_def &p) |
void | los_cloud_changed (const coord_def &p) |
void | los_changed () |
Variables | |
const circle_def | bds_precalc = circle_def(LOS_MAX_RANGE, C_ROUND) |
std::vector< los_ray > | fullrays |
std::vector< coord_def > | ray_coords |
std::vector< coord_def > | cellray_ends |
blockrays_t | blockrays |
FixedArray< std::vector < cellray >, LOS_MAX_RANGE+1, LOS_MAX_RANGE+1 > | min_cellrays |
bit_array * | dead_rays = NULL |
bit_array * | smoke_rays = NULL |
int | _los_radius_sq = LOS_RADIUS_SQ |
#define LOS_INTERCEPT_MULT (2) |
#define LOS_MAX_ANGLE (2*LOS_MAX_RANGE-2) |
typedef FixedArray<bit_array*, LOS_MAX_RANGE+1, LOS_MAX_RANGE+1> blockrays_t |
enum compare_type |
void clear_rays_on_exit | ( | ) |
bool complexity_lt | ( | const std::pair< int, int > & | lhs, | |
const std::pair< int, int > & | rhs | |||
) |
bool double_is_zero | ( | const double | x | ) |
bool exists_ray | ( | const coord_def & | source, | |
const coord_def & | target, | |||
const opacity_func & | opc, | |||
const circle_def & | bds | |||
) |
bool find_ray | ( | const coord_def & | source, | |
const coord_def & | target, | |||
ray_def & | ray, | |||
const opacity_func & | opc, | |||
const circle_def & | bds, | |||
bool | cycle | |||
) |
int get_los_radius_sq | ( | ) |
void los_changed | ( | ) |
void los_cloud_changed | ( | const coord_def & | p | ) |
void los_monster_died | ( | const monster * | mon | ) |
void los_terrain_changed | ( | const coord_def & | p | ) |
void losight | ( | los_grid & | sh, | |
const coord_def & | center, | |||
const opacity_func & | opc, | |||
const circle_def & | bounds | |||
) |
int num_feats_between | ( | const coord_def & | source, | |
const coord_def & | target, | |||
dungeon_feature_type | min_feat, | |||
dungeon_feature_type | max_feat, | |||
bool | exclude_endpoints, | |||
bool | just_check | |||
) |
dungeon_feature_type ray_blocker | ( | const coord_def & | source, | |
const coord_def & | target | |||
) |
void set_los_radius | ( | int | r | ) |
int _los_radius_sq = LOS_RADIUS_SQ |
const circle_def bds_precalc = circle_def(LOS_MAX_RANGE, C_ROUND) |
std::vector<coord_def> cellray_ends |
FixedArray<std::vector<cellray>, LOS_MAX_RANGE+1, LOS_MAX_RANGE+1> min_cellrays |
std::vector<coord_def> ray_coords |
bit_array* smoke_rays = NULL |