1 /* Emacs style mode select -*- C++ -*-
2 *-----------------------------------------------------------------------------
5 * PrBoom a Doom port merged with LxDoom and LSDLDoom
6 * based on BOOM, a modified and improved DOOM engine
7 * Copyright (C) 1999 by
8 * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman
9 * Copyright (C) 1999-2000 by
10 * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, write to the Free Software
24 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
28 * Map utility functions
30 *-----------------------------------------------------------------------------*/
37 /* mapblocks are used to check movement against lines and things */
38 #define MAPBLOCKUNITS 128
39 #define MAPBLOCKSIZE (MAPBLOCKUNITS*FRACUNIT)
40 #define MAPBLOCKSHIFT (FRACBITS+7)
41 #define MAPBMASK (MAPBLOCKSIZE-1)
42 #define MAPBTOFRAC (MAPBLOCKSHIFT-FRACBITS)
45 #define PT_ADDTHINGS 2
56 fixed_t frac
; /* along trace line */
64 typedef boolean (*traverser_t
)(intercept_t
*in
);
68 fixed_t CONSTFUNC
P_AproxDistance (fixed_t dx
, fixed_t dy
);
69 int CONSTFUNC
P_PointOnLineSide (fixed_t x
, fixed_t y
, const line_t
*line
);
70 int CONSTFUNC
P_PointOnDivlineSide (fixed_t x
, fixed_t y
,
71 const divline_t
*line
);
72 int CONSTFUNC
P_BoxOnLineSide (const fixed_t
*tmbox
, const line_t
*ld
);
73 fixed_t CONSTFUNC
P_InterceptVector (const divline_t
*v2
, const divline_t
*v1
);
75 void P_MakeDivline (const line_t
*li
, divline_t
*dl
);
76 void P_LineOpening (const line_t
*linedef
);
77 void P_UnsetThingPosition(mobj_t
*thing
);
78 void P_SetThingPosition(mobj_t
*thing
);
79 boolean
P_BlockLinesIterator (int x
, int y
, boolean
func(line_t
*));
80 boolean
P_BlockThingsIterator(int x
, int y
, boolean
func(mobj_t
*));
81 boolean CONSTFUNC
ThingIsOnLine(const mobj_t
*t
, const line_t
*l
); /* killough 3/15/98 */
82 boolean
P_PathTraverse(fixed_t x1
, fixed_t y1
, fixed_t x2
, fixed_t y2
,
83 int flags
, boolean
trav(intercept_t
*));
85 extern fixed_t opentop
;
86 extern fixed_t openbottom
;
87 extern fixed_t openrange
;
88 extern fixed_t lowfloor
;
89 extern divline_t trace
;
91 #endif /* __P_MAPUTL__ */