Commit Graph

1165 Commits

Author SHA1 Message Date
Eric Wasylishen 06a116670b winding_t: make non-copyable 2022-08-12 02:06:23 -06:00
Jonathan 8b9c1bd784 fix missing includes 2022-08-12 02:42:52 -04:00
Jonathan ea38e5eeb7 fix missing move
fix clip_back causing extra copies
2022-08-12 02:03:00 -04:00
Jonathan bf162c7a86 allow explicit calling of percent_clock so it can be simplified a bit
add more timers in a few spots
by default, display percent timers but don't display elapsed for non-verbose stuff (bmodels); this is so it still shows that it's "working" instead of just showing blank for large maps, give user an idea on progress for certain stuff
merge all "side not found"s into a single line
time `FillOutside`
time `ProcessMapBrushes`
time `Brush_LoadEntity`
2022-08-12 01:30:04 -04:00
Jonathan 4bf2ab338c allowing logging::percent to handle indeterminate values
fix logging::percent getting stomped in multi-threaded operations
add new stats facility to make creating lists of single-use stats easier to manage
fix SplitBrush storing a bunch of extra stats for ChopBrushes
2022-08-11 20:33:12 -04:00
Eric Wasylishen afc8d74873 build fix 2022-08-10 23:59:02 -06:00
Jonathan 0db1e0fc01 add chop control to settings
only chop if desired or if hull is -1 or > 0 since those can be chopped without affecting visuals
farewell, shared_lock
fix brush contents issue
2022-08-11 00:27:28 -04:00
Jonathan 4b4a1738fd more partial revert 2022-08-10 23:06:37 -04:00
Jonathan 02e80645e6 partial revert of 097b564cc6 2022-08-10 22:43:42 -04:00
Jonathan eb7c65362c fix typo
assume non-sourced sides are non-visible
2022-08-10 22:27:40 -04:00
Jonathan 6ab037b03a implement ChopBrushes 2022-08-10 22:12:23 -04:00
Jonathan 097b564cc6 remove bspbrush_t::original; it is no longer required since mapbrush_t is what the output is being written to
use some explicit types (bspbrush_t::ptr for pointer, bspbrush_t::container for container of pointers, and bspbrush_t::make_ptr to create one) so that we can swap it out with different pointers easier later
swap out bspbrush_t::ptr from unique_ptr to shared_ptr; it's not important yet, but it does not increase compilation time and will allow us to pass things to functions like SplitBrush without destroying the original as long as we still have a reference to it somewhere (important for ChopBrushes)
add get_positive_plane to mapface_t
instead of creating a whole copy of the bspbrush_t list, BrushBSP now just creates copies of the shared_ptrs which are then filtered down the tree; the originals are never modified by SplitBrushList and friends, only split into new brushes, so this is safe from what I can tell
portals now directly reference the mapface_ts
original_brushes now directly reference the mapbrush_ts
early exit in `BrushBSP` if brush list is empty (moved to top)
2022-08-10 16:02:16 -04:00
Jonathan faf9173f10 remove file_order; we can infer this from the pointers now
remove unnecessary early microbrush check, use microbrush option value on later one
2022-08-10 02:22:32 -04:00
Jonathan bca6bda7c3 move `visible` to mapface_t since we only need to store one boolean for it 2022-08-10 01:29:34 -04:00
Jonathan 74dcb1454e remove mapface_t::visible, it's unused 2022-08-10 00:55:10 -04:00
Jonathan 834838ed72 move lmshift to mapface_t
store original mapface_t that a face_t was generated from
2022-08-10 00:53:58 -04:00
Jonathan 70f015a36c move func_areaportal and lmshift from bspbrush_t to mapbrush_t 2022-08-10 00:48:55 -04:00
Jonathan c0cec4e1ba Rewrite of 697e3325f8 2022-08-10 00:11:17 -04:00
Jonathan 44eff2d7b1 throw in percent logging for MakeTreePortals
when node_t converts to leaf, destroy anything on it by re-initializing it
2022-08-09 20:33:49 -04:00
Jonathan d6411cef01 remove AssertNoPortals - it's impossible for it to ever hit, and it's kind of expensive (~150ms for 60k portals) 2022-08-09 19:22:42 -04:00
Jonathan 697e3325f8 go back to vector for brush lists 2022-08-09 16:00:51 -04:00
Eric Wasylishen 55bdc88f9d polylib: use tbb::scalable_allocator for winding std::vector storage 2022-08-09 00:23:43 -06:00
Eric Wasylishen 30b529b70f qbsp: keep a pool of node_t's in tree_t in a tbb::concurrent_vector
rather than using std::unique_ptr recursively in nodes
2022-08-08 23:43:36 -06:00
Jonathan 189f70ca30 add in-place versions of union and expand to help with inlining 2022-08-08 22:43:10 -04:00
Jonathan 1c6b2e5a95 fix duplicate plane test 2022-08-08 21:27:42 -04:00
Jonathan 426668701e clip_back/clip_front to match ChopWindingInPlace
simplify constructors for winding heap
use std::vector again for mapentity_t since it's being copied because of the std::list
2022-08-08 21:08:27 -04:00
Jonathan 8b7a1c21c9 use vector instead of raw heap for winding_storage_heap_t 2022-08-08 20:09:41 -04:00
Jonathan 5b56ecfb28 remove extraneous warnings when they don't matter 2022-08-08 16:01:16 -04:00
Jonathan b3fbf8841d allow update_bounds to tell the caller that a brush may have been destroyed 2022-08-08 15:50:23 -04:00
Jonathan 2abdeb2616 remove Face_Plane since we can directly access the real plane now
speed up CreateBrushWindings slightly since we know where the inverted plane is stored
2022-08-08 01:06:50 -04:00
Jonathan f490878e97 remove old plane lock stuff
use spatial hash for planes
2022-08-08 00:58:56 -04:00
Jonathan 6787e60e14 Merge branch 'brushbsp-plane3-bevel' of https://github.com/ericwa/ericw-tools into brushbsp-plane3-bevel
# Conflicts:
#	include/qbsp/map.hh
2022-08-08 00:40:09 -04:00
Jonathan f5ef0f90f4 spatial hash using pareto for vertex positions 2022-08-08 00:39:53 -04:00
Eric Wasylishen 3ca9d23f1c qbsp: rewrite plane_hash to fix test failure on macOS 2022-08-07 21:19:31 -06:00
Jonathan d9a3abfba7 remove blocksize now that midplane is working
don't re-fetch plane being exported since we know its id already
2022-08-07 21:48:22 -04:00
Eric Wasylishen 12abfb93cf qbsp: add fmt formatters for aabb_t, plane_type_t, qplane3, qbsp_plane_t 2022-08-07 16:58:52 -06:00
Jonathan 4ec30e02a2 remove "brushes" from mapentity_t - it is now local to the ProcessEntity process
"node_t::original_brushes" is now only used during construction and cleared on Prune; original_mapbrushes is used to track the map brushes on nodes post-construction
calculate and cache contents on mapbrush_t
2022-08-06 19:28:17 -04:00
Jonathan 335db1c0e4 move map_source_location to parser as parser_source_location since the locations actually come from there rather than from the map; now the parser keeps track of the location, so it's a bit easier to follow 2022-08-05 23:17:15 -04:00
Jonathan a1faa97f3f fix aabb::contains 2022-08-05 06:58:29 -04:00
Jonathan 627428756c track a shared pointer for `map_source_location` instead of memory pointer, so that we can allocate it as we go
use it for brushes and faces
2022-08-04 15:37:37 -04:00
Jonathan 9af74ce083 store linenum on mapbrush_t; add new location type, but not using it yet, for later so we can track more complex locations (external/-add maps, etc)
add extra sanity checking to polylib
adjust some warnings to be clearer and not indicate that the world will break
add sanity check to update_bounds, and don't add empty windings to the bounds
2022-08-04 12:05:04 -04:00
Jonathan c9eab719bc remove old code
add visible on mapface_t although it's unused
2022-08-03 13:26:04 -04:00
Jonathan ec62a0e8d0 move in the rest of the missing code back into LoadBrush
fix bug with c_brushesremoved brushes
move & CreateBrushWindings use where required
store the source face we made a bspbrush_t side from
fix test issue
2022-08-03 12:35:47 -04:00
Jonathan 98610982c9 export the final dbrush_t right in ExportBrushList_r instead of doing it ahead of time 2022-08-03 05:09:39 -04:00
Jonathan 58d1e5230e remove hullbrush_t; just directly work via the bspbrush_t since we have the bevels pre-calculated in mapbrush_t
track the mapbrush we were created from in bspbrush_t; we use this later for outputting the collision brush for q2bsp. bevels are busted though..
2022-08-03 04:47:50 -04:00
Jonathan 24168c8e40 clang pass 2022-08-02 21:57:33 -04:00
Jonathan 5f35575c02 remove map.faces and map.brushes; now, brushes are stored inline in mapentity_t, and faces are stored inline in mapbrush_t
calculate brush bounds (and winding) and add bevels after all of the rest of the map has loaded, so that it has proper world extents
calculate world extents right after the map is loaded
2022-08-02 20:59:08 -04:00
Jonathan 9ca28dff61 bevel 2022-08-02 19:48:17 -04:00
Jonathan e14c2772a6 add ability for winding storages to reserve memory (for clip mainly, so it doesn't need to allocate on each addition; we know the winding will have at least the input number of points) 2022-08-02 18:10:20 -04:00
Jonathan 4c6d952841 plane hashing 2022-08-02 17:44:14 -04:00