ref: 35fc4078cabb6cb183b38e693a560b67681c061d
parent: 44ccf1e555176bdfe47f69b95707feb9a47c2262
author: Andrew Apted <ajapted@gmail.com>
date: Fri Dec 8 18:37:19 EST 2023
implemented the creation of segs from a linedef.
--- a/nano_bsp.c
+++ b/nano_bsp.c
@@ -44,6 +44,13 @@
// #define DIST_EPSILON (1.0 / 256.0)
+vertex_t * BSP_NewVertex (void)
+{+ vertex_t * vert = Z_Malloc(sizeof(vertex_t), PU_LEVEL, NULL);
+ return vert;
+}
+
+
seg_t * BSP_NewSeg (void)
{seg_t * seg = Z_Malloc (sizeof(seg_t), PU_LEVEL, NULL);
@@ -58,9 +65,27 @@
{line_t * ld = &lines[i];
- // TODO
+ if (ld->sidenum[side] < 0)
+ return;
- // if (side == 1 && ld->
+ // create the seg
+ seg_t * seg = BSP_NewSeg ();
+
+ seg->v1 = side ? ld->v2 : ld->v1;
+ seg->v2 = side ? ld->v1 : ld->v2;
+
+ seg->offset = 0;
+ seg->angle = R_PointToAngle2 (seg->v1->x, seg->v1->y, seg->v2->x, seg->v2->y);
+
+ seg->sidedef = &sides[ld->sidenum[side]];
+ seg->linedef = ld;
+
+ seg->frontsector = side ? ld->backsector : ld->frontsector;
+ seg->backsector = side ? ld->frontsector : ld->backsector;
+
+ // link into the list
+ seg->next = (*list_var);
+ (*list_var) = seg;
}
--
⑨