1,023 Commits over 1,127 Days - 0.04cph!
piss. fix DrawMaterialIcon -> DrawIcon
Add category count / filters to tools console widget so people can see they have errors and easily see them
https://files.facepunch.com/matt/1b2911b1/sbox_neEB3rhcQI.png
Rename "Legacy Source1 Inverted Normals" -> "Inverted Normals (-Y)"
Closes Facepunch/sbox-issues#1395
Add commands AlignObjects (Alt+T), AlignObjectsRotation (Alt+R) and AlignObjectsToWorkplane (Alt+E) to the selection tool
Add a hotkey table to the selection tool to make it more intuitive for newbies
https://files.facepunch.com/matt/1b2711b1/sbox_dqOz2azaq7.png
Hammer: Add default bind for SetOriginToPivot command ( Ctrl + D )
Hammer: Add AlignWorkplaneToObject command, default bind Alt+Q
Give unique filenames to partial classes generated within the same file so the generator doesn't shit itself and crash
Fixes Facepunch/sbox-issues#1968
Overload Package.Equals/GetHashCode to match Package.FullIdent, resolves Hammer thinking the same local addon is individual packages.
Give content & model addon types proper package type mappings, prevent them showing in local games menu
Mark games to compile in tools mode in a more sane place in Sandbox.Tools instead of Sandbox.Engine
Recompile game addons on changes in tools mode when not actively in-game too, so you can adjust game resources / hammer entities without being in the game
List/Dictionary property editors work with IList / IDictionary (used by [Net])
I tried doing it within CanEditAttribute.CreateEditorFor, iterating over interfaces the type implements but it ended up being a huge sprawling mess.
So just did a plain and simple [CanEdit] of both List<> and IList<> on the same editor
Fix Theme.DrawFilename if there's not enough room for the directory
Dictionary<,> property editor, probably looks a bit shit but can't think of how to shag it up
https://files.facepunch.com/matt/1b2311b1/sbox_uEj3AVv3OB.png
Improve VR performance by as much as double, enabling multiview instancing by default and lots of misc changes to the VR render process:
- Fix our shaders for multiview instancing to work with the new transform system
- Hard code some dumped stencil meshes for Oculus HMDs, reduce render area from 5-14% ( SteamVR doesn't pass us these )
- Remove multi-gpu support, complicates shit and pointless for us to even attempt to maintain
- Add SCENE_RTSIZE_VRFRAMEBUFFER and make it adjust to multiview size, avoids allocating 8K render target for framebuffer fetches on VR
- Don't attempt to render viewmodel shadows in VR
- Fix asserts from C# trying to update viewmodels in VR mode (scenesystem transforms are locked here)
- Global.IsRunningInVR doesn't false report if you're running in non VR mode with SteamVR in the background
- Generally loads of dead code removal in the render pipeline
Co-Authored-By: Sam Pavlovic <sam@sampavlovic.com>
Allow [Change] to be combined with [ConVar.*] the same way as [Net], e.g:
```csharp
[ConVar.Replicated( "my_variable" ), Change]
public static float MyVariable { get; set; } = 100.0f;
public static void OnMyVariableChanged( float oldValue, float newValue ) { }
```
vsnd is a native type for ResourceTypeAttribute should fix the sound editor, this whole system is pretty messy though
Fix TypeLibrary.GetDescription( Type ) returning inherited types randomly which was causing prop_physics to become PropGib in Hammer and probably a load of other shit
Add TraceResult.HitPosition same as EndPosition for rays, but for sweeps its going to be the contact point where as EndPosition should be how far the sweep got
Add support for sweep traces against sphere shapes, needed to do some bullshit with a 0 radius sphere
Make [UseTemplate] work properly on consolidated builds (used for s&works) - instead of the generator trying to guess root directories feed it a map of physical paths -> virtual paths for all the cs files
Don't give alternate flags when querying DX11 display mode list
Fix crash when registering the minidump handler due to addon stuff being removed
[HideInEditor] works on asset properties
Give [GameResource] a default question_mark icon so it's not null by default (also fix DrawMaterialIcon shitting the bed with null)
Fix static/dynamic colors not working on [EditorModel] ( This is only used for light modes, weird fucking place? )
Fix regression where entities base properties were getting stomped
If we can't allocate transform data (because of shitty small cbuffers) stop trying to render instead of just crashing, this should fix Hammer crashing on complex maps temporarily until structured buffers are merged in.
AddonConfig.GetPackageType() supports tool, fixes tools showing in local games list
Cursor gets set properly when you focus back into the game from tools
Fix `cursor: none` not working ( last cursor type wasn't getting set and always assumed to be 0 (None) )
Bit of error checking in CSteamAudioScene::BakePathData when creating path data to avoid access violation crash and give us the actual error
Hammer: Add toggleable fullscreen layout ( Shift + Alt + Z )
https://files.facepunch.com/matt/1b1211b1/sbox_0AAXaFMbCO.png
Add description to ModelDoc prop_data "Bake Lighting As Static Prop" so it doesn't seem unimplemented
Delete ModelPropData.AllowStatic - did nothing
Collapsible game tabs in Hammer entity selector
https://files.facepunch.com/matt/1b1111b1/sbox_h9bb4QJuJf.png
Replace per tool GameData with a shared one managed by IToolFramework2, move the managed GameData out of Tools.MapEditor and into Tools, same with it's interop.
* Decoupled CGameData from CGameConfig (mapdoclib), removed g_pGameData use the IToolFramework2 locator now instead.
* Initialize managed GameData from CToolFramework2::Init() before anything could ever need it.
* Populate GameData from managed asynchronously, this solves race conditions of loading Hammer too fast, as well as letting you add localaddons mid game.
Tool scenes loading maps will now have access to all this managed game data too, solving lighting issues / missing sky boxes in modeldoc / others.
This also gives us a very easy route to deprecate fgd files in ModelDoc if desired.
Instead of loading GameData from addons on initialize, load it in from assemblies when added to GameAssemblyManager
Unfuck the map compilation, gotta use a dirty global for gamedata still in mapdoclib, set it automatically when toolframework2 is avaliable, mapcompiler manages it's own manually though.
A couple of dirty hacks to do this, we can undo these if we end up making map compilation not use a seperate process - or there may be some nicer ways to do these globals.
Add some additional launch profiles to Sandbox.Engine for VR or going straight into a map, etc.
Add VR checks when creating a VROverlay
Don't try creating a borderless window in tools mode, fixes keyboard input not working in-game on tools
VR: Get auto fidelity levels actually loading from their config, they don't seem to do anything yet though so need to tinker more
Fix bizzarre rendering logic preventing VR autofidelity from setting the render targets size
Default vr_depth_submit to on
VR overlays should set their transform from standing origin, this should be more consistent with everything else in the engine now
Added `VrHand.TriggerHapticVibration( float duration, float frequency, float amplitude )` Usage: `Input.VR.LeftHand.TriggerHapticVibration( 0.25f, 100.0f, 1.0f )`
This is clientside only for now, we can probably hook it up as an RPC though if it's required.
It would've been nice to hook this up as a unified API with controller vibrations, but haptics and rumble are pretty different, enough that emulating it either way ends up being utter wank.
VR: Simplify and remove more code that we use OpenVR for or has no purpose for sbox
VR: Submit depth texture to the SteamVR compositor, flagged behind `vr_depth_submit 1` - this primarily assists Occulus' time warping / reprojection, but could help other HMDs too
Remove CS:GO freeze frames from world renderer ( they didn't work, if you wanted them to work you'd easily make them in C# )
Remove some dead code from world renderer
VR ALWAYS uses a compositor, remove a lot of dead code from the renderer
Fix VR window display being bizarrely offset or not displaying anything at all depending on VR render resolutions
VR: Set the render viewport to the SteamVR recommended render target size and not the window size ( this was making the default resolution 1080p )
Hammer: Add tiling support to fast texture tool ( behaves exactly the same as the one in dota tools )
Before: https://files.facepunch.com/matt/1b0211b1/sbox_8X63pqiVql.png
After: https://files.facepunch.com/matt/1b0211b1/sbox_ylhMiqliDi.png
Improve Hammer workflow for creating game entities
https://files.facepunch.com/matt/1b2911b1/sbox_qmlxFg0pft.png
Use a factory interface for Hammer tools as natively there's a tool class for each open editor session
Hammer: EditorDefaultValue add support for Color, Vector3/2, Angles, Rotation - allows you to specify default values as you would expect instead of as a string in an attribute
```diff
- [Internal.DefaultValue( "0 0 0" )]
- public Angles MoveDir { get; set; }
+ public Angles MoveDir { get; set; } = Angles.Zero;
```
Revert "Fixed default value for Entity Color in Hammer"
This reverts commit 78256d7b7abf88f067cd05ce857a804cbb5e493c.
Fix insane memory usage (6.8GB -> 700MB in menu) - thread_local in CNetworkStringTable was creating 20MB of buffers per thread..
Hammer: Set entity origin when creating a solid entity in Entity Tool
Hammer: Override materials on the preview mesh for Block Tool when creating a solid entity with [Hammer.AutoApplyMaterial]
Fix game hang when the SDF shapes cbuffer can't be locked and it's handle invalid, prefer tier0 V_memcpy
Fix Hammer door helpers - merge the duplicate doorhelper and door_helper classes so you don't get fooled into using the wrong one
Copy & restore clientside Input state during Simulate, should fix double inputs when you press exactly on a server tick
If Input.Down/Pressed/Released are used serverside outside of a simulated context throw a warning that you're using it in the wrong place
Fix Input.Down / Input.Pressed being delayed or not working at all when used clientside outside of Simulate
Fix [Hammer.DoorHelper] using the wrong editor helper