1,023 Commits over 1,127 Days - 0.04cph!
Delete dota healthbar SFM code that plagued the IToolService and ISource2Engine
Dock Error List in default layout
Only enable vr_depth_submit on Oculus as their positional timewarp is the only thing that makes use of it. WMR OpenVR driver would instantly crash on depth submits, so this resolves that too.
Revert "Make Entity.IsAuthority a virtual property"
This reverts commit 1533014f19347562cbac07a148ee3926da2f64ad.
Make Entity.IsAuthority a virtual property
BaseItemWidget: Ctrl clicking selected items removes them from the selection
Fix AssetBrowser not loading saved settings correctly - Fixes Facepunch/sbox-issues#2063
Fix Hammer texture replace window's asset picker shrinking and becoming unusable
Asset Browser: can make new folder from AssetList
Enable MultiSelect on AssetList
Don't try to open a context menu if we have no options, otherwise Qt will moan
Implement shift click multiselect in BaseItemWidget
https://files.facepunch.com/matt/1b0211b1/sbox_2u4H5Gcpcl.mp4
Entity.networkTags should use StringComparer.OrdinalIgnoreCase when updated from network
Fix FileSystem.RebuildContentPath() skipping over addons because it was using File.Exists instead of Directory.Exists. Fixes Facepunch/sbox-issues#2085 and probably quite a bit of other stuff
steamaudio_enabled -> steamaudio_enable, drop FC_ARCHIVE since I suspect loads of people had it saved to 1 :(
Temporarily disable Steam Audio by default to resolve crashes as the heap corruption has persisted even without IPL_SCENETYPE_EMBREE
Tag steamaudio_enabled so we can see it in Sentry, so we can be 100% sure
Add steamaudio_enabled cvar
forgot to force add the .dll / .lib for aftermath
Catch nvidia gpu crashes with nsight aftermath and `-nvgpucrashdebugging` cli flag, struggling to get any significant context out of this on D3D11 so may just revert this at some point
m_pDriverVersion reports as "unknown" instead of a null string
don't use V_vsnprintf in SentryOutput, external code can specify the funky %S format specifiers
Texture2DBuilder.Finish(): correctly check the memory required for texures w/ mips
Remove fallback DX9 code for getting driver version, it's straightforward to grab from the registry by the DX adapter LUID.
This returns the same windows driver version numbers DX9 was reporting, but I've added some vendor specific renames
e.g for nvidia "31.0.15.1659" becomes "516.59" making it easier to filter by driver for us
rendersystemdx11: stop linking d3d9
rendersystemdx11: stop linking nvapi
LoadD3dCompiler calls Plat_LoadModule without full path ( this is exactly the same way ADJ and we use the same d3dcompiler_47.dll - so hopefully that fixes weird WINE shit )
Replace Direct3D 9 PIX with D3D11 ID3DUserDefinedAnnotation - we're getting a much better list of events in RenderDoc now too
New: https://files.facepunch.com/matt/1b2911b1/qrenderdoc_5uxtBKqZlV.png
Old: https://files.facepunch.com/matt/1b2911b1/qrenderdoc_fcTCgPGtQT.png
- Enable CPixEventScope to record events, these are used to tell us our View / Layer
- Don't limit these events behind Plat_IsRunningOnCustomerMachine() - there is no overhead and it can be incredibly helpful for us having them on Steam builds
Implemented following guidance of: https://developer.nvidia.com/blog/best-practices-gpu-performance-events/
rendersystemdx11: don't link d3dx11 legacy stuff
Fix ErrorReports::UpdateGpu usage from rebase conflcit
Delete dead D3DX dlls
Hammer: fix crash when closing editor sessions with active working sets
Make compile errors from publishing report to error list, catch this and report it properly on the publish window. Also make tool addons report to error list properly.
Include prerelease versions of Visual Studio when looking with vswhere
Fixes Facepunch/sbox-issues#2058
Accidentally removed 1 line too many, fixes non-tools not opening
Remove some obvious dead code and unused stuff from gameinfo.gi, update the DeveloperHelpURL to the wiki
Get rid of -toolsonly, didn't launch anything and our tools are so integrated with the editor it doesn't make sense
Remove GameUI interface
Cleanup native tools menu bars to match our C# editor, I'd do this entirely in C# but we don't have interop on every tool
Delete complicated / hacky pane modes from Hammer map views ( Game, Asset Browser, Object Properties, Entity IO )
Create a dock widget below the Hammer viewport for the asset browser
Create the new C# asset browser in Hammer, quite a few things work already with no effort :o
Reimplement the Hammer pane embedded asset browser as a dock widget, tabify it at the bottom alongside our new C# one, always show the legacy first (for now). And in general tidy up / simplify the implementation of this
Add these asset browser dock widgets to the View->Toolbars menu
Need to setObjectName on these so they saveState properly
Remove QHeaderView from asset browser grid layout, not useful takes up a shit load of space
Legacy asset browser icon sizes match our new asset browser icon sizes, makes the medium icons actually usable in embedded browsers
Don't bother showing the new asset browser at all in Hammer, have it opt in from View -> Toolbars so we can get some proper feedback on it
Asset browser dock widgets collapse properly on ToggleAssetBrowserDockWidget command
Add ToggleAssetBrowserDockWidget command to Hammer that does exactly that, default key bind Alt + A
Cleanup HammerAssetBrowser class location, move OnAssetHighlight / OnAssetSelected that inspect / open in editor to MainAssetBrowser
Setup default locations for Hammer dock widgets a bit better, open selection sets by default but tab them next to the Outliner since you're going to be using one or the other and not both.
Give asset browser dock widget a sane default size
Default Hammer map view port to single 3d pane since thats what 90% of people use all the time
AssetPicker explicitly plays sound files and sound events, these are normally handled w/ the inspector previews of them.
Add IAssetSystem::OpenPicker( IAssetType* type, IAssetPickerListener* pListener ) which opens our AssetPicker from tools addon
CQAttributeEditor_SoundPicker ( used in Hammer and probs other shit ) uses the managed AssetPicker, this is way easier to use, doesn't show duplicate entries and shows all sound events not just base ones.
Old: https://files.facepunch.com/matt/1b2311b1/sbox_yEIejKDxCd.png
New: https://files.facepunch.com/matt/1b2311b1/sbox_8xvDTdEb0c.png
Addon creator will derive a path from the provided ident
Fix tool.minimal template
Tool addons reference base tools addon
Add Rider as a code editor (thanks @peter-r-g), I didn't test it but it's just the same as the VSCode one with different regkeys so it should be fine, & clean up some duplicate code around code editors too
For default code editor pick VS > VS Code > anything that is installed
Fix touch events collision filter exclusion where it needed both entites to have touch events off
Fixes Facepunch/sbox-issues#2046
CodeEditor out of Sandbox.Engine to tools addon, editors are implemented with ICodeEditor
Reimplement Visual Studio with ICodeEditor and use vswhere to get Visual Studio install with .NET installed more reliably
VSCode editor support - when active, solutions make a .code-workspace with the right omnisharp bullshit
Default code editor is Visual Studio, if that's not installed VSCode
Editor preferences window
Add Code Editor to Editor Preferences
Restore File / Open Solution
Add default addon location to editor preferences, default to `%UserProfile%/Documents/S&box Projects`
ErrorList.ReportCompilerDiagnostics should be static, this way we catch errors even if our widget isn't open
Remove warning I left thinking it was dead code
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
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