home *** CD-ROM | disk | FTP | other *** search
/ Doom I/II Collection / DM12.ISO / edit / doombsp / doombsp.h < prev    next >
Text File  |  1994-04-06  |  4KB  |  204 lines

  1. // doombsp.h
  2.  
  3. #import <appkit/appkit.h>
  4. #import <math.h>
  5. #import "cmdlib.h"
  6. #import "Wadfile.h"
  7. #include "DoomData.h"
  8.  
  9. #define    SHORT(x)    NXSwapLittleShortToHost((short)x)
  10. #define    LONG(x)        NXSwapLittleLongToHost((long)x)
  11.  
  12. #define PI    3.141592657
  13.  
  14. /*
  15. ===============================================================================
  16.  
  17.                             map file types
  18.  
  19. ===============================================================================
  20. */
  21.  
  22. typedef struct
  23. {
  24.     int            floorheight, ceilingheight;
  25.     char         floorflat[9], ceilingflat[9];
  26.     int            lightlevel;
  27.     int            special, tag;    
  28. } sectordef_t;
  29.  
  30. typedef struct
  31. {
  32.     int            firstrow;    
  33.     int            firstcollumn;
  34.     char        toptexture[9];
  35.     char        bottomtexture[9];
  36.     char        midtexture[9];
  37.     sectordef_t    sectordef;            // on the viewer's side
  38.     int            sector;                // only used when saving doom map
  39. } worldside_t;
  40.  
  41. typedef struct
  42. {
  43.     NXPoint        p1, p2;
  44.     int            special, tag;
  45.     int            flags;    
  46.     worldside_t    side[2];
  47. } worldline_t;
  48.  
  49. #define    ML_BLOCKMOVE    1
  50. #define    ML_TWOSIDED        4    // backside will not be present at all if not two sided
  51.  
  52. typedef struct
  53. {
  54.     NXPoint        origin;
  55.     int            angle;
  56.     int            type;
  57.     int            options;
  58.     int            area;
  59. } worldthing_t;
  60.  
  61. /*
  62. ===============================================================================
  63.  
  64.                             internal types
  65.  
  66. ===============================================================================
  67. */
  68.  
  69. typedef    struct
  70. {
  71.     NXPoint    pt;
  72.     float    dx,dy;
  73. }divline_t;
  74.  
  75. typedef struct bspstruct_s
  76. {
  77.     id                        lines_i;        // if non NULL, the node is
  78.     divline_t                divline;        // terminal and has no children
  79.     float                    bbox[4];
  80.     struct    bspstruct_s        *side[2];
  81. } bspnode_t;
  82.  
  83.  
  84. typedef struct
  85. {
  86.     NXPoint        p1, p2;
  87.     int            linedef, side, offset;
  88.     boolean        grouped;                // internal error check
  89. } line_t;
  90.  
  91.  
  92. /*
  93. ===============================================================================
  94.  
  95.                                 doombsp
  96.  
  97. ===============================================================================
  98. */
  99.  
  100. extern    id            wad_i;
  101. extern    boolean        draw;
  102.  
  103.  
  104. /*
  105. ===============================================================================
  106.  
  107.                                 doomload
  108.  
  109. ===============================================================================
  110. */
  111.  
  112. extern    id    linestore_i, thingstore_i;
  113.  
  114. void LoadDoomMap (char *mapname);
  115.  
  116.  
  117. /*
  118. ===============================================================================
  119.  
  120.                                 drawing
  121.  
  122. ===============================================================================
  123. */
  124.  
  125. extern    id     window_i, view_i;
  126. extern    float    scale;
  127. extern    NXRect        worldbounds;
  128.  
  129. void EraseWindow (void);
  130. void DrawMap (void);
  131. void DrawLineStore (id lines_i);
  132. void DrawDivLine (divline_t *div);
  133. void DrawLineDef (maplinedef_t *ld);
  134.  
  135.  
  136. /*
  137. ===============================================================================
  138.  
  139.                                 buildbsp
  140.  
  141. ===============================================================================
  142. */
  143.  
  144. extern    int        cuts;            // number of new lines generated by BSP process
  145. extern    bspnode_t    *startnode;
  146.  
  147. void BuildBSP (void);
  148. void    DivlineFromWorldline (divline_t *d, line_t *w);
  149. int    PointOnSide (NXPoint *p, divline_t *l);
  150.  
  151.  
  152.  
  153. /*
  154. ===============================================================================
  155.  
  156.                             savebsp
  157.  
  158. ===============================================================================
  159. */
  160.  
  161. extern    id        secstore_i;
  162. extern    id        mapvertexstore_i;
  163. extern    id        subsecstore_i;
  164. extern    id        maplinestore_i;
  165. extern    id        nodestore_i;
  166. extern    id        mapthingstore_i;
  167. extern    id        ldefstore_i;
  168. extern    id        sdefstore_i;
  169.  
  170. void SaveDoomMap (void);
  171.  
  172. /*
  173. ===============================================================================
  174.  
  175.                             saveblocks
  176.  
  177. ===============================================================================
  178. */
  179.  
  180. void SaveBlocks (void);
  181.  
  182. /*
  183. ===============================================================================
  184.  
  185.                             savesectors
  186.  
  187. ===============================================================================
  188. */
  189.  
  190. void ProcessSectors (void);
  191. void BuildSectordefs (void);
  192.  
  193. /*
  194. ===============================================================================
  195.  
  196.                             saveconnect
  197.  
  198. ===============================================================================
  199. */
  200.  
  201. void ProcessConnections (void);
  202. void OutputConnections (void);
  203.  
  204.