Commit Graph

56 Commits

Author SHA1 Message Date
Kevin Shanahan ef4e53b735 qbsp: pass hullnum into Brush_LoadEntity()
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-18 09:51:33 +10:30
Kevin Shanahan 9e4f207d3e qbsp: trivial argument rename for FreeBrushsetBrushes in header
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-17 21:37:34 +10:30
Kevin Shanahan cfde5514dd qbsp: remove comment about regenerating dplane_t->type
The on disk format is set at this stage.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-17 21:36:13 +10:30
Kevin Shanahan d152382691 qbsp: constify FindPlane plane argument
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-17 21:35:22 +10:30
Kevin Shanahan b8ffeca2c0 qbsp: encapsulate mapbrush => brush conversion data on stack
Still have the limitations of MAX_FACES, etc. but in practice it's
probably not going to be an issue.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-17 20:09:04 +10:30
Kevin Shanahan 44a22eaa38 qbsp: move global plane and miptex data into mapdata struct
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-17 17:04:03 +10:30
Kevin Shanahan d17622ab48 qbsp: constify argument to FindMiptex()
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-15 15:11:02 +10:30
Kevin Shanahan 963b14ab3a qbsp: add mapdata struct members to track numbers of items used
Future work will break the assumption that the number of used items will
be equal to the maximum number of items, so separate the two numbers.
Replace use of maxblah with numblah as appropriate.

This makes the reverse order loading or brushes, etc. look even more
painful, so will look at whether we can change that now. As far as I know
no editors do clever things that would make the map compile "better" in a
different order - it's just that it might break some previously working
maps if they were an edge case that different ordering makes the precision
flip in a non-favourable direction.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-15 14:04:18 +10:30
Kevin Shanahan 40034e28d0 qbsp: rename mapdata array members to remove rg prefix
It does make them somewhat less greppable, but makes the variable naming
style more consistent with the rest of the quake utilities.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-15 11:13:48 +10:30
Kevin Shanahan 4750c67749 qbsp: rename count members of mapdata_t
The count members are actually where we store how much memory has been
allocated for each type of item in the mapdata struct, so rename these to
indicate these are the maximum counts.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-15 10:55:30 +10:30
Kevin Shanahan 9a50342353 qbsp: similar to map.iBrushes, get rid of map.iFaces
* ParseEntity/ParseBrush now take a mapface_t argument, endface
* mapbrush_t now defines a pointer to first face and count of faces
* entity->iFaces no longer needed

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-14 21:51:11 +10:30
Kevin Shanahan f163b35932 qbsp: get rid of map.iEntities
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-14 15:17:31 +10:30
Kevin Shanahan 2f7809ddcb qbsp: pass entity pointer into PrintEntity()
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-14 14:36:07 +10:30
Kevin Shanahan 16c0dffe8c qbsp: re-organise mapentity_t structure
Instead of iBrushStart and iBrushEnd, we now store a pointer into the
mapbrush array and store the count of brushes for this entity. pBrushes
and cBrushes members are renamed to brushes and numbrushes, respectively.

The iBrushes member of mapentity_t is no longer needed.

At this stage we still go through hoops to load the brushes in reverse.
The original comment indicates that this was needed for compatibility, I
may try simplifying and loading in map file order and see if that has any
ill effects on compilation of test maps.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-14 14:03:06 +10:30
Kevin Shanahan c39d9a2dc4 qbsp: Pass entity pointer into FixRotateOrigin, don't pass in/out origin
Make the caller look up the fixed origin again if they need it rather than
always passing in/out an origin. FindTargetEntity also now returns a
pointer rather than entity number.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-14 11:36:22 +10:30
Kevin Shanahan 3bf10bef02 qbsp: pass entity pointer into key/value get/set functions
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-14 11:08:22 +10:30
Kevin Shanahan cb59bfdc63 qbsp: trivial constification of a few strings/args
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-11 20:05:30 +10:30
Kevin Shanahan a6280d8bd8 qbsp: constify return value from ValueForKey()
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-11 19:00:11 +10:30
Kevin Shanahan d691ff951a qbsp: get rid of pCurEnt
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-10 17:58:52 +10:30
Kevin Shanahan 76ba40f621 qbsp: pass entity into Export{Draw,Clip}Nodes
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-10 17:49:27 +10:30
Kevin Shanahan 6faca2fc86 qbsp: pass entity down through MakeFaceEdges()
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-10 17:28:09 +10:30
Kevin Shanahan d6bcd02e20 qbsp: pass entity into SolidBSP()
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-10 17:14:06 +10:30
Kevin Shanahan 3713c4492b qbsp: pass entity into TJunc, capitalise function name
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-10 17:09:05 +10:30
Kevin Shanahan 36360e273d qbsp: pass entity down into PortalizeWorld()
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-10 17:05:45 +10:30
Kevin Shanahan 51b6089318 qbsp: pass entity into CSGFaces()
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-10 17:01:32 +10:30
Kevin Shanahan 158c422476 qbsp: pass entity into Brush_LoadEntity()
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-10 16:56:56 +10:30
Kevin Shanahan c0430051b9 qbsp: pass brush list into FreeBrushsetBrushes
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-02-10 16:52:01 +10:30
Tyrann 3136594bc4 Create separate Error() function so it can be marked "noreturn"
Silences some false warnings from the compiler
2012-01-07 16:48:02 +10:30
Tyrann accc80ef2f [PATCH] qbsp: always fix tjunctions, remove option
Signed-off-by: Tyrann <tyrann@disenchant.net>
2007-09-23 21:04:16 +09:30
Tyrann 67981816c7 [PATCH] qbsp: Set up sphere around face for fast intersect checks
Set up a sphere around each face so we can do quick tests against planes to
see if there's any chance that it intersects the face. Since we're only using
it for a fast check, don't bother shrinking the sphere when a face gets cut or
split, just grow it when necessary (only in TryMerge AFIACT).

Signed-off-by: Tyrann <tyrann@disenchant.net>
2007-09-23 20:46:22 +09:30
Tyrann 2ed0beb1c0 [PATCH] qbsp: Tweak epsilons
The choice of the various epsilon values is critical to having geometrically
complex maps compile correctly.

The one which seems most important (so far) is the ANGLE_EPSILON. This one
needs to be quite tight to avoid "bad things" happening when you create small
angles between adjacent surfaces.

Another epsilon inter-relationship I discovered, is that it seems
CONTINUOUS_EPSILON needs to be larger than EQUAL_EPSILON. It seems to play
havoc with the t-junction code otherwise.

Signed-off-by: Tyrann <tyrann@disenchant.net>
2007-08-23 20:48:02 +09:30
Tyrann fba05c351a [PATCH] qbsp: Increase MAX_BSP_CLIPNODES
Offsets pointing to clipnodes were originally used as signed short (16-bit)
numbers, so that negative numbers could represent the various content types of
leaf nodes. However, only a small number of these types are required, so we
now make use of the rest of the clipnode range.

Signed-off-by: Tyrann <tyrann@disenchant.net>
2007-08-23 20:48:02 +09:30
Tyrann d5f000838f [PATCH] qbsp: Remove big mapentity_t union
Remove the big union in mapentity_t, collecting together the information for
each lump in a struct. Still not 100% sure where I'm going with this, but I
think this will help me with removing some of the reliance on globals further
along (which will be important once it comes to multi-threading).

Signed-off-by: Tyrann <tyrann@disenchant.net>
2007-08-21 23:18:56 +09:30
Tyrann 01bda0c407 [PATCH] qbsp: Use hash in FindPlane
Use a hash to speed up FindPlane for maps that have huge numbers of
planes. Not many maps have enough planes that this is a win, but those maps
are the ones where speed matters most. :)

Signed-off-by: Tyrann <tyrann@disenchant.net>
2007-08-20 21:21:17 +09:30
Tyrann de9f49f954 [PATCH] qbsp: Add missing float.h include from last patch
Signed-off-by: Tyrann <tyrann@disenchant.net>
2007-08-20 15:05:37 +09:30
Tyrann 1465e15bea [PATCH] qbsp: Use real int/float/double limits
Instead of just assuming that 9999 or similar is "big enough", use the
implementation defined type limits.

Signed-off-by: Tyrann <tyrann@disenchant.net>
2007-08-19 20:17:23 +09:30
Tyrann 6add073624 [PATCH] qbsp: implement sloping cuts for DivideNodeBounds
Signed-off-by: Tyrann <tyrann@disenchant.net>
2007-08-19 20:17:23 +09:30
Tyrann 165055db7b [PATCH] qbsp: Add -wadpath option
Add the "-wadpath" command-line argument to allow the user to specify a
directory where wad files can be found. If no wadpath is given, the path
defaults to the directory where the map file is located. Absolute path names
in the worldspawn "wad" key should also work.

Signed-off-by: Tyrann <tyrann@disenchant.net>
2007-08-19 05:32:46 +09:30
Tyrann c2084c0885 [PATCH] qbsp: Replace hard coded epsilons with defines
Fix numerous places where epsilons have been hard-coded, substituting one of
the defines from qbsp.h.

A couple of epsilons have actually been changed in this patch; the one used to
detect degenerate QuArK texture coordinates has been loosened (so the test is
actually a little more strict). The other is the test for flipped portals. If
my understanding is correct, then result would actually be < 0 if the portal
winding normal flipped, so this change _should_ be harmless.

Signed-off-by: Tyrann <tyrann@disenchant.net>
2006-10-09 22:52:02 +09:30
Tyrann b7f84130de [PATCH] qbsp: Collect all epsilons together in qbsp.h
Signed-off-by: Tyrann <tyrann@disenchant.net>
2006-10-09 22:52:02 +09:30
Tyrann 118916b825 [PATCH] qbsp: Refactor some winding clip/split code
Each of ClipWinding, DivideWinding and SplitFace need to calculate on which
side of the split plane each winding point lies. Split this operation out into
a shared function.

Signed-off-by: Tyrann <tyrann@disenchant.net>
2006-10-02 19:46:43 +09:30
Tyrann fa7e4c9671 [PATCH] qbsp: Use winding_t for face_t's winding
Rather than using it's own type of winding, make face_t use the existing
winding_t struct to define it's edges. I tried dynamically allocating the
winding as needed, but it was a net performance loss (though much better for
memory usage). For now we'll just embed a winding_t struct inside face_t
instead.

Signed-off-by: Tyrann <tyrann@disenchant.net>
2006-10-02 19:46:35 +09:30
Tyrann 50f526d44c [PATCH] qbsp: Constify VectorXX functions
Specify const where applicable in the VectorXX functions. This fixes a
compiler warning introduced in the last patch.

Signed-off-by: Tyrann <tyrann@disenchant.net>
2006-09-16 19:37:48 +09:30
Tyrann b38a84b657 [PATCH 14/15] qbsp: util.c statics
Make needlessly global functions/variables static.
Move 'extern' declarations to qbsp.h.
Don't compile unused FreeAllMem function.

Signed-off-by: Tyrann <tyrann@disenchant.net>
2006-09-10 22:46:02 +09:30
Tyrann 0a230cc79d [PATCH 09/15] qbsp: portals.c statics
Make needlessly global functions/variables static.
Move some checking functions inside an #ifdef PARANOID section.

Signed-off-by: Tyrann <tyrann@disenchant.net>
2006-09-10 22:45:59 +09:30
Tyrann 950b163181 [PATCH 05/15] qbsp: map.c statics
Signed-off-by: Tyrann <tyrann@disenchant.net>
2006-09-10 22:45:57 +09:30
Tyrann 5e29db5df0 [PATCH 03/15] qbsp: cmdlib.c statics
Make needlessly global functions/variables static.
Remove unused functions Q_getwd, DefaultPath and StripFilename.
Remove unused CRC functions.

Signed-off-by: Tyrann <tyrann@disenchant.net>
2006-09-10 22:45:56 +09:30
Tyrann 85b459931a [PATCH 01/15] qbsp: brush.c statics
Make needlessly global functions/variables static.
Remove the unused function PlaneTypeForNormal.

Signed-off-by: Tyrann <tyrann@disenchant.net>
2006-09-10 22:45:55 +09:30
Tyrann 099e22f733 [PATCH 7/9] qbsp: Replace C++ consts with defines
Replace three "const" declarations in qbsp.h with #defines to prevent multiple
definitions being compiled in when compiling as C code.

Signed-off-by: Tyrann <tyrann@disenchant.net>
2006-09-10 17:38:33 +09:30
Tyrann 293efefa26 [PATCH 4/9] qbsp: Remove default arguments from {Alloc,Free}Mem
More C++ removal. Just pass the default arguments explicitly.

Signed-off-by: Tyrann <tyrann@disenchant.net>
2006-09-10 17:38:32 +09:30