1,495 Commits over 1,157 Days - 0.05cph!
Move the error list from Sandbox.Tools to tools addon
ErrorList keeps a static list of diagnostics for when the widget is hidden/shown as well as hotloading
Use lovely new managed ItemListWidget instead of ListView for ErrorListView
Rework Entity.OnPhysicsCollision API a bit, mainly adding all data for the other entity in a collision as well as the Surface and PostAngularVelocity of both
Restore physicsgamesystem interop used for collision event
Remove CBaseEntity::VPhysicsShadowCollision (S1 legacy code)
Delete PhysicsGameSystemS1 and other unused crap
Get rid of legacy gamevcollisionevent_t, cleans up calls to CBaseEntity::VPhysicsCollision
Move C# collision interop from CBaseEntity::VPhysicsCollision to CPhysicsGameSystem::DispatchCallbacks, call C# once per collision instead of once per entity in that collision. Give ourselves additional data to expose onto the game API.
Quick shit script to auto update our .NET runtime
Update to .NET 6.0.7
Uncomplicate loads of shit in the error list, fixes base addon errors, as well as reports menu and tools errors too. If an addon has no errors but still has warnings we'll show those too but won't raise the error list dock.
I've explicitly not let the Compiler report it's own errors to ToolsDll since it's all done in threads, plus it'll be quicker for Qt to update batches.
Use collapsible group boxes to make face select tool property UI way less intimidating (expanded states get saved)
https://files.facepunch.com/matt/1b1411b1/sbox_yAccfHxJFw.png
Asset.OpenInEditor can specify an optional parameter to open assets in specific engine tools
Add "Create model" to fbx assets in Asset Browser that opens ModelDoc same as legacy browser
snd_event_point should play from the entity instead of it's position, this way it'll behave correctly when parented to a moving platform.
I think this was the original intention of this entity, but we'd opted for Sound.FromWorld because sounds were playing at 0,0,0 - this was very likely because this entity was never transmitted to the client, which it now is.
fix ident_size being wrong in all our .editorconfig
Hammer taglist supports editing multiple selected (as long as they don't have different values)
Hammer map meshes use tag property editor for embedded Tags property
Editor errors list (#360)
* Error list for the editor, gathers compile errors and takes you straight to them in your code editor
* Right clicking error gives you a context menu of Open in Code Editor or Copy Error
* Disable compile errors going to console whilst in tools mode
* When a build error occurs make sure the errors list dock widget is open.
https://files.facepunch.com/matt/1b1211b1/sbox_yu3L3pwgEx.png
Selected addon ident filters properly
On build errors auto open the error list, show a little status bar message saying you fucked it. Was hoping to do this as a widget in the status bar but it would not work at all.
Right clicking error gives you a context menu of Open in Code Editor or Copy Error
Double line errors, path at bottom, more space for error at top. Make the colours less harsh (probs need more tweaking)
https://files.facepunch.com/matt/1b1211b1/sbox_yu3L3pwgEx.png
Get the right line numbers w/ mapped spans, make sure we +1 too
In tools mode don't spam the console log with compile errors
Add ListView<T>.OnItemDoubleClicked virtual
Error list for the editor, gathers compile errors and takes you straight to them in your code editor
https://files.facepunch.com/matt/1b1211b1/sbox_abiaWO2Hpa.png
Shit test for a status bar widget showing build result
Don't open the legacy asset browser on startup, make it so you can access it easily from the tools menu bar still though for now
Hammer: Remove large toolbar from map window, tuck into a small layout icon button - I'll probably shuffle some things from the "Fullbright" menu into this still. Also fix the icons for these layouts using the wrong path.
https://files.facepunch.com/matt/1b0411b1/sbox_tVMBcvmiCL.jpg
Hammer: Get rid of all the text in the top toolbars, huge waste of space that also limited usage as vertical toolbars
https://files.facepunch.com/matt/1b0311b1/sbox_oNHtLaD5Kf.png
https://files.facepunch.com/matt/1b0311b1/sbox_vH2CK68K7H.png
Hammer: tidy up the outliner widget to make use of space better
https://files.facepunch.com/matt/1b0311b1/sbox_x99gtaxdGM.png
https://files.facepunch.com/matt/1b0311b1/sbox_Rx3STK6r6U.png
Hammer default layout remove auto vis, selection sets, undo history, map problems
Fix Surface not loading AudioMaterial properly making sounds extra wanky cause no material surfaces were defined
Add internal virtual GameResource.PostLoad( GameHost ) for GameResource in Sandbox.Engine to know what host to grab any dependency GameResource from
Defer calling GameResource.PostLoad until after all GameResource are "loaded" and can be grabbed with Resource.Get. Not really a hack and lets people do the most obvious thing
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>
Always skip BaseViewModel.UpdateAllPostCamera when in VR, avoids a circular dependency that was consuming a chunk of frametime because scenesystem abs transforms were locked.
Ideally games shouldn't be making view models in VR either though.
Global.IsRunningInVR is only true if the game is started in VR mode, instead of if SteamVR is running
Render less on Oculus HMDs using stencil meshes to reduce frametime, for some reason they've never been exposed via OpenVR so hard code ones dumped with libovr.
* Rift CV1 renders 14.07% less area
* Rift S renders 11.26% less area
* Quest renders 5.69% less area
* Quest 2 renders 9.13% less area
Core shaders with multiview and fixed instance strides for transforms
Add instance stride to shader too for multiview instancing
Fix transform instance id in multiview cables shader
Simplify render pipeline by removing dead code for rendering world sessions to textures, we use the view system directly when rendering to texture
Strip multi-gpu support to simplify our rendering pipeline further in preparation for single-pass VR rendering
Loop cuts in the edge cut tool, pretty close to done but having a brain block so I'll come back to it
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? )
Update SteamInput attack actions to match C#