Build 8869 (November 17th 2024)
- Added Portal 2 support
- Added HLMV++ as a bundle for each branch
- This is optional to use and isn't required for Hammer++ to function
- Added support for radial fog and bicubic filtering under Half Life 2 branch
- Added option to change Lightmap Atlas padding in Propper++
- Added option to toggle I/O delimiter (ESC instead of comma) to settings UI
- Added Browse button to Sound browser to select sound file from disk
- Increased maximum FGD key length from 40 to 80 (to match Portal 2 branch)
- Changed model browser to output full path with / instead of \ slashes (for easy VScript copy pasting)
- Further reduced brightness of fullbright materials (such as nodraw) in HDR lighting preview
- Sprites and fullbright models are now also darker in HDR lighting preview
- Entity order in the world now stays deterministic when adding/removing brushes or entities
- 2D view can now be moved with arrow keys when nudging is enabled and nothing is selected
- Fixed broken brush rendering after Half Life 2's 20th anniversary update
- Fixed Align Entity to Floor/Ceiling by Normal not correctly preserving entity orientation
- Fixed certain material math proxies writing the result as integer when not supposed to
- Fixed overlays without $decal 1 flickering on walls or ceilings
- Fixed Portal 2 fizzler materials not rendering
- Fixed point_spotlight preview not rendering correctly inside instances
- Fixed inconsistent/flickering cursor overrides in 2D views
- Fixed lighting preview not updating lights when QuickHiding them
- Fixed env_sprite becoming an ERROR model when copy pasting it and the FGD had a studio model helper
- Fixed wrong beam brightness for point_spotlight preview
- Fixed very short MP3 sound files not playing
- Fixed texture browser crash when attempting to load a 1x1 DXT1 texture
- Fixed model browser not showing models when selecting deeply nested subfolders
- Fixed crash when attempting to render more than 121,792 opaque brush faces in one frame
- Fixed crash caused by negative padding values in Propper++'s Lightmap Atlas
- Fixed vertex buffer crash when rendering extremely complex collision models
- Moved update detector to another thread, should fix a freeze on startup with no/slow internet
- Middle mouse controls are now enabled by default for Garry's Mod branch (to match its stock Hammer)
- Removed unused "Crosshair Cursor" 2D view option that never did anything
Build 8868 Hotfix (October 18th 2024)
- Hotfix for Team Fortress 2 update on October 18th, which caused Hammer++ to fail to boot on startup (again)
- Version number remains the same as next build for other games isn't ready still
Build 8868 Hotfix (October 10th 2024)
- Hotfix for Team Fortress 2 update on October 10th, which caused Hammer++ to fail to boot on startup
- Version number remains the same as next build for other games isn't ready yet
- Fixed random rendering crash from particles with world trace colliders (only affected 64-bit)
Build 8868 Hotfix (October 7th 2024)
- Hotfix for Garry's Mod update on October 7th, which caused Hammer++ to crash on startup
- Version number remains the same as next build for other games isn't ready yet
- Fixed random rendering crash from particles with world trace colliders (only affected 64-bit)
Build 8868 (July 28th 2024)
- Added UV lock tool, behaves identically to JACK editor's UV tool
- Toggle it from the new toolbar button
- When enabled, textures are "locked" in place when moving vertices in vertex edit mode
- This allows you to easily skew brushes without the old trignometry or vector workarounds!
- Rebranded Propper to Propper++
- Added support for merging models in Propper++
- Useful to combine static props to reduce draw calls
- Skins, bodygroups and scale are baked in
- You can also bake a singular model by itself
- Added support for scaling along X Y Z individually in Propper++
- Negative values are accepted, you can use this to mirror props now
- Experimental support for generating lightmap atlases in Propper++
- This allows prop_static lightmaps to be used when normally not possible
- See the documentation for more details
- Official documentation for Propper++ is now hosted on Valve Wiki:
- https://developer.valvesoftware.com/wiki/Hammer++/Propper++
- Added a Help button to Propper++ that opens this page
- Added option to set $casttextureshadows in Propper++
- Added option to suffix model names in Propper++ if a conflicting .mdl is found
- Propper++ now uses relative material paths instead of full paths in the generated model to reduce confusion
- Added support for "obb" FGD helper (from L4D2 Hammer)
- Added direction visualizer to trigger_catapult
- Added default keybind for select all: Ctrl + Shift + A
- Texture browser now renders transparent thumbnails only if the texture has $translucent, $alphatest or $additive
- Fixed grid highlighting at small scales not working right
- Fixed Propper++ failing if geometry with more than 65k triangles was created
- Now it will now auto-split meshes over that threshold
- Fixed Propper++ not creating the materials directory
- Fixed Enter key closing Propper++ instead of running Build + Compile sometimes
- Fixed corrupt pixels appearing in texture thumbnails for non-square textures
- Fixed entity_delete, entity_set_keyvalue, entity_rotate_incremental map_edit commands not working
- Fixed vertex manipulation being unstable when moving more than 1024 vertices at the same time
- Fixed TF2's command compile error not displaying a unique error when trying to start the game as "hl2.exe"
- Fixed command compiler not showing user-friendly return messages
- Maybe fixed textures using LightmappedReflective shader appearing as missing texture in some games
- Fixed command parameters breaking in Run Map Expert if a newline was accidentally copy pasted
- Newlines are now removed from parameters automatically
Build 8867 (July 2nd 2024)
- Hotfix for model browser/color picker killing the renderer in Garry's Mod after July 1st update
- Restored support for engine -> Hammer communication via the "map_edit" command
- In Garry's Mod, this also makes hammer.SendCommand work now
- Unlike stock Hammer, Hammer++ ignores map version checking and will always allow a map to be edited
- Added "Import" button to Expert Compile window, allows importing commands from a .cfg
- Added "Remove bad collision faces" to Propper (on by default), removes thin/tiny collision faces
- This fixes complex brushwork sometimes creating a shrinkwrapped collision model
- Added support for handling _rt_camera0, _rt_camera1 and _rt_camera2 textures (for Mapbase)
- Added Refract material rendering
- Added 2D view option to change default rotation angle (15 degrees)
- Added 2D view option to change scaling interval for the grid, default is x2
- Note that it renders in low resolution for performance reasons
- HDR Lighting Preview now uses a half-brightness lightmap for fullbright materials
- Tool textures such as nodraw should no longer make you blind
- TF2: Quotation marks ("") in RunScriptCode inputs are now automatically replaced with backticks (`)
- Improved clipping tool performance on large maps
- Lighting preview settings are now hidden by default
- Missing material thumbnails now show up as the purple checkerboard instead of solid black
- Removed "Autosaving..." popup
- Fixes input being stolen while flying around with the camera
- Autosaving will no longer occur when the 3D camera is moving
- Limited thumbnails in texture browser to max 16:1 aspect ratio
- This allows disproportional textures like 2048x32 to still be recognizable
- Fixed flickering in lighting preview with post processing on
- Fixed "Show Alpha" in texture browser still showing textures as transparent when turned off
- Fixed sorting issues with the overlay box model
- Fixed resizing brush entities with direction helpers (e.g. func_door or func_button) being wonky
- Fixed putting quotations marks (") or backwards slashes (\) into the comments field corrupting the VMF
- Fixed some WorldVertexTransition materials appearing buggy in texture browser
- Fixed nature/blendgroundtograss009 texture turning black when viewed in texture browser
- Fixed post processing in lighting preview breaking if "Draw Materials Opaque" is enabled
- Fixed incorrect aspect ratio scaling for alpha checkerboard background in texture browser
- Fixed new keybinds for camera movement not being updated without restarting Hammer
- Fixed env_beams that pointed at themselves as the start/end point being incorrectly treated as random strike
- Fixed invalid textures not being fixed in Check for Problems dialog
- Fixed wrong thumbnail size for skybox textures in texture browser
- Fixed HDR-only skyboxes not being previewed in texture browser
- Fixed corrupted texture thumbnail appearing when selecting a missing material
- Fixed grid rendering precision, particularly at sub-unit scale
- Therefore added back support for non-power of 2 microgrid support, limited to minimum 0.1 scale
- Fixed wrong texture size for _rt_camera in TF2, now matches ingame
- Fixed Hammer++ freezing on load if an FGD had an incorrectly closed quote containing an operator
- This is also an issue in stock Hammer
- Fixed a crash if an invalid last texture name was saved in the texture list
- Fixed normal camera moving while under the influence of Jumpman
- KNOWN BUGS:
- Copying entities from a VMF that is closed might crash
Workaround: Don't close the VMF until you have finished pasting
Build 8866 (May 19th 2024)
- Added native Propper tool
- Converts selected brushes/displacements to a model automatically
- Works on all games and serves as a replacement for the old standalone Propper tool
- Access it from Tools -> Propper or Ctrl + Shift + P
- Brushes tied to an entity or grouped together will be converted into a single mesh
- Unlike the old Propper, this converts the Hammer mesh directly so there is no destructive loss from the BSP process
- The tool is a two-step process: Build and Compile
- If you want to add extra model properties like prop_data, Build it first, edit the generated QC and then Compile
- Note: the studiomdl.exe path won't be automatically configured unless you are on a fresh install
- Make sure to configure the MDL program in Tools -> Options -> Build Programs first
- Added support for HDR lighting preview (on by default)
- Improved lighting quality in dark interiors
- Includes post-processing preview: change tonemap, bloom, color correction and vignette settings
- Left 4 Dead 2: This fixes lighting preview brightness being very inaccurate in dark areas, as the game uses up to x8 tonemap scaling by default!
- Left 4 Dead 2: 2D skybox preview will now show HDR skyboxes correctly
- Moved Map -> Set Color Correction to lighting preview's options
- When a map is loaded for the first time, bloom/tonemap settings are copied from the first found env_tonemap_controller
- If there is multiple env_tonemap_controllers, the one with "global" in the name is favored first
- LDR mode can be re-enabled in Tools -> Options -> Hammer++ (not recommended)
- Upgraded texture browser to display WorldVertexTransition blends automatically
- %tooltexture is now ignored on WorldVertexTransition materials for this reason
- Added transparency display for $additive materials in the texture browser
- Added error message in compile window when a command fails from missing dependencies or wrong architecture
- Added error message in compile window when attempting to run hl2.exe on 64-bit TF2
- Added error message in compile window if VVIS fails potentially due to a leak
- Added extra info on showing compile window errors to other people
- Added warning message if resource files for model/particle browser are missing (they will crash without them)
- Loading a pointfile will now center camera on the exit point
- Pointfiles will now select the (brush) entity responsible for the leak when loaded
- Increased pointfile color saturation
- Added slider for Near Clipping Plane in Options -> 3D views
- Increasing this allows reducing z-fighting when observing very large maps
- Added exception address to crash message
- Updated model ambient sampling in lighting preview
- Now samples nearby lightmaps, this should make them look better inside (dark) interiors
- Changed I/O delimiter in Garry's Mod to use ESC rather than commas by default
- Should fix issues with instance I/O
- Raised compile parameter length limit from 260 to 8192 (maximum length allowed by Windows)
- Increased max back clipping plane, model render distance and detail render distance from 32768 to 99999
- Brushes tied to entities can longer be used in the Merge tool (move them to world first)
- This fixes issues with phantom brushes which then caused a crash
- Changed model browser background color to match particle browser (darker)
- Clarified the "Failed to load engine dlls" error that it may happen if an antivirus quarantined the files
- Hammer++ now uses it's own default cubemap in materials/dev_test/cubemap
- Jumpman has learned to swim
- Removed visibility options from lighting preview
- Fixed compile window not reading parameters correctly if "Wait for Keypress" was disabled
- Fixed missing texture thumbnails in the Texture Browser in Left 4 Dead 2 and Garry's Mod
- Fixed textures with no mipmaps displaying corrupted in the texture browser
- Fixed textures with non-square dimensions displaying stretched in the texture browser
- Fixed textures displaying $color tints slightly inaccurately
- Texture browser now uses less memory and displays textures faster
- Fixed physics tool freezing on certain hardware in Left 4 Dead 2
- Fixed incorrect default gameconfig paths for Left 4 Dead 2
- Fixed water textures having a missing texture reflection in Left 4 Dead 2
- Fixed a 2 pixel wide yellow corner appearing when selecting objects in Left 4 Dead 2
- Fixed models/noesis/donut.mdl causing a catastrophic crash in Garry's Mod
- More specifically, fixed models crashing if they used non-conventional $keyvalues formatting
- Fixed collision models not displaying in the model browser in Garry's Mod
- Fixed wobbly camera movement because Hammer++ performance was too high
- Fixed hotloaded models not updating their bounding box correctly
- Fixed _rt_camera appearing as missing texture
- This also fixes texture alignment tools being broken with camera textures
- Fixed geometry not rendering behind brushes that are being select dragged
- Fixed geometry being culled in Wireframe mode
- Fixed missing scrollbar in the vertical texture list in Face Edit sheet window
- Fixed TF2 point_worldtext not being sorted in rendering
- Fixed env_sun and point_spotlight being culled by cordon
- Fixed "Soften Cosine" toggle in lighting preview not working until a full rebake
- Fixed cubemaps flickering if selecting objects while cubemaps were disabled in lighting preview
- Fixed crash if right clicking a 3D view while map is loading
- Fixed a case where textures would glitch out while drag selecting if particles where in view
- Fixed Discord rich presence crashing if booting with -nomessagewnd
- Fixed Jumpman exploding when entering a map on 32-bit
- KNOWN BUG: The texture thumbnails in the dropdown list don't render
- As a workaround, use the up/down arrow keys to see them for now
Build 8865 (April 21st 2024)
- Added experimental Garry's Mod and Left 4 Dead 2 support
- Portal 2 support still has some problems, this will be released at a later date
- Added 64-bit support for Garry's Mod and Team Fortress 2
- Added Occlusion Culling
Provides significant framerate improvement, particularly on indoor heavy maps
Can be disabled in Options if it causes issues
- Added env_sun preview
- In Garry's Mod, this will also show phong on brushes
- Added preview for TF2's version of point_worldtext
- Added direction helper to light_environment, light_directional and env_fog_controller
- Added check for missing texture overlays in Check for Problems
- Added model name when 'Missing/invalid model name' is found in Check for Problems
- Added Show Alpha button to texture browser
- Added text wrapping to the Parameters window in Expert Run Map dialog
- Added support for loading Jolt physics engine via "vphysics_jolt.dll" if started with -jolt parameter
- Added displacement filters to download and moved their directory to "hammerplusplus/filters/"
- This was needed as some games did not ship filters for 64-bit
- Added shader fix for WorldVertexTransition blend modulate textures for SDK2013
- Added shader fix for Sprites rendering through walls on Garry's Mod and SDK2013
- Added toggleable support for 4 way displacement blends (default is off)
- To enable, open hammerplusplus_settings.ini and change Enable4WayBlends under [General] to true
- The Blend button under Sculpt will now be enabled, and the extra information will be read and saved in VMFs
- NOTE: The game itself must support this feature for it to work!
The blends will not show up in Hammer++ unless shader support is present
If shaders are implemented to show 4WayBlends under Garry's Mod, this will serve as support for Black Mesa
- VMFs can be drag and dropped (like Garry's Mod Hammer)
- Pointfiles are now rainbow gradient colored. This allows you to more easily see where it starts and ends
- Upgraded compile window to inform if a command failed, and the total time is now shown
- Significantly reduced memory usage for baking bounced lighting on large maps with high number of threads
- Enabled precise floating point math, should slightly help with brush precision
- Disabled brush convexity checker due to false positives
- VBSP tends to allow wonky brushes like that more often than not
- !nick, !rochelle, !ellis, !coach, !bill, !zoey, !louis and !francis targetnames are recognized as valid targetnames
- Fixed detail sprites materials breaking after modifying a displacement
- Fixed lighting preview only creating displacement shadows from the backside
- Now matches VRAD behavior, both sides will block shadows
- Prop lighting preview may look downgraded due to this change, particularly with rocks inside displacements
This can be workarounded by setting prop lighting origins to a better info_lighting place
Lighting origins won't affect VRAD because it uses per-vertex lighting
- Fixed quick texture list dropdown going up by default, it will now try go down whenever possible
- Fixed textures longer than 128 characters being truncated in texture browser
- Fixed broken color picker layout
- Fixed useless Half Life 2 config being generated for Team Fortress 2 on first time use
- It will still appear if you had it from previous game configurations, but it can be deleted in options
- Fixed fog being enabled by default on 3D sky previews
- Fixed .oggs not playing in sound browser (for games that support it)
- Fixed entity key names longer than 32 characters being truncated
- Fixed entities defined with Uppercase letters in the FGD not loading correctly
- Fixed texture axes still showing on faces when selected with helpers toggled off
- Fixed hidden 3D sky instances and sky_cameras being considered as valid for preview
- Fixed env_beam/env_laser/point_spotlight sprites expanding the bounding box
- Fixed mdl corruption if more than 512mb total of model data was loaded
- Fixed incorrect path being generated when selecting Entity Scripts via the Manage button
- Fixed list of search paths in Messages window being truncated if it was longer than 4096 characters
- Fixed Run Map commands being wiped if the Edit window was exited without pressing Close
- Fixed Run Map commands with escaped $ (by using $$) not being parsed correctly
- Therefore $ can now be passed into commands
- Fixed black 3D views when resizing the window
- Fixed Jumpman colliding with tool brushes
- Fixed zombie hammerplusplus.exe processes remaining rarely after shutdown
- Fixed crash/corruption when changing configurations in Expert Run Map dialog
- Fixed crash when running Map -> Check for Problems with certain malformed FGDs
- Fixed crash when painting displacements if the displacement filters folder was empty
- Fixed crash if trigger_catapult had missing keyvalues
- Fixed crash if a face with valid luxels became invalid (0 area) and was baked in lighting preview
Build 8864 (November 1st 2022)
- Added point_spotlight, env_beam and env_laser preview
- Added ragdoll() helper to FGD to allow any entity to be simulated as ragdoll
- Improved performance of creating entity helpers
- Fixed compile window failing to open for some users
- Fixed DPI scale option not working
- Fixed cube missing for some entities that did not have sprites assigned
- Fixed scaling texture lock being on by default
- Fixed selection causing time to slow down for ropes, sprite and model animation
- Fixed wrong solid ID being printed in message window
- Fixed hidden objects being included when collapsing instances
- If you want to restore old behavior, set InstanceCollapseHidden to 1 in the settings.ini
- CSGO: Fixed crash when loading Portal 2/L4D2 particles
Build 8863 (October 31st 2022)
- Added convex + hole checker for brushes. This will catch invalid brushes that Hammer wouldn't pick up as invalid before, but could have caused VBSP to die (such as with the infamous "BSP unbounded" error)
- Note: some maps may get reported as having invalid solids when they previously wouldn't. If these are inspected closely, very tiny edges or holes can be discovered. A simple fix is to select all vertices and snap them to grid to make it valid again, or remake the brush.
- Added textured sprite icons in 2D view. On by default, this can be toggled off in options
- Added trajectory visualizer for trigger_catapult
- Added angles visualizer for env_blood, env_physimpact, env_entity_maker, func_movelinear, func_button, func_door, func_conveyor, info_projecteddecal, phys_thruster, shadow_control, trigger_apply_impulse, trigger_push, trigger_wind
- CSGO: Added vgui_world_text_panel preview
- Added option to change number of digits for texture precision, default is 4
- Added option to disable DPI scaling. If you had problems with wonky UI scaling before, disabling this should help
- Improved brush precision slightly in edge cases
- Improved performance when vertex manipulating a large displacement with detail sprites
- Significantly improve speed of Keyword filtering in the texture browser
- CSGO: Fixed model browser input being stuck if CTRL or SHIFT or ALT were held when exiting
- Fixed decals/overlays flickering if the material does not have $decal 1 (these work fine in-game)
- Fixed wrong working directory for the compiler window when executing thirdparty files
- As a result, the full filename workaround is no longer needed for tools such as Propper. Simply typing in 'propper' will now work
- Fixed brushes with less than 4 faces not being reported as invalid
- Fixed crash when vertex manipulating displacements and editing them afterwards
- Fixed crash when box selecting with vertex manipulation, pressing enter and then holding left click
- Fixed displacement duplication bug due to vertex manipulation
- Fixed crash when undoing displacements after certain operations
- Fixed undo not preserving all displacements for certain operations
- Fixed detailsprites persisting after destroying a displacement
- Fixed ragdolls appearing at map origin if invalid pose was specified by the mapper
- Fixed rare idle crash related to Discord rich presence (migrated to new Discord SDK)
- Fixed certain cases of random rendering crashes
- Fixed prop_static modelscale updating out of sync in lighting preview
- Fixed .ogg files not being playable (for source mods that support it)
- Fixed missing texture not appearing on sprites
- Fixed missing texture sprites being super tiny
- Reverted I/O performance changes to an earlier build. This should fix the rare situation where entities were unintentionally swapped
Build 8862 (July 1st 2022)
- Fixed broken shaders and pixel shader errors under CSGO
- Fixed entity swap bug when switching through outputs tab in I/O
- Fixed memory error when undoing displacements
- Fixed water appearing as missing texture
- Fixed broken layout of color picker in TF2/SDK2013
- Fixed FPS counter and position/rotation display overlapping with high DPI scale
- Fixed keybind for switching to lighting preview not functioning
- Fixed a crash related to copying entities
- Fixed wrong sprite animation timing while selecting
- Fixed background images drawing in the wrong order in 2D view
- Added option to invert displacement alpha, only works under SDK2013
- Added default cubemap/lightmap binding for particles
- Draw walkable surfaces option is no longer saved between sessions
- Unbound Duplicate Selection by default as users would accidentally press it, you can rebind it in the keybind editor
- Hammer++ will now attempt to autosave under a memory crash
- Removed dependency on BASS audio player, replaced with alternative
Build 8861 (June 25th 2022)
- Added $color, $color2 and $srgbtint support to texture browser
- Fixed Hammer++ not booting at all under CSGO
- Fixed entity class changing to the wrong one when navigating through inputs/outputs tab
- Fixed thumbnails not loading for certain textures
- Fixed alignment issues with func_monitor textures
Build 8860 (February 10th 2022)
- Added realtime arch tool in 2D/3D viewport, replacing the terrible 2D preview
- Fixed precision loss when creating arches with height addition consisting of decimals
- Fixed autosaves being flagged as invalid and displaying a warning message
Build 8859 (February 9th 2022)
- Added feature to set background images
- Accessible in View -> Set Background Images
- Customizable and accepts common image formats like .png, .jpg, .tga etc
- Saved in VMF
- Added ability to depth select in 3D view when using middle mouse camera controls by Shift + Middle clicking
- Under middle mouse camera control, instance preview is available under Ctrl + Middle click instead
- Changed info_player_* entities to spawn 1 unit above ground in 3D view as they don't work when touching floor
- Fixed crash when changing displacement power
- Fixed crashes when painting displacements
- Fixed issue where brush wouldn't move after selecting something in 3D view while box select was active
- Fixed entity targetnames referenced in an instance in outputs not being highlighted blue
- Fixed vmf_autosave files being incorrectly saved as 'vmf_autosavx'
- Fixed missing texture sprites being very small
- CSGO: Fixed Steam error when launching game from standard Run Map dialog
Build 8858 (January 30th 2022)
- Added color correction preview, available in View -> Set Color Correction Preview
- Color correction will only display inside lighting preview mode
- Added partial support for L4D2 under CSGO: Models that cause crashes will no longer be loaded
- The following model folders are blacklisted: survivors, infected, destruction, rollercoaster, props_vehicles
- Static props in these folders will still load successfully
- Added unique error message that displays which incompatible model caused Hammer to crash
- Holding Control while marking visgroups will no longer clear the selection
- Improved performance of entity output editing
- Improved performance of lighting preview when selecting objects
- Fixed brush entity conversions not updating their state for lighting preview
- Fixed vertex edited brushes not updating for lighting preview
- Fixed displacements breaking when changing their power
- Fixed displacements breaking when vertex editing
- Fixed particles not rendering correctly inside instances, including 3D skybox
- Fixed gizmo not rotating from entity origin
- Fixed selection highlight not being displayed in smoothing group view
- Fixed tool texture/nodraw toggle not working inside instances, for real this time
- Fixed certain monitor textures being misaligned due to case sensitivity
- Fixed conflicting sprite/model behavior in custom FGDs, reverted to stock behavior
- Fixed VMFs not loading under certain system languages
- Fixed sprites not rendering correctly inside instances
- Fixed overlays not assigned to any face creating excessive bounding box
- Fixed textures becoming misaligned when collapsing instances with texture lock off
- Fixed tool cursor appearing for entity tool when tool cursors were toggled off
- Fixed crash related to entity outputs
- Fixed crash with bad FGD configuration
- Fixed rare crash when loading a VMF while minimized
- Fixed another crash related to displacement editing
- Fixed eyedropper cursor appearing after escaping out of sprinkle tool
Build 8857 (January 25th 2022)
- Fixed monitor and missing textures becoming misaligned when saving the map
- Fixed tool texture and nodraw toggle not working inside instances
- Fixed edge splitting failing in vertex manipulation in certain situations
- Fixed crash in vertex manipulation when splitting
- Fixed func_breakable_surf always being flagged as invalid
- Fixed decimal issues in face edit sheet for all system languages (I hope...)
- Fixed invalid lights crashing lighting preview
- Fixed wonky displacements crashing lighting preview
- Fixed texture lock being reset after paste special
- Fixed textures longer than 128 characters crashing texture browser
- CSGO: Potentially fixed control/alt/shift getting stuck in model browser causing input to not work
- CSGO: Fixed browser for logic_script not working
- Decimals in face edit sheet are now cut off if not needed
Build 8856 (January 24th 2022)
- Fixed lighting preview not working under low texture quality. If lighting preview failed to work for you before, this is the fix
- Fixed freeze when merging or spliting vertices in vertex edit tool
- Fixed not being able to save VMFs inside cloud storage
- Fixed crash when loading incompatible FGDs
- Fixed issues when inputting decimal numbers if using the German or Spanish system language
- Fixed crash when copying objects from one VMF to another
- Fixed tool textures being visible in instances
- Fixed transparency state of objects not being updated in lighting preview
- Fixed map-specific .rad file not being read automatically
- Fixed not being able to save full paths in custom texlight filename
- Fixed crash if setting visibility samples to more than 512
- Fixed crash if a face had a too big lightmap
- Fixed overlays not being assigned when copying from one VMF to another
- Fixed models flagged as $mostlyopaque not rendering as translucent
- Potentially fixed crash when trying to open the file dialog
- Added keybind to switch to lighting preview model, default is Ctrl + F5
- Tool texture rendering state is no longer saved between sessions
Build 8855 (January 23rd 2022)
- Fixed Hammer hard freezing if the game was started up
- Fixed detail objects not being regenerated on a face if texture was changed
- Fixed wrong materials being assigned to sprites/brushes when translating
- Fixed quotes not being saved correctly for Expert compile configurations
- Fixed colorpicker appearing in wrong place on multi monitor setup
- Fixed materials prefixed with "materials" not having correct properties assigned
- Fixed crash while attempting to select something while inside a group of brushes
- Fixed crashes when editing displacements
- Fixed error when saving map in cloud storage
- Fixed tool textures not drawing when selected and being transformed
- Fixed error models appearing on sprites when using HammerAddons for Portal 2
- Fixed instance selection overlay not rendering in 2D views on brushes
- Fixed selected objects being overlapped by non-selected objects in 2D view
- Fixed long classnames being cut off (for real this time)
- Fixed crash when trying to simulate microbrushes, these are now ignored
- Fixed displacements being inverted after vertex editing
- Fixed entities placed by sprinkle tool disappearing under certain angles
- Fixed the red highlight on invalid faces not displaying
- Fixed crash when deleting instances
- SDK2013: Fixed a crash on map load in certain VMFs
- CSGO: Fixed modelscale being displayed on models that cannot be scaled
- Added Ctrl + D keybind to duplicate selection in-place
- Added option to disable gizmo
- Lighting preview: added option to toggle "soften cosine" from CSGO, this softens the look of surfaces
- Lighting preview: added debug option to show visibility tree and radius of selected lights
Build 8854 (January 22nd 2022)
- Fixed lighting preview running much slower than intended because multithreading was accidentally disabled
- Fixed tool cursors sometimes failing to display in 2D view
- Fixed crash while reloading models
- Fixed certain nodraw textures not being recognized as nodraw, e.g. tools/toolsnodraw_wood
- Fixed light cone not updating for entities like light_dynamic
- Fixed props with "Ignore Surface Normals" set to true being fullbright
- Fixed long classnames being cut off
- Fixed missing materials on models not being reloaded
- Material folders prefixed with "tools" will now count as tooltextures, such as "tools_custom/..."
- Enter key can now be used in the 3D view when box selecting
Build 8853 (January 22nd 2022)
- Fixed crashes when using displacement tools
- Fixed crash when showing map info if the map had more than 1024 textures
- Fixed crash when creating env_sprite_clientside
- Fixed crashing when vertex editing brushes with displacements
- Fixed a brush-related crash in physics simulation
- Fixed vertex tool toggling off tool textures
- Fixed modelscale not rendering correctly in TF2 and SDK2013
- Fixed model browser not saving the grid/wireframe/collision model state across panels
- Fixed fatal error messages being obscured or out of focus
- Fixed a case where the error message would not appear
- Vertex tool can now exit when invalid faces have displacements
- Custom folders prefixed with "tools" will now count as tool textures (for the tooltexture render toggle)
Build 8852 (January 21st 2022)
- Fixed an obstructive blue square appearing when selecting faces
Build 8851: Major update (January 21st 2022)
- Added Lighting Preview
- Simulate Source's iconic lighting right inside the editor
- High accuracy and reasonably fast when compared to VRAD
- Efficiently multithreaded, the more threads your CPU has the faster it will be
- Dynamic, fast updating of point lights and spotlights is supported
- Bakes can be done globally (full bake) or only in a certain radius
- Options configurable include:
- Dynamic Updating: Toggle automatically updating when changing a point light or spotlight
- Update Delay: The delay in seconds before updating automatically
- Texlight Filename: Custom .rads file used for texture lights. The lights.rad and .rad file is loaded automatically
- Sun Samples: The quality of sunlight, higher is better but slower
- Ambient Samples: The quality of ambient environmental lighting, higher is better but MUCH slower
- Visibility Samples: The quality of visibility testing for lights, higher is more accurate but much slower
- Light Radius Scale: Multiplier for how far a light can "see". Lowering this can make bakes faster but less accurate
- Light Brightness Scale: Multiplier of brightness for all lights
- Ambient Occlusion Scale: If non-zero, ambient occlusion will be baked. This is expensive, so it's off by default!
- Bounced Light: Bounces light so areas that a light can't see will still receive light. Only re-baked on full bakes
- Light Bleed Hack: Attempts to fix light bleeding through walls due to the nature of Hammer geometry
- Cubemap: Toggle rendering of the cubemap, as it can be distracting in certain situations
- Current limitations:
- Dynamic updating of geometry doesn't exist yet, use radius bake for now
- Instances are not supported (soon)
- Texture shadows are not supported
- Detail sprites and ropes show as fullbright
- CSGO: cascaded shadow mapping (CSM) is not rendered (soon!)
- Added Create Instance from Selection tool
- Accessed from Tools tab or keybind
- Converts the selection into an instance and places it in the correct place automatically
- Added 3D skybox preview
- To use: convert your 3D skybox section into an instance (use the new Convert Selection to Instances tool for this)
- The instance must have a sky_camera entity, otherwise it will not register as a 3D sky
- 3D skybox should now appear at real scale in your main map. Toggle the preview on/off with the toolbar button
- Fog preview is also supported in the 3D skybox
- Added Instance Preview
- Main VMF will now be shown while editing an instance
- Accessible via the new "Edit Instance with Preview" button or by middle clicking an instance in 3D view
- Note: 3D sky preview does not work properly in combination with this yet
- Overhauled rope rendering, now perfectly accurate to in-game and renders materials properly
- Ropes can now also be simulated, toggleable with a new button in the toolbar
- Added "Barbed" and "Dangling" property support
- Overhauled color picker
- Much easier to pick any desired color
- Variety of color model options (e.g. RGB, HSV...) to choose from
- Restored palette functionality, now saved per VMF
- Brightness slider is available if modifying a light
- New hotkey: press C with a light or prop selected to quickly open the color picker and recolor the entity
- Improved DPI scaling support
- Toolbars are now scaled up
- Text in the 2D, 3D views and messages window is scaled up
- Entity properties column sizes will scale correctly
- Removed "Font DPI" option, this is now set automatically
- Added ! operator to model and particle browser, any strings prefixed with ! will be excluded from the resulting list
- E.g. "vent office !dynamic" would list all models containing "vent" and "office", but NOT "dynamic"
- Added coloring to light_spot's cone model which matches the set light color
- Added "renderamt", "frame" and "framerate" keyvalue support to sprites
- Added support for FadeIn/FadeOut renderfx
- Added toggle for continuous mouse and line of sight testing in displacement tools
- Added font shadow to the FPS and position/rotation text display in 3D view
- Added support for secondary color/direction in fog preview
- Added support for realtime updates to fog preview
- Added alpha preview to prop_statics
- Added timescale modifier to physics simulation
- Added toolbar button to toggle the rendering of tool textures (trigger, skip, hint etc)
- Added toolbar button to toggle the of editor-only objects (e.g. the cone for a info_particle_system)
- Added ability to reset a keyvalue by right clicking in entity properties
- Added snapping to 15 degrees in entity properties compass by holding shift
- Added option to respect $decalscale when creating overlays, off by default due to bogus $decalscale values in certain games
- Added keybindings for the following:
- Toggle tool textures: Ctrl + Shift + F2
- Toggle editor objects: Alt + O
- Toggle helpers: Ctrl + Shift + f
- Toggle 3D skybox: Alt + V
- Create Instance from Selection: Alt + S
- Added ability to scale selected entities using shift/ctrl + mouse wheel
- Added rendering culling for particles and flat displacements
- Added button to Check Map for Problems dialog that ignores "unused keyvalues" errors
- Added new continuous mouse toggle for displacements tools
- Paints always while mouse is held, not just when moving (capped to 60 FPS)
- Added line of sight toggle for displacement tools
- Painting will only snap to first displacement under the crosshair, not to any displacements behind it
- Added option to change texture increment value
- Added option to use middle mouse for camera rotation in 3D view - workflow compatibility with Garry's Mod Hammer
- Added back model, particle and sound browser to the View tab
- Added shortcuts for them as well: Shift + F10, Shift + F11 and Shift + F12 respectively
- Added recursive collapsing for instances
- Following CSGO-specific features were added in:
- Added "script" FGD output
- Added 4 way blend displacement support
- Added displacement blend sculpting
- Added support for the new I/O vmf delimiter
- Added support for func_instance_io_proxy
- Added the "Show walkable collision surfaces" toolbar button
- Added steam API connection
- Added classic missing texture instead of using the native solid black
- Added grenade clip & drone clip autovisgroups
- Hammer++ FGD is now mounted automatically, it is no longer necessary to add it to the game configuration
- A warning will be shown if it's not found, or if an older version is being used
- Custom tool textures now get added to an automatic "Custom" category in visgroups
- Overlays are now preserved after using clipping tool on the brush they are assigned to
- Increased maximum zoom out level in 2D views
- Instances mode state is now saved
- Changed pivot to render as a white cross in 3D view rather than a sphere
- Changed texture coordinates to be truncated to 4 decimal places, not 3
- Changed sphere helpers to draw at a slightly higher polygon count
- Changed TeamMatch material proxy to always draw
- Changed camera to match in-game coordinate system, i.e. origin and angles of the camera are 1:1 to in-game
- Changed rendering to be active when the app is not in focus, but at a limited framerate
- Changed vertex rendering in 2D view to only display at high zoom levels
- Values close to an integer in the 2D view will now be shown as an integer (e.g. 134.004 -> 134.0)
- Scrolling in the texture shift controls will now increment by 0.005 instead of 0.1
- Color changes in entity properties now apply instantly rather than when you press Apply
- Pressing right click while transforming with gizmo will no longer do anything (use G, R, E hotkeys for this purpose instead)
- Entity tool now snaps to half grid when creating in 3D view
- Camera controls are now frozen while transforming with the gizmo
- Crash error message will now display reason for crash
- Vertex edit:
- Fixed stability issues
- Fixed not being able to merge vertices frequently
- Undo history is now saved locally rather than globally for each step taken in vertex edit
- Stability/performance improvements
- Instances are far more stable and render faster
- Overlays are rendered faster
- Undo is much quicker
- Creating brushes is much quicker on large maps
- 2D view is significantly faster
- Vertex rendering in 2D view is very fast, now re-enabled by default as a result
- Fixed empty Run Map dialog options for some users
- You will need to delete the hammerplusplus_sequences.cfg file in the "hammerplusplus" folder to reset this
- Fixed gizmo/pivot not using the origin point of a selected entity
- Fixed sprites rendering through walls, they are now always depth-tested
- Fixed sprite rendering being cached across several sprites with the same material, even if their keyvalues were different
- Fixed rendering of sprites doing way more work than it needed to
- Fixed FGD classes based on another class not inheriting helpers (fixes some entities like env_sprite_oriented not rendering)
- Fixed instances not being closed if the main vmf containing them was closed
- Fixed wrong text color for distance display in 3D view
- Fixed brief window flicker when switching between vmfs/instances
- Fixed pivot not being updated when copy pasting objects
- Fixed entities created in 3D view being misaligned when created on a brush
- Fixed brushes not being rendered properly in 2D view when inside an instance
- Fixed ugly decimal numbers being displayed for dimensions, now rounded within a margin of 0.005 units (134.004 -> 134)
- Fixed glow rendering in wireframe rendering mode
- Fixed memory leak due to all objects not being deleted when closing a vmf
- Fixed detail sprites to be correctly culled in a sphere radius rather than a box
- Fixed crash related to fog preview
- Fixed crash if non-existant instance was specified
- Fixed crash on instance VMF close
- Fixed crash when undoing or deleting func_instances
- Fixed crash if user clicked too early while loading VMF
- Fixed crash when closing all vmfs
- Fixed crash if a large string was entered into the replace field of instances
- Fixed crash when modifying compile configuration
- Fixed crash when assigning visgroups
- Fixed sprinkle tool breaking if entities had backwards slashes in the keyvalues
- Fixed overlay boxes flickering (most of the time)
- Fixed particles not rendering in instances
- Fixed particles sometimes rendering in the wrong positions
- Fixed particles not being culled when too far away from the camera
- Fixed particles not loading from recursive directories
- Fixed broken default cube texture in some rendering modes
- Fixed undo not working correctly for Entity Gallery
- Fixed entity targetnames with special characters causing infinite freeze on VMF load
- Fixed collapsing instances being very slow
- Fixed particles inside a subfolder not being loaded
- Fixed 4-way blend displacements not showing up correctly in shaded view
- Fixed textures that do not have a $basetexture being marked as invalid
- Fixed the Fix All button in Check Map for Problems dialog not working correctly
- Fixed walkable surface not displaying correctly on displacements
- Fixed entity sprinkle dialog remaining forever after closing a vmf
- Fixed selecting faces in 3D view not updating the 2D view
- Fixed Merge brushes tool not preserving entity state
- Fixed overlay handles not respecting the "Handle Size" setting
- Fixed point_worldtext not being selectable in 3D view
- Fixed point_worldtext having no representation with empty text, now displays a red outline square
- Fixed physics tools saving data for static entities, improves performance and fixes mismatched pose issue with ragdolls
- Fixed tool brushes in physics tool not updating their state after changing the texture
- Fixed collision model rendering not respecting model scale
- Fixed current time not being kept for rendering, fixes some shaders not moving
- Fixed 2D views not being updated after changing the gizmo mode
- Fixed sprinkle tool freezing on large maps
- Fixed entities with ridiculous fade bounds causing performance issues
- Fixed the bottom bar in model browser/particle browser/keybind editor not being painted
- Fixed particles spazzing out after alt+tabbing/a freeze
- Fixed fog always being rendered even when turned off
- Fixed hotloading of models causing crashes
- Fixed model textures not being reloaded when modified
- Fixed model texture hotloading causing freezes, now uses a queue like for models
- Fixed pivot not being reset when selecting another object
- Fixed model fade preview not displaying correctly in instances
- Fixed keybind editor, model browser and particle browser not resizing correctly with non-standard taskbar positions
- Fixed duplicate undo history entries being saved when applying textures
- Fixed missing perspective correction for camera FOV, fixes the distorted rendering when the 3D view was sized awkwardly
- Fixed env_projectedtexture helper not rendering correctly
- Fixed random crashes when changing fog controllers for preview
- Fixed file dialog crashing for some users
- Fixed potential crash while autosaving
- Fixed independent window configuration being broken
- Fixed incorrect window titles being shown in independent window configuration
- Fixed crashes when placing certain prefabs
- Fixed displacements wasting 1mb of memory each
- Fixed thumbnails not loading for certain textures like water in texture browser
- Fixed crash when trying to open Model tab in entity properties on an invalid model
- Fixed issues with func_useableladder entity
- Fixed func_monitor alignment problems (hopefully)
- Fixed uppercase entity classnames causing the entity to be shown as missing
- Fixed arch tool not saving side count
- Fixed not being able to input negatives into arch tool
- Fixed crashes on load due to power of 0/1 displacements, these are now discarded
- Fixed crash when selecting high poly models
- Fixed brush vertex data to snap to integer if close enough
- Fixed brush vertex data not cleaning up duplicate points
- Fixed brush vertex data not sanitizing NaN values
- CSGO-specific fixes:
- Fixed 4 way blend displacements not showing up correctly in shaded view
- Fixed UnlitTwoTexture not rendering correctly on models/world geometry in shaded view
- Fixed shift + mouse wheel hotkey (for scaling models) not working on grouped entities
- Fixed LOD being enabled on models
- Fixed luxels not being tinted depending on scale in lightmap grid view
- Fixed not being able to snap vertices in vertex edit
- Removed useless displacement toolbar button that had no purpose
- Removed some displacement popups that could get potentially spammed
- Removed MDL version checks as they were unreliable. This is now your own responsibility
- Removed file dialog hack as the file dialog now works properly without crashing
- Removed support for power of 0/1 displacements
- Manifests have been fully deprecated and will show a warning when used
Build 8849 (March 24th 2021)
- Fixed "hammerplusplus_scheme.res failed to load" error, for real this time!
- Fixed texture loading performance, this means you don't need to wait a long time for textures to cache anymore
- Behaves exactly like normal Hammer now
- Removed option to cache textures on startup because it's no longer needed to keep
- Fixed model bug that would create too much RAM (on very big maps, this reduces RAM usage by 1GB!)
- Fixed entity report crashing if an entity keyvalue was too long
- Fixed gizmo not rendering in Flat 3D view
- Fixed selections not behaving properly when selecting a single object while multiple were already selected
- Fixed To Entity tool showing "There are no eligible selected objects" message twice
- Fixed a crash that would be caused by particles loaded from newer games
- (TF2) Added back grouped mod sorting behavior in model browser
- Deleting selection is now faster on bigger maps
- Entity report is now closed when changing maps to prevent crashes from selecting invalid entities
Build 8848 (March 21st 2021)
- Fixed "hammerplusplus_scheme.res failed to load" error on startup, fixes crashing and rendering issues
- Added toggle to round points to integers in arch tool
- Added back modern styled file dialog UI
- If you are crashing with opening the file dialog, go into options and disable "Use modern Windows file dialog UI"
- Added transformation keybinds to gizmo tool, similar to Blender controls
- Pressing G, R or E will start translation, rotation or scaling, aligned to the camera
- Pressing X, Y or Z will lock the transformation to the axes
- Pressing combinations of X, Y, Z will add/swap 2 axes together or toggle between global and local axes
- Added planar handles to gizmo's scale component
- Added option to cache textures on startup (slow!!)
- Added Tie to Entity Individually tool, Shift + Ctrl + T. Each selected brush will be assigned its own entity
- Added error checking for any cordons that are enabled in instances (this would cause the map to not compile)
- Added rendering of yellow wireframe on top of selected models in 2D view, for visibility on dark models
- Toggleable in options
- Added option to toggle the rendering of face fill-in in 2D view
- Added checking for NaN brush points
- Added cool loading bar to caching textures when opening texture browser
- Added panel size slider to model and particle browser
- Added button to toggle grid in particle browser
- Transform dialog now supports using the pivot, which can be toggled
- Entity report now shows targetnames beside entities in the list
- VMFs are now always backed up before being saved (previously they wouldn't be backed up under some conditions)
- Significantly optimized texture browser memory usage. Fixes out of memory crash when having many high-res textures
- In clipping tool, aligned points in 2D view will now be moved simultaneously
- Cordon tool now deletes any 0 unit cordons automatically
- Fixed certain dialogs hiding between the Hammer view
- Fixed certain brushes being marked as invalid, even if they weren't invalid
- Fixed add height and angle in arch tool not working properly
- Fixed certain brush textures appearing as fully opaque
- Fixed particle mounting behavior in particle browser, mod particles take priority over default particles
- Fixed texture thumbnails in texture browser not being 1:1 in dimensions
- Fixed func_instance with an empty VMF being unselectable in 3D view
- Fixed overlays not being updated upon copying
- Fixed undo history being added for translations when no movement happened
- Fixed render FX toggle not toggling off custom colors
- Fixed render FX on brushes not being loaded on VMF load or when copying
- Fixed render alpha not being applied to brushes
- Fixed strange undo problems related to selections
- Fixed brush rendering becoming inverted when transforming them
- Fixed problems with applying func_instance VMFs
- Fixed sounds not playing in entity properties if sound browser wasn't opened first
- Fixed light_spot cone not rendering properly
- Fixed brushes being culled in 2D view when transforming
- Fixed skybox textures in 3D view being corrupted if loaded from texture browser
- Fixed being able to create arches with an arc of 0
- Fixed func_details being assigned to World Geometry visgroup
- Fixed func_instance VMF browse not showing an error message upon an invalid path
Build 8847 (March 17th 2021)
- Added checking for updates automatically on startup, can be disabled in options or done manually in Help tab
- Fixed search path behavior in SDK2013, it now behaves exactly like normal Hammer
- Old behavior can be enabled by creating a shortcut to Hammer++ with the '-legacy_searching' parameter added
- Removed support for temporary Garry's Mod mounting support, too buggy to be worth using
- If this was working for you before, you can still enable it by using '-legacy_searching' parameter as mentioned above
- Fixed invalid particles crashing on startup
- Fixed left click/right click + space bind to move the 3D view not working
- Fixed 2D skybox causing massive lag
- Fixed crash when converting displacements from power of 3 -> 4
- Fixed texture corruptions that resulted in weird behavior when selecting and rendering textures
- Fixed misaligned face UVs when changing rotation in Face Edit Sheet tool
- Fixed crash for certain users when opening any file browse dialog
- Fixed "script" FGD entry not being read and causing errors
- Fixed crash when loading models from a newer engine that are not supported (hopefully)
- Models that are deemed invalid will instead show up as an error model
- Fixed selection glow outline being randomly corrupted and causing massive lag
- Fixed massive lag when a warning message is being spammed
- Fixed missing textures on world geometry not rendering
- Fixed some certain textures appearing as missing, even though they aren't
- Fixed keybind conflicts for Ctrl + G
- Fixed add height and angle being inverted in arch tool
- Fixed greyed out apply button in Options
- Fixed crash when attempting to delete/modify a selected object while physics simulation is running
- Fixed manifests being unuseable
- Fixed UnlitGeneric textures being shaded
- Fixed UV keyvalues on overlays not updating when applied
- Fixed carve being completely unuseable
- Fixed modelscale of 0 making the model unselectable, now changes to scale of 1
- Fixed the bounding box keyvalue setting for models being ignored in physics simulation
- Fixed brush shading being too dark
- Fixed wrong title text when creating cylinder with right click
- (TF2) Fixed certain models turning into a black color
- Undo is now much faster on larger maps
- Added keybinds for move to floor ( Alt + N ), move to ceiling ( Alt + U ), and holding Control will angle to the face
- Face edit sheet, sprinkle tool and physics tool dialogs are now automatically hidden when creating or loading a new VMF
- Significantly reduced memory usage of the model browser
- Updated status bar at the bottom to use space more evenly
- Added option to toggle the mounting of the "downloads" folder
- Added option to toggle cubemap rendering
- Pivot is now prioritized over object origin when attempting to drag either one when they are overlapped in 2D view
- Shift + Q bind has been added back, it deselects the selection
- Polygon Tool has been rebound by default to Shift + N due to the above Shift + Q change
Build 8846: Initial public release (March 14th 2021)
General:
- Improved framerates, capped at 144 by default but can be changed in options
- Smoother and better performance overall
- Selections in 3D view are 400% faster, most noticeably on large maps
- Some AMD cards user might have experienced huge lag when selecting anything in 3D view, this is no longer an issue
- New sexy icon and splash screen
- Removed registry dependence, all settings are now stored in a local plaintext .ini file
- This means all your settings from other Hammers will not carry across to Hammer++ and vice versa!
- Added "boolean", "scriptlist" and "script" (for mods with VScript) variable support to FGD
- DPI Awareness enabled
- For 4k monitor users or any monitor with upscaled DPI, this will fix blurry windows + text
- Font scaling might be broken on 4k monitors, disabling the new Font DPI setting in the options might fix this
- Fixed many crashes and significantly improved stability
- Fixed memory leak due to materials never being unloaded
- Fixed displacements using a ton of excessive memory
- A map with 20k displacements would fatally allocate >4GB of memory, now it's only 1 GB
- Fixed strange behavior if minimum/maximum grid size was overwritten via game configuration or FGD
- Fixed crash if a too long material name failed to load
- Fixed hidden objects still attempted to be rendered and tanking performance
- Removed all obsolete Quake/GoldSrc code and references
- Raised memory limit, now allows for loading a ton more assets
( TF2 mappers: you can now load 3 prop libraries from ABS library at the same time without crashing )
- Raised unique model limit from 1024 to 8192
- Fixes crash when too many models were loaded
- Fixed crash if more than 1024 sprites were loaded
- Hammer++ searches for files in its own "hammerplusplus" subdirectory first, allowing for easy file overwrites that are Hammer-only
- Hammer++ can now mount games from outside its own directory, by changing the mod directory in the game configuration
- Basic Garry's Mod support: if "garrysmod" is detected in the mod directory inside game configuration,
Hammer++ will try to automatically mount any games you have mounted in Garry's Mod
- Added support for optional microgrid ( 0.125, 0.25, 0.5 grid size )
- Added Discord rich presence, can be toggled/customized in options
- Brushes
- Added vertex precise data for brushes in VMF
- Preserves brush shapes perfectly between sessions, no more vertices drifting away
- Data is saved inside the .vmf and is backwards compatible with other Hammers/compilers
- Can be toggled in options if you don't want to use this for some reason
- Precision of brushes has been significantly improved if created from old imprecise data
- Invalid solids will now be attempted to be recovered on VMF load
- Improved error handling so complex shapes will not corrupt themselves
- Brushes are no longer snapped to grid on creation (fixes spheres always being invalid)
- Raised brush creation limits significantly (i.e. cylinders can be created with up to 4096 faces)
- Face limit of 512 on brushes has been removed (also fixes BlockArray error)
- Optimized brush creation to be faster as well
- VMF loading safeguards have been hardened
- NaN brush UV values are automatically fixed
- Corrupted solids will be skipped over and noted, instead of stopping the entire VMF load
- Views will no longer go outside the grid
- Fixed crash from invalid geometry data resulting in a "BasePolyForPlane" fatal error
- Fixed crash if parsed entity has no classname
- Fixed crash if parsed entity is outside the grid
- Fixed crash if parsing stops early due to premature end-of-file
- Fixed freeze if an invalid grid size is specified
- Recent files list has been expanded to maximum of 16 elements
- Views are automatically centered on a leak when loading a pointfile
- Everything in the world is no longer selected when editing map properties (worldspawn)
- "download" folder is no longer mounted, stops community servers from clogging up the asset list
- Added ability to set prefab directory (ported from CSGO Hammer)
- Instances
- Instance VMF loading is now waaaaaaay faster, it will no longer load the same instance VMF multiple times
- Instances no longer clog recent files list
- Fixed incorrect rotations when collapsing rotated instances
- Crash handler
- Attempts to recover all currently open VMFs when Hammer crashes
- Displays a detailed error message
Graphics:
- Overhauled shaded view to match closer to engine shading (phong etc is now drawn on models)
- Revamped 3D grid
- Projects on 2 appropiate dimensions instead of 3 (chooses closest axis to face normal, in cardinal order)
- Changed clown vomit colors to a subtle grey
- Radius has been increased
- World geometry now has a white outline when 3D grid is enabled
- Grid lines aren't drawn on the edges of faces anymore
- Improved rendering speed
- Fixed overlays and sprites flickering in shaded view
- Fixed default cube appearing black/broken in shaded view
- Fixed displacements always appearing white in Flat view
- Fixed blendmodulate not displaying on displacements
- Fixed inverted alpha/translucency issues on brushes and displacements
- Fixed displacements not being shaded
- Fixed luxel coloring in Lightmap Grid view not working (this has been broken for a decade)
- Fixed $basetexturetransform materials incorrectly applying to other materials
- Fixed animations being shared across entities with the same model
- Fixed overlays not respecting wireframe rendering
- Fixed detail sprite rendering breaking if viewed directly from above/below
- Fixed materials appearing as missing textures if tooltexture is missing, now it fallbacks to basetexture
- Added 2D Skybox rendering in 3D view
- Added particle rendering in 3D view
- Added custom detail sprite preview support (no longer hardcoded to detail.vbsp)
- Added antialiasing and anisotropic settings
- Added texture and model quality settings
- Added fancy rendering option (displays bumpmapping + phong)
- Added material proxy preview support
- Animated/scrolling textures will not animate when using face edit sheet tool
- Added setting to display 3D camera position in 2D views
- Added option to draw selection outline through geometry
- Added option to highlight invalid faces in red
- Added option to outline invalid brushes/displacements in red through geometry
- Added new fancy model selection glows (similar to Source 2)
- Displays a yellow glow outline on the shape of the model
- Displays bounding box in blue
- Added new rope rendering
- Renders the texture, width, the slack and texturescale properties
- Added static prop lightmap texel display to lightmap grid view
- Added color, alpha, mode and FX rendering to brush and model entities
- Changed selected brushes to have a white fill in 2D view
- Changed NearZ clipping plane, you can now get much closer and personal with geometry
- Changed missing texture to the classic pink checkerboard
- Changed sprites to no longer draw through geometry (doesn't work in Source mods using custom shaders)
- Changed origin axes on selected models to be toggleable via the helper button
- Changed sprites, overlays, and detail objects to not draw in lightmap grid, smoothing group and flat view
- Changed models to be flat colored in lightmap grid, smoothing group and flat view
- Changed overlays/decals to render in 2D view when selected
- Changed lines from entities to no longer draw when helpers are toggled off
Entities:
- Added modelscale and bodygroup preview support
- Added 3D worldtext support
- Added func_detail_blocker preview support
- Added particle browsing support for info_particle_system
- Updated max keyvalue length to be in sync with the engine (512 -> 1024)
- Fixed undo/redo not updating changed models or other visuals
- Fixed the vertex buffer error crash when rendering high-poly models
- Fixed crash related to invalid sprite data
- Fixed memory leak due to entities being duplicated when an entity was modified in any way
Tools:
- Added adjustable pivot for rotational transformations
- Added drag select to most tools
- Hold leftclick/rightclick and anything under your crosshair while dragging is selected
- Added setting to adjust handle size
- Added flipping support to 3D view
- Also fixes inconsistent flipping behavior/greyed out option
- Selection by depth has been rebound to middle mouse click, also no longer bound to a timer
- Fixed a bug that would cause Hammer to automatically select stuff after alt+tabbing
- Fixed input being stuck if Hammer was minimized and restored while holding input
- Fixed moving brush entities to world (ToWorld button) skipping some of the selection
- Fixed brush faces becoming inverted upon certain rotations
- Fixed clamped brush materials not getting transformed and saved correctly
- Removed radius culling (it angered me too much)
- Removed useless I key that displayed Hammer-specific red rendering cullboxes
NEW TOOL, Gizmo Tool:
- Toggleable with the X key in selection tool; cycles through 3 editing modes: none, legacy (box dragging) and gizmo
- Supports translation, rotation and scaling
- Lockable to the X Y Z or XY, YZ, ZX axes
- Can be toggled to use global or local transformations with a new button in the toolbar
- Can be customized in the settings
- Camera orientation is drawn as axes in the bottom left corner of 3D view (toggleable)
NEW TOOL, Physics Tool:
- Inspired by Source 2 Hammer
- Physically simulate the selected entities or brushes, and their pose will be saved when simulation is stopped
- To simulate ragdolls, you must use a prop_ragdoll entity
- Objects collide against brushes, displacements, models and water
- Gravity and air density can be adjusted
- Holding left click will drag the physics object under the crosshair
- Pressing middle click will create an explosion
- Pressing right click will fire a bullet at the crosshair
- Optionally, only entities with the prop_ prefix can be accepted for simulation/collision testing
- Currently selected group, objects or solids mode affects collision behavior of selected brushes
NEW TOOL, Polygon Tool:
- Once again, inspired by Source 2 Hammer
- Draw a convex polygon shape in the 2D view from defined points
- Brush will be created from the shape and extruded as far as the previous selection
NEW(ish) TOOL, Sprinkle Tool:
- Ported from CSGO Hammer
- If you aren't familiar: https://developer.valvesoftware.com/wiki/Sprinkle
- Added new icon for the tool and moved it to the toolbar
- Added Refresh button, refreshes list of sprinkle scripts instantly
- Added Open Source button, opens the selected script in your native text editor
- Added Align to Normal checkbox, aligns the placed objects to the normal of the floor
- Sprinkle .txts are located in the bin/hammerplusplus/scripts/sprinkle/... directory
Selection Tool:
- Selection box is now filled with a white tint in 2D View
- Holding shift while rotating a handle will now duplicate the selection
- When resizing a brush by dragging, the dragging is no longer clamped at 1 unit if you try scale negatively
- If the scale is 0, it will be clamped to 1 like stock behavior
- When moving a selection containing a brush and entities, only the brush is used for snapping
- This fixes an off grid entity pulling brushes offgrid with it
Brush (Block) Tool:
- Box is now filled with a green tint in 2D View
- If creation fails, selection is preserved instead of being cleared
- Added Create Cylinder and Create Arch to the context menu when right clicking on selection
- Fixed pressing enter while holding leftclick causing "This box is empty" error
- Fixed block tool creating selections with a depth of 0, now fallbacks to current gridsize if that happens
Entity Tool:
- Enter now works in 3D view
- Objects can now be created in 3D view on top of models
- Objects created from 3D view are snapped to grid, holding ALT when creating will disable this
- Prefabs are no longer snapped to grid by default upon creation, for consistency with entities
Clipping Tool:
- Added 3 point clipping
- Allows new ways to clip brushes that was impossible before
- Can be toggled between old 2 point clipping behavior with C key
- Shows measurements by default (press O to toggle)
- Applies currently selected texture to clipped face
- Clip line, clip plane and handles are now drawn in 3D view
- Handles in 3D view can be dragged around
- Selected handles are now highlighted in red
- The clipped out brush is now highlighted in red
- Selected entities can now be clipped
- Fixed text being rendered multiple times over itself
Overlay Tool:
- $decalscale in the material is now respected when creating an overlay
- Fixed broken behavior after undo/redo
- Fixed grouped overlays not being possible to select
- Copy and pasting a single overlay will now automatically assign it to any brush under the crosshair
- Overlays are snapped to grid, unless alt is held or its on an angled surface
- Overlays are updated per frame when dragging
- Overlays and their handles are now rendered and selectable in 2D view
- Escape key now exits overlay tool
- Creating a new overlay will deselect the entire selection, unless ctrl is held
Apply Texture Tool:
- Fixed undo history not being saved when applied to brush entities
- Fixed apply texture saving undo history even when nothing was applied
- Optimized to be significantly faster with larger selections
Face Edit Sheet/Material Tool:
- Mapping texture dimensions are used instead of raw dimensions for calculations (fixes issues with clamped textures)
- Raised displacement paint limits
- Applying textures is *significantly* faster with bigger selections
- Added undo history to Align To View and Displacement Create
- Added Random X and Y shift buttons
- Added Mark button
- Added UV x/y/z controls, which can be used to skew textures as well
- Added Apply Nodraw button: quickly applies nodraw to selected face(s) without overwriting current selected texture
- Shortcut: Ctrl + right click
- Reorganized dialog to be more sensible
- Added texture axes for selected faces (feature from GoldSrc Hammer that has been broken in Source)
- Can be toggled off via the Helpers toolbar button
- Fixed faces frequently being selected after undo/redo
- Fixed UI not updating after undo/redo
- Fixed strange selection behavior if texture browser wasn't loaded once before
- Escape key now closes face edit sheet
Displacement Tool:
- Views are only updated when necessary instead of per frame when moving mouse, improves performance
Vertex manipulation:
- Added realtime updates to brush
- Added undo history
- Removed "edge with both ids..." message
- Changed box selection to create a new box if clicking on empty space
- Fixed Alt transformations behaving weirdly
- Displacements are no longer destroyed on invalid faces
Cordon Tool:
- Added multiple cordon support (ported from CSGO)
- And yes, stock VBSP does compile multiple cordons correctly
- Cordons are accessed from the new Cordon tab beside the Visgroups
Arch Tool:
- Negative widths now work properly and no longer create invalid solids
- Width and added height now accept decimals
- Added stretch to fit bounding box option (moved from general settings)
Carve Tool:
- Fixed crashes with malicious shapes
- No longer attempts to carve hidden or invalid brushes
UI:
- UI now uses native Windows theme instead of Win9x theme (this can be disabled in Options)
- Most fonts in the UI are now antialiased
- Raised limits on rendering distance
- New splash screen and credits page by Izotope
- Dimensions are shown to max 3 decimal points instead of 1
- Invald solid message on VMF load is much more descriptive, now lists IDs of invalid solids/faces
- Last used texture is now saved between sessions
- Title is set to instead of blank when creating a new map
- Added Undo/Redo bar toggle to View -> Screen Elements
- Manifest control is now hidden by default
- Fixed keybind for Apply Current Texture tool not being listed
- Fixed custom cursors not working on several tools (this has been broken for a decade)
- Added a setting to disable custom cursors
- Fixed the "camera" text flickering in views
- Fixed certain dialogs not coloring correctly with a custom user theme
- Fixed decimals not being parsed correctly in all dialogs, causing severe precision loss
- Fixed flickery mouse drag cursor if holding space and moving mouse
- More concise FPS counter, and camera position + rotation displayer (toggled with O)
- Shushed a lot of useless messages/warnings in the Messages window
- Removed "Load Last Save" dialog after re-opening from improper shutdown (was made redundant by crash handler)
- Sprites, overlays, and some other entities/toolbrushes are now assigned to an auto visgroup
- Last selected game in game selection on startup is now saved between sessions
- Message box is now displayed while autosaving
- Added wait cursor to startup/several operations
- Options that require picking a directory now use latest Windows UI instead of clunky ancient UI
NEW menu bar tools:
- Change color of selected objects
- Change grid size to manually-specified value such as 80x80
- Automatically move selected objects down to nearest floor or ceiling, and optionally align to the face's normal
- Fog Preview
- View -> Set Fog Preview, allows you to preview env_fog_controllers in the 3D view
NEW tool bar buttons:
- Toggle the drawing of particles
- Toggle if only selected particles should be rendered
- Toggle the rendering of special entity effects (alpha, mode, FX)
- Toggle the rendering of the 2D skybox in the 3D view
- Toggle between global or local transformations for the gizmo tool
NEW Particle browser:
- Allows the browsing of all particles from all .pcf files in a grid-like view
- Each view can be manipulated via the mouse like in model browser
NEW Keybind editor:
- Edit most of the keybindings available in Hammer
- Available in the Tools tab, under Options
- Saved to hammerplusplus_keybindings.cfg
- Unfortunately, there are some quirks due to limitations in Hammer's UI system, and will not be fixable:
- Modifiers (CTRL, ALT, SHIFT) may not work on all bindings
- Some bindings require a refresh of any open maps to take effect
- Mouse bindings are not possible to edit/assign
3D View:
- Camera orientation is rendered in the bottom left corner as axes, toggleable in options
2D Views:
- Middle mouse click can now be used alongside spacebar to mouse drag around the view (like Garry's Mod Hammer)
- Scrollbars update the view per-frame and smoothly now instead of when released
Run Map dialog:
- Custom compiling window ported from CSGO that no longer freezes itself and Hammer
- Run map commands are now stored in a plaintext .cfg file instead of a binary format
- This means run map commands from other Hammers will not carry over and will need to be re-applied
- Significantly expanded the width of the dialog
Entity properties dialog:
- Added tab / shift + tab shortcuts, moves selection down or up, respectively
- Escape characters are no longer corrected (e.g. \n -> /n), useful for game_text entity
- Fixed Instance browse button not working under most paths
- Pick Angles button now goes into current selected keyvalue, not hardcoded to "angles"
- Added safeguard against this character: ", to prevent VMF corruption
Texture browser:
- Added alpha channel display
- Changed missing texture to classic pink checkerboard
- Added 32x32, 64x64 and 1024x1024 resolution option
- Fixed long texture names overflowing the boundary
- Fixed strange selection behavior on first load
- Materials with no valid texture are now listed regardless
- Materials with Vertexlitgeneric shaders are no longer listed
- Now shows the rightmost of the texture name
- Removed useless icons
Rendering Modes:
- Restored hidden 2D Logical View
- Removed lighting preview (doesn't work correctly, will be added back when its in a better state)
Inputs/Outputs dialog:
- Procedural targetnames such as !activator, entity classnames or wildcards are now regarded as valid
- Fire once checkbox has been changed to Refires text box, allows specifying an output to fire a N amount of times now
- Beside the Refires text box is an arrow incrementor for fast adjustment of times to fire
- Fixed column widths being too short
- Added safeguard against this character: ", to prevent VMF corruption
- Added Insert/Delete button hotkey for entity output dialog (creates output and deletes output, respectively)
Sound Browser:
- Added MP3 + .ogg (for mods using FMOD) support
- Added volume slider
- Fixed sounds not being possible to modify/delete externally after being played in Hammer
Transform Dialog:
- Added saving of entered values between uses
Paste Special dialog:
- Any rotation values, including negatives, are now allowed
- Raised maximum paste limit from 256 to 65536
- Added option to rotate around pivot instead of bounding box centre
- Fixed incorrect rotation axes
- Fixed decimals not being accepted for offsets
Options:
- New page tab for Hammer++ settings
- Added reset button
- Removed max cameras setting
- Removed grid intensity (grid color customization made this redundant)
- Removed default grid setting (VMFs overwrite this)
- Draw vertices is now disabled by default due to being a big performance hit
- Added mouse sensitivity slider
- Added reverse X/Y mouse setting
Model Browser:
- Improved lighting, now renders like in-game with phong etc
- Filters are now updated on a timer, makes typing less laggy
- Added wildcard filtering, whitespace seperated
- Fixed model browser randomly freezing input
- Fixed model browser window not showing correctly on first ever load
- Fixed horrible framerate, now runs at 60 fps
- Fixed black background
- Fixed models merging into other models
- Fixed models not respecting their sequence FPS
- Fixed permanent laggyness after closing model browser due to it updating in the background
- TF2 Only: Added filtering of useless economy models (hats, weapons, etc), cuts down 9000 models!
Entity Report dialog:
- Added checkbox to include objects inside instances, disabled by default
Check for Problems dialog:
- Added 2 new error checks:
- Displacement assigned to entity
- Invalid, missing or blank model in entity
- Removed info_player_start problem in Check for Problems dialog
- Procedural targetnames are no longer reported as invalid
- NaN values in brush UVs are now listed as invalid
- Added undo/redo history
- More descriptive message for invalid solids
- "angles" is no longer regarded as an unused keyvalue
Go to Coordinates dialog:
- More formats are now accepted, e.g. "Entity (x y z) leaked!"
Map Information dialog:
- Anything inside instances now adds to the solid and entity count