A Door That Was In The Map The Whole Time
BSP entities routed through the same handler registry as .map files, func_door with inline brush models, and freefly collision against clip brushes.
One Registry, Two File Formats
BSP entities now go through the same EntityHandlerRegistry as .map files, via processBspEntities() in MapLoader and a new BspEntityHandlers.ts.
func_door
Brush-model meshes come from BSP inline models (*N). Three details that are easy to get wrong and were:
- Triangle indices from `meshVerts`, not a triangle fan.
- Lightmaps via
RawTexturefrom the BSP's raw RGB, with UV2 coords. - Movement direction from the
anglekey:-1up,-2down, otherwise degrees
horizontally.
Doors group by targetname and share a controller. Tested on the wdm17 tech door.
bsp door list | open <name> | close <name> | toggle <name>Travel distance is brush size minus a lip, default 8.
Freefly Collision
Combines Babylon mesh collision with BSP clip brushes (fullclip, playerclip). FBSP brushside parsing was fixed — a 12-byte RBSP struct.
Three new debug commands, and they are unusually specific: freefly_collision clipviz, clipdump and cliptrace [dist] [radius] [height].
Compatible with both IBSP (Q3) and FBSP (Warsow).
Known Issues: none stated.