3.2.54 - 8/21/2021
[ Download quakeed3.2.54.zip ]
- quakeEd3 is now 64 bit and C++17
- textures
- removed texture flushing - wads can never be partially loaded. you probably have enough memory for this in 2021
- added 'hide unused textures' filter to texture browser as a better means of keeping it organized (toggle with 'U')
- improved texture browser context menus
- add 'hide unused textures' toggle
- add 'select all matching' and 'replace all with' shortcuts per texture
- default Quake palette now hard-coded into the executable, since "load one file from the same directory the editor is in" is apparently an insurmountably impossible task for anyone's computer but mine
- added: view-contextual flipping and rotating in grid and camera displays
- F: flip left/right relative to view direction
- hold shift for up/down, or ctrl for front/back
- F no longer toggles face component mode because it was useless - access by toolbar button or menu
- ctrl-F no longer opens the 'find brush/entity by number' dialog - access by menu
- R: rotate on axis closest to view direction
- same modifiers as the toolbar buttons (ctrl for 180, shift for -90)
- press ctrl-shift-R for the old "arbitrary rotate" dialog if you still want to make qbsp cry
- ctrl-R no longer opens the texture replace dialog - access by menu or texture browser context menu
- auto-focuses and acts on the view currently under the cursor
- toolbar flip/rotate buttons are unchanged and still absolute to x/y/z
- improved usefulness of 'center views on selection' (\ key)
- camera view aims from old camera position rather than resetting to a hard-coded angle
- centers on entire selection, not the first brush only
- centers z-checker also
- fixed: ctrl-alt drill selection cycling works properly again
- fixed: long-standing problem with import map just hosing everything
- fixed: very slow to translate large selections containing only point entities
- fixed: bad (white) texture behavior after adding a wad with textures missing from the current map
- fixed: edit>copy text being full of comment labels for entities that were not copied
- fixed: checkmarks in toolbar menu offset by one index
- fixed: light color being displayed when 0-1 but not 0-255
3.2.53 - 5/16/2021
[ Download quakeed3.2.53.zip ]
- upgraded to msvc2019 by muting all the new warnings wooo
- first run & config window fixes (thx echo)
- config saves to disk on Apply now, not just on program quit
- you are no longer intentionally locked in the dialog when a problem with the config is found (instead you are firmly warned but treated like an adult)
- having no autosave map specified is not considered a problem if Autosave is disabled
- clarified that a default wad isn't necessary
- fixed: stupid catch-22 where you couldn't apply project settings if you also changed the quake path because it hadn't applied the quake path yet :(
- fixed: the first run "please find quake" dialog now closes the splash screen, so you can actually see it
- fixed: color settings changes not taking effect until the dialog is closed and something is moved
- texture wad loading
- finally removed stupid menu of every wad you own, replaced with a sane file open dialog
- allows for wads that are relative to the specified wads directory, not just in it
- loading a wad will prompt if you'd like it added to the worldspawn wad key ~automagically~
- paths are currently always relative to the wads dir by default
- added nudge
- alt+arrows will nudge the selection by one grid increment in the focused view
- works in the camera, grid, and z-check windows, and is view-relative like all other operations
- multiple successive nudges are combined into one undo step, similar to texture adjustments
- holding space to clone-nudge works, sort of, if you press space before alt (bc alt+space opens the titlebar icon menu in windows)
- added ericw-qbsp func_detail_* and misc_external_map entities to bundled quake.def
- fixed: "Set Region to XY" using bad bounds
- fixed: pasting map data with a comment on the first line not working
- fixed: map import stupidly doing nothing if none of the boxes were checked in the import options. actual map import still otherwise very broken
3.2.52 - 4/25/2021
[ Download quakeed3.2.52.zip ]
- Q key now toggles brush size info display like some GTKRadiants do (thx echo for suggestion)
- splash screen closes itself when QE3 is done loading, so now it's a loading screen (thx fw for suggestion)
- clip tool
- selects axis in a less wonky, hopefully more intuitive fashion when only 2 points are placed in the 3D view
- shows the outline of the geometry being clipped away in the 3D view to aid in placing new points on invisible geometry
- project settings dialog
- doesn't get mad if there's no quake.exe in the specified quake dir, since some of you scary gen Z mappers don't even have an original quake.exe anymore (thx fw)
- checks for id1/pak0.pak in both lowercase and allcaps before getting mad, in case of linux
- removed dead BSP menu until there's an in-editor compiler again
- removed dead Benchmark item from Window menu
- fixed: that V/E/F manip crash everyone who tried out QE3 for the last year got immediately :(
- fixed: geo manip not working in XZ view
- fixed: being able to assign textures to point entities again
- fixed: doubleclick expand select stealing next input from another window
- fixed: obvious crash when shifting, scaling, or rotating texture with no selection
- fixed: textures menu showing F as the shortcut for Flush Textures (F toggles face manip mode since build 31)
3.2.51 - 4/1/2020
[ Download quakeed3.2.51.zip ]
- the grid view now zooms toward/away from the cursor when it's over the window (mousewheel or ctrl-rmb)
- preferences dialog checks for mistakes better - it will pop an error and decline to close unless:
- you correctly specified a quake folder that has quake installed in it (checks for quake.exe or id1/pak0.pak)
- any wad exists in the specified texture dir
- the file/files specified for entity defs can be found
- the path for the autosave map is a filename and not just a directory
- toolbar
- fixed: wrong offsets
- fixed: band toggle status is finally saved across sessions. their position still isn't, and frankly I cannot care less because every second I spend debugging arcane win32 shit is time spent not moving qe3 away from win32
- moved view filter dropdown button to an appropriate part of the toolbar, amongst the other view buttons
- moved the buttons for the three inspectors, map info, entity info, and preferences into one new toolbar band for you to turn off
- cubic clipping
- fixed: toolbar toggle button not reflecting correct state on startup
- "zoom in" and "zoom out" were unhelpful as names and not even consistently used, renamed "nearer" and "farther" everywhere
- ctrl+[ is nearer, ctrl+] is farther
- toolbar icons clarified
- added a 1 pixel tolerance for opening a context menu in the grid/texture windows
- fixed: removed dead "Convex Merge" option from the grid context menu
- fixed: some bad behavior when pressing one mouse button in a window before releasing another
- fixed: box-selecting components in geotool (V/E/F) modes was inaccurate when the camera was tilted at an interesting angle
- fixed: dead extra clip point visible when enabling the clipper tool with the cursor outside the camera view
- fixed: mousewheel message location offset vertically by ~20px
- fixed: was possible with effort to jigger the three inspector window modes into separate window positions
- fixed: stupid bug where "+", "-", "\", ",", and "." inputs stopped working
- refactored View classes, no longer muddy catch-all display implementations
- input and rendering code moved from views into window and new renderer classes
- entity inspector window's caching behavior moved into an entity view class
3.2.50 - 12/17/19
[ Download quakeed3.2.50.zip ]
- fixed: wonky texture browser selection behavior with 3+ wads loaded
- fixed: crash when using the polybrush tool in a new scene with no texture wads loaded
- a lot of much overdue reorg and cleanup
- moved a lot out of the qeGlobals struct and reduced the giant superheader
- clarified win_main vs win_qe3 vs qe3.cpp
- clarified QE vs Sys namespaces, not properly encapsulated yet
- toolbar
- added button for quick access to the view>filter menu
- cylinder/cone/sphere buttons were always just 'make qbsp sad' buttons - replaced with buttons for CZG12/CZG24 cylinders
- removed texture rendering mode button, not sure why sikkpin thought users would need quick access to change between NEAREST, LINEAR, and BILINEAR
3.2.49 - 12/14/19
[ Download quakeed3.2.49.zip ]
- fixed: qe3 will now only try to save a crash map once, so a crash resulting from a data error that causes a save to crash no longer makes qe3 vomit infinite crash maps that don't work anyway
- improvements to map importing - import is now the "smart" way to add a map to your map
- can add the imported map's worldspawn keyvalues to the current map
- can merge the wad keys from both worldspawns into a unified list
- can modify target/targetname strings in the imported map to avoid collision with the current map
- these useful options presented in a dialog box on import
- new wads added by an import are now automatically loaded and old wads are reloaded, so only actually missing textures will be pink
- copy/paste will still just splat brushes and entities into the map without modification/thought
- texture loading improvements
- added: 'refresh loaded' in texture menu will reload current wads from disk, for working side by side in texmex
- wads that were flushed on load (by open or import) will remember that status and stay flushed after future imports or reloads, unless fully loaded manually in the textures menu (which clears their 'flushed' status)
- removed: rather useless 'flush all' option. you can no longer break 100% of your textures.
- fixed: funky behavior related to loading wads with common texture names stomping the wrong ones
- texture browser
- browser now shows wad name in a header above each texture group
- wads can be folded or unfolded individually by left clicking on the header
- right clicking the header opens a context menu for flushing and reloading on a per-wad basis
- wads now sorted in the texture browser by load order, not name, to better illuminate precedence of textures with clashing names
- fixed: crash when switching to the texture browser after flushing textures without the texture browser visible
- broken: wads with colliding texture names will stomp each other in the order they're loaded as always to mirro qbsp, but it's possible to force wad loads in a different order than in the worldspawn keyvalue by manually flushing/loading through the texture browser
3.2.48 - 7/01/19
[ Download quakeed3.2.48.zip ]
- fixed: Merge and Bridge precision issues have been addressed, and both no longer fail on brushes with several slopey faces
- fixed: crash caused by the texture view when loading a second map
- texturing changes
- support added for decimal texture shifts (didn't notice that GTKR supported both decimal shift and rotate when I added just rotate)
- large offsets no longer clamped to sane ranges by repeatedly summing floats, for much less creep after huge translations
- shift and rotate constrained in the surface editor to two decimal places (hundredths of a degree/pixel)
- if you can look at a surface in-game and accurately tell if it's misaligned by thousandths of a pixel i will eat a shoe
- fit now takes the sign of current scale values into account as well as rotation, so it no longer un-flips flipped textures
- fractional fits will fit to the fractional range of the texture closest to existing alignment, so it no longer resets trim offsets
- raised command combine time from 400ms to 600ms
- modified entity inspector
- spawnflags now go up to 16 since both Quoth and Copper use spawnflags above !Deathmatch for Coop flags
- if an eclass doesn't specify more than 8 spawnflags, QE3 fills in the default !Skill flag names at parse time
- added a third, even-wider layout that reserves most empty space for a full-height comment block
3.2.47 - 5/20/19
- qe3 will try to save the current map to a crash file in the qe3 folder in the event of unrecoverable exception
- rare csg merge crash not fixed yet, but the command at least just fails now rather than ending the world
- added: brightness control; modifies the palette like the gamma ramp does, so it still requires reloading textures
- added: 'reset' button to surface dialog fit controls, because I'm too lazy to type a 1 twice
- fixed: a crash in the polytool (disparate collinear axial points)
- fixed: crash during the reload when changing project/brightness/gamma settings
- fixed: treating texture names as case-sensitive (compilers don't, but unfortunately TexMex does)
- fixed: very slow to make huge selections in selected-only path line mode
- fixed: side select dragging and shearing being slightly screwy for a while (it's better, but now just screwy again the way it used to be)
- fixed: reverse offset when ctrl-alt translating in grid view
- fixed: valid area for clicking to hit an angled brush in the z-checker being smaller than the indicated brush bounds
- fixed: wandering stale 3d clip preview dot in XY view
- fixed: select by keyvalue and select matching texture selecting hidden brushes/entities
- fixed: texture wrap sometimes produces garbage
3.2.46 - 4/27/19
[ Download quakeed3.2.46.zip ]
- target path lines
- display modes now include "to/from selected only" and "to/from selected & between path_corners" in addition to all/none
- supports extended target/targetname keyvalues (quoth/arcadim/etc), selectable per-mod in the project config panel
- links are now found on map edits or visibility changes and cached, instead of being rebuilt every frame (!)
- added: in the draw brush tool, holding shift when adding or removing a point will do so from the other end
- fixed: current project name sometimes being renamed to default 'Quake'
- fixed: new crash after clone-dragging or clone-rotating
- fixed: filtered brushes not filtering in the z-view
3.2.45 - 4/23/19
[ Download quakeed3.2.45.zip ]
- added: draw brush tool
- toggle with B (which is no longer the 'cylinder primitive' prompt) or with the new toolbar button
- click in sequence in the grid view to place corners of a shape, or drag its existing points around
- backspace to erase last point, enter to commit, doubleclick to place one last point and commit immediately
- creates a prism of that shape with the same Z dimensions and texture as the workzone
- a concave shape is legal: qe3 will try very hard to split it into concave brushes in a wise and qbsp-friendly way
- useful for wiggly rock walls, or making arches without all the clipping
- fixed: constellation of crashes related to the workzone texdef defaulting to null at startup and not the nulltexture (pink checker)
- fixed: clip tool being unable to reposition points placed on a smaller grid than the current grid setting
- fixed: camera indicator in grid view disappearing in clipping mode
- fixed: a number of commands not selecting their results properly after undo/redo, thanks to stupid confusion over what my own virtual functions are named
- fixed: nonworking 'print XY' button was still on the toolbar
- internal: built out the exception handling a little
3.2.44 - 4/15/19
- replaced GLU with GLEW, added dependency on glew32.dll
- added: indicator on the axis in the corner of the 3D view showing which two axes 3D manipulations will be mapped to
- fixed: z-checker not displaying outlines of selected brushes which don't intersect the z-core
3.2.43 - 12/18/18
[ Download quakeed3.2.43.zip ]
- added a toolbar button for VFE face mode, removed the ones for scale lock (linear scale tool is gone anyway)
- warnings and errors
- promoted warning to a real thing and not just a printf with the word "warning" in it
- warnings will focus the console and change the statusbar so they don't slip by unnoticed
- added face bridging: perform a CSG Merge with faces selected to create a convex brush spanning between them
- fixed: convex merge not merging when a brush has a brushplane that's clipped entirely away (ie dragged 'off' the brush)
- fixed: rapid texture mods not being grouped into a combined undo step
- fixed: text not printing to the end of the console if the user moved the caret or selected text
- fixed: z-checker not displaying the new brush being dragged into existence until mouseup
- fixed: brushes completely obscuring each other by draw order in the z-checker (brush outlines are now always on top)
3.2.42 - 11/27/18
- added set mass keyvalue dialog
- can specify a suffix to the value that will be auto-incremented
- increment applied to each entity in the selection, in order of selection
- useful for setting a bunch of targets or targetnames that must be similar but unique (like on path_corners)
- fixed: double movement in classic camera mode when strafing/etc
- fixed: clone drag not always drawing movement of the selection in some viewports when texture lock is on
- fixed: keyvalues thrown away when changing the classname of a brush entity by double-clicking in the classname list
- fixed: entering a keyvalue not moving focus back to key entry field
- 'select by key/value' dialog prepopulated with whatever values are in the key/value fields in the entity inspector
3.2.41 - 10/25/18
[ Download quakeed3.2.41.zip ]
- texture find & replace
- dialog is no longer modal
- edit boxes are now dropdowns that remember previous entries until program close
- highly modern eyedropper buttons added to pick texture names from the browser or the camera view
- removed 'force' option bc it was dum (see build 28 changelist)
- added WASD fly camera
- option added to preferences to choose between classic or fly camera
- hold RMB in 3D view to activate
- WASD/arrows to move & strafe while activated
- hold and release Ctrl or Shift while in fly camera to move seamlessly in and out of vertical strafe or orbit modes
- added skill level preview to view filters - see how your map looks on easy/medium/hard or in deathmatch
- alt+MMB+drag in the grid view places and then aims the camera, for worldcraftesque stroke-style camera placement
- fixed: map modified status wrong after saving and loading another map
- fixed: for hold-and-drag clone mode, selection color would change in tool modes where clonedragging doesn't work (clip/VFE/etc)
- fixed: texture flush crash when loading a map with only point entities and no brushes
3.2.40 - 10/17/18
[ Download quakeed3.2.40.zip ]
- additions to hold-and-drag clone style
- holding space when rotating 90/180 or mirroring will create mirrored or rotated clones
- selection color changes to the tool color when space is held as an indicator that the next translation will tear off a clone instead
- changes made to camera orbit (shift-RMB in the camera view)
- shift-RMB on a point entity, or a point on a face, immediately aims the camera at it
- shift-RMB-drag now orbits around the focus point, rather than trying to guess a desired pivot based on the selection
- orbiting around the void defaults to a focal distance of 256
- rolling the mousewheel when orbiting dollies toward/away from pivot
- XY 'select entities first' behavior now prefers point entities over brush entities over worldspawn
- added: alt-MMB-drag to wrap texture alignment across surfaces
- added: projection mode selector in surface inspector
- currently only controls aforementioned wrap projection mode
- will soon support genuine face-projection texturing
- fixed: opening surface inspector with point entity selected no longer reveals the name of the top secret RGB solid color texture applied to it
- fixed: W/H fit values do not reset to 1.0 when the surface inspector is closed
- fixed: surface inspector not updating to reflect MMB-sampled texture values when no brushes/faces are selected
- fixed: ctrl-LMB-dragging on a selected brush in the grid view not shearing on view axis (restoring qe3/qeradiant functionality)
- fixed: unchecked loop when saving a map after pasting, leading to infinitely huge .map files
- fixed: 'select inside' and 'select touching' selecting hidden/invisible things
- fixed: 'hide unselected' hiding everything when nothing is selected
3.2.39 - 10/9/18
[ Download quakeed3.2.39.zip ]
- fixed: qe3 not always reading/writing from its own directory
- added: apply confirmation when closing preferences dialog with unapplied changes, to make it clearer to users that their changes are not applied if they do not press apply
- fixed: brushes that were selected but not physically modified during a vertex manip became crashy
- fixed: V/F/E mode selection box only drawing in vertex mode
- fixed: filters overriding the selection - thought this was a good idea but it made it impossible to box-select with 'World' hidden
- fixed: paint select fragmenting selection order of non-world brushes (noticeable after a clone)
- fixed: crash on exit caused by some? compiler malwizardry in the allocator, in turn caused (I believe) by my upgrading to vs2017 (crash was most common after quitting with large deletes in the undo queue)
- fixed: 'connect entities' not undoable
- fixed: clip points in 3D weren't traced only against selection anymore
- added: preview dot for clip point placement in 3D
- changed 'texture directory' to 'texture wad directory' in project dialog for clarity
3.2.38 - 9/14/18
[ Download quakeed3.2.38.zip ]
- fixed: double click select-expansion was only implemented in 3D view but it quickly felt strangely absent in the 2D view
- fixed: one frame of drag-select happening the instant a mousedown happened, making it hard to select only one of two or more coincident surfaces
- fixed: command list not opening
- updated key cmd list, added one for mouse commands
- box selecting in V/F/E editing mode actually draws a box now
- 'show axis' now displays the typical RGB-axis widget in the corner of the 3D view rather than at the origin
3.2.37 - 9/8/18
[ Download quakeed3.2.37.zip ]
- adopted GTKRadiant-style double-click selection expansion
- brush entities are no longer completely selected on one hit by default
- dblclicking when selecting/deselecting brushes expands selection/deselection to entire clicked brush entity (if any)
- dblclicking when selecting/deselecting faces expands selection/deselection to all faces of clicked brush
- swapped the effects of ctrl-shift and ctrl-shift-alt on face selection
- alt now functions consistently as the 'exclusivity' modifier for both face and brush selection
- alt-shift-clicking repeatedly on the same brush still drill-selects just like before
- yes this also matches GTKR now, shut up so what
- fixed: when dragging V/F/E components, the selected component didn't snap to grid
- only the translation was snapped, so a point off-grid would move in grid increments but stay off-grid
- behavior now matches the way vertex/edge dragging did in prior builds and in various Radiants
- if having the old way available seems potentially useful, a toggleable preference could be added
- added: preference for clone style
- two options for pressing space with offset (qe3, qeradiant) or without offset (gtkradiant)
- new third option for holding space and dragging to tear off a clone and position it (similar to shift-drag clone in worldcraft)
- avoids ever invisibly creating accidental in-place doubles like 'clone without offset' can do
- all translation rules and key modifiers apply (including ctrl-alt to translate straight to the cursor)
3.2.36 - 9/7/18
[ Download quakeed3.2.36.zip ]
- qe3 now supports floating point texture rotations in vanilla id .map
- the essentially-standard EricW-tools compilers added support for it, so why not
- floats for texture rotation are now read from AND WRITTEN TO .map files
- maps with float-rots should still parse for older compilers or if loaded in editors which expect integer rots, but any decimal rotations will be rounded down (except GTKR which supports float rots fully)
- fixed: default windows are properly initialized if no placement info is found in registry (last change broke this)
- fixed: qe3 will append a slash to directory names in project settings if needed
- fixed: project can be specified on the command line again
- switches by project name now, not project file name
- surround project names containing spaces with ""
- added: a map to load at startup can also be specified on the command line
- can come before or after project name, if any
- can be absolute or relative (will search project maps dir if relative), as long as it ends in '.map'
- paths with spaces must be surrounded with ""
- fixed: wads with absolute paths in worldspawn 'wad' key no longer fail to load
- the 'default wads' entry in the project settings is now copied straight into the worldspawn 'wad' key in new maps
- console logging only on by default in debug builds
- entity color picker defaults to white instead of black
3.2.35 - 9/6/18
[ Download quakeed3.2.35.zip ]
- preferences & configuration:
- all persistent editor state that isn't related to window positioning moved from windows registry into qe3.cfg
- preferences
- project settings
- previous session's view filters and show toggles
- color schemes
- fixed: entire preferences block in the registry being invalidated when a developer (me) adds or removes a single option
- project configurations and color choices now accessed via expanded multi-page preferences dialog
- projects are created and configured from within the editor (similar to Worldcraft) rather than messing with arcane script files
- removed 'show view name' pref, now draws view name/axis when one grid view is open and doesn't if there's multiple
- removed 'load last project on open' pref, project is now a persistent state that must be changed manually
- changing gamma now only needs a map reload, and not an editor restart
- render mode divided into texture filtering mode, which is in the preferences dialog, and wire/flat/textured, which is still in the view menu
- fixed: crash when trying to do anything with bad project settings (missing worldspawn wasn't being correctly fixed)
- fixed: V/F/E tool showing component handles for point entities, which were traps that crashed QE3
- fixed: UNKNOWN_CLASS always present in the entity inspector classname list
- broken: the BSP compile dialog is functionless for now
- the presets went out with old project settings
- the compile dialog needs to be improved on its own anyway
- broken: modified* status is still wrong and always has been and always will be
3.2.34 - 8/7/18
- fixed: crash when face-shearing more than one brush at a time
- fixed: brush filters and transparent textures stop working after a ctrl-h (was zeroing all showflags, not just BFL_HIDDEN)
- fixed: cloned brushes still offsetting on XY even in side YZ/XZ views
- fixed: after having clipped once already, pressing enter to clip with no placed clip points would clip selected brushes away to nothing
- fixed: clipping brush entities sometimes made them vanish and not come back when undone (eek)
- fixed: crash when component dragging on a brush with a degenerate face
- fixed: component handles not deselecting when switching off their respective editing mode when exclusive editing modes are disabled
- fixed: couldn't type a capital H in the entity inspector without hiding stuff
- increased amount of play in V/E/F component selection so they're easier to grab
- added crosshair cursor when hovering over/moving a V/E/F handle similar to hovering over clip points
- rotating/mirroring any point entities with an angle indicator (the white arrow) will rotate/mirror their angle key value
3.2.33 - 8/5/18
- fixed: lots of startup dickery
- 'no worldspawn found in source' is no longer an error, because it usually indicates entity definitions not being found at all, and killing the application before the user can do anything about that is counterproductive
- fixed initialization errors that occured before the main loop not being caught and presented in a message box, so startup crashes are no longer a mystery
- when not even the default project can be loaded, a file open dialog is raised to navigate to a project file on disk first rather than immediately skipping to an 'edit new project' dialog
- console logging is on by default for the sadly regular event that preferences can't be loaded from the registry
- fixed: 'Boundary' misspelled as 'Boundry' absolutely everywhere
3.2.32 - 8/5/18
- fixed: point entities were resizable again / drags with point ents selected weren't defaulting to translation
- fixed: vertex/edge mode toolbar button state didn't match tool state
- undoable again: rotate 90/180
- undoable again: flip x/y/z
- conversion to the new undo command queue system begun almost three months ago is complete \o/
3.2.31 - 8/4/2018
- brush geometry edits
- vertex/edge editing and ctrl-shearing are undoable with new system
- more robust at resolving convex brush geometry in response to weird deformations
- 'vertex editing splits face' preference removed as it is now permanent default behavior
- the funny skewing you got with it off was hard to predict or make intentional use of
- there are other tools for achieving the same effect with more control
- brush ctrl-shearing now also splits faces, if it's the only way to resolve the shear
- vertex/edge/face component manipulation
- supports multiple brushes at once
- F now toggles face dragging (formerly 'flush unused textures')
- V/F/E modes can be activated simultaneously in any combination (worldcraft style), off by default
- preference added for 'exclusive component editing modes' if you desire to toggle it
- multiple components can be selected at once, of mixed types
- ctrl-click to select/deselect additional components
- click and drag to box select (box is not yet actually drawn...)
- fixed: I for invert selection superceded ctrl-I to insert brushes into entity
- added: shift-H hides unselected brushes (good for narrowing the view further when you already have the map regioned)
- restored sikkpin's ctrl-alt-LMB in 2D view to 'teleport' the selection to the cursor
- now uses the selection's center (on the current grid), not min corner
- user can continue dragging from there as normal to finalize placement
- fixed: bad clip points when placing clip points in 3D on angled faces
3.2.30 - 7/14/2018
- began updating version info/build numbering, like a professional. quakeEd is now version 3.2 build 30. happy birthday. not yet updating the build number via a build process like a professional.
- global brush, entity, and texture counts can now be maintained by the commands that change them, so QE3 now does that rather than tally the whole scene repeatedly on a 1 second timer
- fixed: qe3 repeatedly autosaving a map that hadn't been modified since the last autosave
- fixed: modified status was incorrect if you undid until you ran out of undo steps
- fixed: shift-RMB camera orbit with nothing selected would lose the camera at infinity
- fixed: flushing unused textures and then undoing to a previous state when flushed textures were still in use (as unlikely as that is) led to broken zombie textures that didn't show up in the texture browser, and not the right pink placeholder kind of broken texture
- fixed: reloading a wad with a texture from that wad sampled in the workzone created the same kind of broken zombie texture, allowing it to be applied to new brushes
- fixed: texture browser could be forcibly scrolled past the end of the list by scrolling to the end and then flushing unused textures or enlarging the window
- the border indicating textures in use in the texture browser is no longer bright green
- fixed: some very professional potential memory leaks when making czg cylinders, CSG merging, or resizing the texture window
3.2.29 - 7/13/2018
- light radius preview uses the 'wait' keyvalue in accordance with now-pretty-much-standard quake compiler behavior
- undo and redo print what was undone/redone to the console
- fixed: commands which replaced brush geometry (currently just the cylinders/cones but will include vtx/edge/shear) screwed up undoing of prior commands which modified face attributes (tex/plane shifts)
- fixed: pressing enter with surface dialog focused didn't apply settings
- fixed: point entities not updating position properly while being moved
- fixed: alt quick-clip not working in grid view
- fixed: clip tool in grid view drawing untextured polygons for the selection when points were set
- fixed: z-check location indicator didn't draw after clip points were drawn
3.2.28 - 7/12/2018
- all texture applications, alignment changes, etc are undoable
- selecting a texture in the texture browser with MMB will apply the texture to the selection without zeroing any texture alignment
- before doing a find and replace with 'force' but not 'selected' checked, QE3 will ask for confirmation. find and replace should instead be redesigned to not even support something so useless in the first place.
7/10/2018
- dragging a new brush
- undoable again with new system
- snaps to grid a little better, so it should feel more crisp and less 'rubbery'
- brushplane dragging
- undoable again
- in 3D, tries to be proportional to distance from camera, so it now hugs the cursor a lot more closely in most cases
- side select in the z checker now feels much more like you'd expect it to work
- now also works with faces selected: all selected faces' planes are dragged, no questions asked, in all views
- moving the selection
- undoable again
- in 3D, tries to be proportional to distance from camera, so it now hugs the cursor a lot more closely in most cases
- with texture lock off, quakeEd used to preview texture shifts only when moving one brush for performance reasons; this limit has been raised to 8 (somewhat arbitrarily)
- selected faces are drawn in the 2D view with a thinner (and dottier) outline in face select mode
- added so that face-selection-based plane drag can be done in 2D or 3D
- map modified status (that * in the title bar)
- map now only marked modified when undoable commands happen, not after merely looking at a brush sideways
- atm this trades false positives for false negatives but will become accurate once undo covers all actions again (promise :))
- modified status is properly cleared if the user undo()s back to the last state saved
- autosaving no longer 'modifies' a map
- texture menu
- 'show in use' will refresh the used status on all textures
- 'flush unused' will clear stale used status on unused textures first
- toggling entity names or brush sizing info no longer rebuilds all brush geometry in the map (!)
- reworked brush and entity filtering, should be faster (removed a lot of strcmps)
- added: view filters for point entities, brush entities, monsters, and triggers
- fixed: last change broke csg merge
- known bug: vertices and edges cannot be moved in vertex/edge mode. the untangling of the universal click-and-drag code into separate domains is half finished, and creating a proper vertex/edge editing 'tool' like the clip tool (complete with all the wonky behaviors and feature paucity addressed) is an immediate goal.
7/05/2018
- mostly internal work: contents of the face, plane, and texdef classes rearranged and cleaned up to facilitate cleaner undoing of operations that modify faces (including texture/surface values)
- clip tool draws red selection under yellow clip result in XY again
- find & replace texture dialog
- fixed: should no longer apply a garbage partial texture name
- fixed: pressing 'apply' updates the camera view
7/03/2018
- clip tool previews textured brushes in camera view, not just the yellow wireframe
- toolbar and other windows no longer flicker when the selection changes
6/21/2018
- selection tool
- added paint selection (shift click and drag to select on mouseover) in 3D view for brushes and faces
- shift-alt selection drilling rewritten, now actually drills away from the camera in z-order
- fixed: selecting in z-checker works properly
- fixed: entities-first selection works in all three grid orientations and not just XY Top
- fixed: framerate-dependent RMB camera movement
6/20/2018
- c++ification: added system for collecting functionality like editing modes into self-contained 'tool' objects
- currently only clipping mode is a tool
- fixed: other input blocked while dragging a point in clip mode
- fixed: cut, copy, and paste work with text selected in the entity editor key/value fields again
- fixed: copy works in the console again
- fixed: console displays RMB context menu again fwiw
6/11/2018
- mousewheel buffs
- a mousewheel roll focuses the window under it (usually. the entity editor is special and stupid but it tries its best)
- ctrl+mwheel in the camera view now functions as up/down floor (pgup/pgdn)
- shift+mwheel in the camera view dollies 4x distance
- mwheel in the z-checker now scrolls vertically, shift+mwheel scrolls 4x fast
- z-checker zoom is now ctrl+mwheel instead
- ctrl+mwheel in texture view changes scale
- shift+mwheel in texture view scrolls 4x fast (shift+rmb drag always scrolled at 4x speed)
- mwheel and shift+mwheel scroll the console
- mwheel scrolls the classname list and class description in the entity editor
- entity editor
- fixed: not being able to select text in the key/value fields
- fixed: entity origin keyvalue not updating while being moved
- fixed: 'k' choose entity color dialog works from anywhere (used to require entity editor to be open), is undoable
6/8/2018
- cleaned up/c++ified/unified window code, so I can clean up and unify how input goes to different views, so I can clean up how input gets turned into actions, so I can finally get rid of drag.c
- window snap-together is snappier
- shift-tab to swap XY and Cam views now swaps their visibility states too, so it works if either window is closed
- fixed: windows that aren't visible no longer redraw (!) - provides a decent framerate boost if you use the classic QE layout of one big grid view rather than three-plane elevation
- fixed: windows gain focus appropriately when you click on their titlebars and frames
- fixed: clip tool crash when placing a point after cycling through all three points once already
- fixed: crash on 'flush unused textures' with no wads loaded
- fixed: angle changes made by the preset buttons in the entity editor not undoable
- fixed: cursor invisibly moving and butting against the edge of the screen during z-view RMB-scroll (cursor now matches grid view & texture view behavior of staying in place when captured)
- removed "Print XY View" - don't want to maintain it, don't think it will be missed
6/3/2018
- undoable: paste, import map (cut already was, and undoing a copy is meaningless)
- exceptions thrown by undoable commands handled appropriately, so mistakes don't kill the editor
5/25/2018
- undoable again: hollow, merge, subtract
- fixed: crash on hollow
- the new giftwrap merge (called 'convex merge' in TB) is now the default behavior of merge - it covers all the old merge cases and many more, so it wasn't worth fixing the numerous mishandled edge cases in the old merge just to keep it as a parallel feature
- subtract is still wrong and bad and you shouldn't do it
5/20/2018
- fixed: clip tool resetting orientation after each clip
- make cylinder/cone/sphere operations can be undone (for what that's worth)
- cones and cylinders now have the same size bases (for what that's worth)
- added czg-style cylinder primitives
- fitted to input brush bounds rather than forcing a circle, if you happen to want czg-style ovals (you madman)
- undoable
- 12 and 24 sided available
- higher degrees are possible, 48 just isn't in the menu and 96+ would break the (current, arbitrary) limit of 64 vertices per brush face
5/18/2018
- clip tool can be undone
- fixed: no texture being selected after map load, leading to an unnamed pink checker texture on new brushes
5/10/2018
- added dependency on GLM, globally replaced old id vec3 array typedef
- fixed: crash-on-exit after doing vertex manip or clipping
5/8/2018
- big rewrite of undo/redo and editor commands in general
- still partially deployed (brush mods cannot yet be undone) but it's been too long since i checked in :p
- undos which are implemented are now rock solid
- every scene-modifying command controls its own undo/redo cases, inheriting functionality from general cases or implementing its own when this would be simpler or when the general cases don't fit
- fixed: undo with multiple entities selected causing brushes to drop to worldspawn
- fixed: 'clone selected' not undoing properly
- fixed: keyvalue changes can be undone
- 'ungroup entity' is now 'move to world': works with partial selections for peeling brushes out of an entity without deleting it
- 'insert brush' is now 'move to entity': can reparent brushes from any other brush entity, not just worldspawn. the first non-world entity selected is treated as the destination. if all the brushes in a brush entity are reparented away, the empty entity is deleted and a warning is printed to the console.
- fixed: various funny behavior when changing classname on an entity by submitting it as a keyvalue in the inspector
- fixed: classname keyvalue can no longer be deleted
- fixed: origin keyvalue can no longer be deleted from point entities
- empty keyvalues are no longer allowed; setting a keyvalue to a blank string deletes it instead
5/1/2018
- c++ification:
- map io
- region control
- errors
- Error() throws an exception rather than killing qe3 with a message box for a funeral. none of the exceptions are handled yet so they still lead to qe3 being killed everywhere anyway (except for those mentioned below) but expect graceful recovery from more errors down the line.
- fixed: worldspawn entity leaked memory (was emptied of brushes but not deleted) on new map/load map
- fixed: new/load with the entire map selected or regioned caused the entire map to not be deallocated and leak memory
- cut, copy, paste, and 'copy selection to new map' now all use intermediate ascii in .map format, through the same code path as save/load/import/export. this is a prelude to eventual support for v220.
- cut, copy, & paste use windows clipboard. now you can copypasta between text editors and other level editors that do the same (as long as the ascii data is id vanilla .map format).
- fixed: encountering bad map formatting during load/import/paste now fails gracefully without modifying the scene or insta-quitting qe3
- fixed: 'copy selection to new map' with only point entities created entities that were lies and didn't get saved
- prefab "support" removed. it was purely an alias for import/export map, except using the .pfb extension, which 1) is from q3radiant 2) no other quake1 editor uses, and 3) is just a renamed .map file anyway. thank id for this super-cynical feature and sikkpin for copypasting it into qe3.
4/27/2018
- entities c++ified
- fixed: 'select entity color' no longer refuses to work if the entity inspector isn't open
- fixed: cloning offsets the new brushes and entities instead of the old ones (important when cloning part of a brush entity)
- fixed: deleting the last brush in a brush ent left an invisible entity resident in the scene that wasn't removed until a save/load (!)
4/25/2018
- entity classes c++ified
- fixed-size entities with brush entity classnames, or vice versa, are handled more gracefully during map save, map load, and entity creation, for all your progs.dat hacking needs
- you can no longer turn a bunch of brushes into a point entity; selecting brushes and trying to create an entity with a point-entity classname will (after a confirmation) create a hacked brush entity with that classname instead. point entities can still be created by right-clicking in the grid view and using the menu, or using 'create entity' in the entity inspector (which will just drop it in front of the camera for now).
- changing the classname of an entity in the inspector, directly or by double-clicking in the classname list, properly changes the entity's classname/color/bbox/other properties while preserving origin and other keyvalues (this used to require a save/load)
- changing the origin keyvalue of a point entity via the inspector moves the entity. (dragging an entity in another view still doesn't update the entity inspector because it flickered too much, but the keyvalue is still updated)
- fixed: loading a map from the 'recent files' bit of the menu now properly asks for confirmation if the current map is modified
4/22/2018
- textures, palette, and wads
- mostly c++ified, still leaving cstrings everywhere for convenience for now
- if palette cannot be loaded from basepath/gfx/ or /texturepath/, it falls back on a default palette in the CWD
- unknown textures are handled a lot better: if you load a map with broken wad links, then load the wad, the names are matched up automatically and you have a textured map again that's safe to save
- loading a wad that's already loaded will refresh it cleanly from disk
- 'group textures sorted by wadname' preference removed, now a default 'handy feature'
4/20/2018
- c++ification
- brushes
- faces
- grid/z/camera/texture view
- wrote a memory pool manager for face windings, every brush edit used to require 5+ malloc()s per face (!)
- somehow made maps load 15x faster trying to fix something else, don't know how \o/
4/14/2018
- project now compiles as c++
4/14/2018
- fixed: 'BasePolyForPlane: no axis' error in 3d clip tool when placing clip points on diagonal faces
- fixed: clip mode no longer blocks select/deselect in 3d view
- fixed: hang when moving point entities with texture lock on
- fixed: crash when loading a map with a wad reference that can't be found
- reverted: marking map as modified in undo_start. will revisit when I get more into the undo code and can fix empty undo steps generated by clicks that didn't do anything but would have if they were dragged
3/18/2018
- added: CSG Convex Merge
- 'gift wraps' any selected brushes in a minimum convex hull
- new planes created use the workzone texture def
- clip tool:
- now draws the same in 3d as in 2d
- all XY view clip controls now work in the camera view, including Alt for quick clip
- placed and dragged clip points will be snapped to the current grid, then projected onto the nearest selected surface
- the implied 3rd point is based on the axis closest to the normal of the plane the first clip point is placed on
- known bug: the clip points in the camera window are labeled 2, 3, and 4. absolutely no idea why but it's probably because qe3's text rendering code is dinosaur shit
- fixed: alpha on liquids/clips/triggers works properly, hint/hintskip added to transparent rendering list
- changed min/max camera pitch to 90 (from 85)
- fixed: can no longer use mmb in a side grid view to turn the camera upside down
- fixed: unused xz/yz windows always appearing behind other windows at startup even if they were closed last time (d'oh)
3/15/2018
- unfustificated XYZ windows:
- XY code parameterized and generalized to all three axes
- XY view relevant tools (like clip) also
- redundant YZ/XZ code sent back whence it came
- doesn't change how qe3 works but makes work on tools less insane in the future
- fixed: axis grid lines in xyz view use grid block color (was hardcoded as 65% grid major)
- removed 'Betwixt()' and 'fDiff()' - they may have once operated on uints and made sense, but now they're cruft
- clip tool: when using two points, the third point is implied from the last xy orientation from which a clip point was placed or modified, not the present XY window orientation (so tab cycling doesn't change the clip plane all by itself). probably unnoticeable in normal editing, but a necessary prelude to placing clip points in the camera window.
3/13/2018
- clip tool:
- fixed: now mutually exclusive with vertex/edge mode
- added quick clip: in clip mode, alt+LMB in the grid view will place one point and immediately begin dragging a second. if alt is still held when the drag is released, it will automatically clip.
- some other misc. screwing around that amounted to nothing because I need to clean up the strangely triplicated XY/YZ/XZ view code before doing any real work on view-relative tools
- menus:
- more commonly used items are grouped towards the top
- selection menu is now for selecting things - modifiers and tools moved to new Tools menu
- 3-9 sided brush shortcuts removed, Primitives menu moved to Tools, Brush menu eliminated
- window and toolbar toggles moved from View to Window, along with Benchmark and the Colors submenu (which really belongs in preferences)
- Misc menu eliminated
- added: convert brush selection to faces, or face selection to brushes (partial or complete)
- fixed: selections no longer wander by one grid increment when rotated repeatedly if they're an odd number of grid increments wide
- pressing g no longer accidentally turns off snap to grid (because nobody would do that on purpose)
- hastily updated hastily made splash screen
3/12/2018
- surface inspector:
- is now modeless, can be left open while mapping and responds to selection changes
- handles multiple selection gracefully, shows blanks for clashing values, and doesn't modify those values on 'apply'
- displays/modifies current 'work zone' texture def (that invisible middle-click sample) when nothing is selected
- fit texture to face:
- rewritten, much more predictable
- works with decimal fit increments
- specifying 0 or blank for one of the fit increments will not alter shift/scale on that axis (good for fits on pillars that you can't be arsed to check the height of)
- fixed: 'connect entities' always* works on the first two entities selected in order of selection, regardless of other selection history (used to only work after an escape-deselect and exactly two shift-click selects) (*if neither is worldspawn)
- fixed: buggy texture window sort-by-wad when loading the same wad more than once
3/9/2018
- texture window:
- added preference: group textures sorted by wadname
- fixed: can no longer scroll past last texture
- layout is calculated on window changes and cached, rather than generated on every draw and every mouse input
- cleanup, cleanup
3/7/2018
- reinstated hack that changed inspector window modes by moving inactive inspectors clientWidth pixels to the right, because apparently WM_HIDEWINDOW isn't as effective as you'd think
- quakeEd will do its best to keep the scene and selection brushlists organized by parent entity
- entity inspector:
- much more responsive to changes in selection
- gracefully handles multiple selections, showing indeterminate keyvalues and spawnflags when clashing
- tries to load palette.lmp from basedir/gfx, falls back on texturepath, only errors if neither works
- origin keyvalue updated when moving fixed-size entities (used to only be derived from ebrush bounds when saving)
3/1/2018
- discovered and applied the one silly hack that makes the toolbar work when compiling with newer versions of VS
- added: view filters for func_details and hint textures
- added: ctrl-click on 'rotate around X/Y/Z' buttons in toolbar to rotate CCWise, shift-click to rotate 180
- added: shift-tab to quick-swap camera and grid windows
- added: opened pointfile closes when the map is saved (handy feature from radiants of the future)
- fixed: all brush entities being saved as point entities with no brushes in debug builds
- fixed crash: region > set selected with nothing selected
- fixed crash: about dialog (quadrupled gl_extensions string buffer)
- fixed: 1px misalignments after rotating brushes enough with texture lock on
- fixed: face selection no longer grabs the 'faces' on point entities in 3d view
- fixed: texturepath no longer has basepath prepended to it only sometimes (it's now never prepended, so it's absolute like all the others - wads are now loaded from the same directory they're listed from in the menu)
- fixed: palette.lmp loads from basedir/gfx instead of texturepath once again, because that's where quake.exe looks for it too
- fixed: invert selection no longer selects hidden/filtered things
- improved reliability of multiple plane dragging (code from q3r202)
- disabled alt-shift-drag to rotate textures, it conflicted maddeningly with alt-shift-click to select multiple faces
- commented out workCount++ productivity logging
- removed unused partial view redraw signals XY_OVERLAY and Z_OVERLAY
- moved application-relevant view toggles into the 'toggle' submenu, 'filter' submenu now only contains filters for map contents
- future-proofing: made interface with selection/deselection code a lot more strict
- future-proofing: untangled texture/entity/console inspector window code
- pressing the hotkey for an inspector when the window is already in that mode no longer makes the window vanish
- not much functional change from this yet other than coder QOL
- entity inspector:
- added: alternate wide layout to entity window, to better fit below the camera view on wide monitors
- fixed: ticking/unticking a spawnflag with multiple entities selected overwriting all entities' spawnflags with one entity's spawnflags key
- fixed: angle buttons apply angle keyvalue to all selected entities, not just the first
- 3d view: selected geometry tint brightened, now uses selected brushes color preference