1,495 Commits over 1,157 Days - 0.05cph!
Open in code editor button for tools addons - resolves Facepunch/sbox-issues#2226
Make the "from asset.party" addon downloader auto-select the path a bit better - fixes Facepunch/sbox-issues#2233
Add a basic asset.party location to the asset browser, remote assets have the drag data of `https://asset.party/{ Org }/{ Ident }`
Move ManifestMount to Sandbox.Engine
Static ToolRender class uses the current CToolRenderContext context
Dropping an asset.party asset on a map view creates an empty prop_static that downloads and sets its model asynchronously
Create a remote asset manifest within a map doc, save/load remote assets used within the map
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.
Get free dragging working from C# using the native stuff for it that does loads of shit. Tidy up lots of redundant parameters since we pass the CMapView now
Make static ToolRender class that uses the current CToolRenderContext - only called from Hammer MapView atm
Hook up some quick and dirty progress indicators for cloud models in hammer. Fair bit of shit code, but I want to get the flow good first
https://files.facepunch.com/matt/1b1711b1/sbox_baEO6vIdim.mp4
Process queue for SyncContext.MainThread in ManagedTools.RunFrame() - the frame is ran manually when QtDrag blocks, so lets make sure we can still do async tasks on the main thread
Now we can load cloud models whilst we're dragging them around
Add remote asset.party location to asset browser, fill it with model query
Add drag data to Package in AssetList: e.g package://matt.box
Add managed handler for Hammer map view drag drop events
ManifestMount from Sandbox.Game -> Sandbox.Engine
Bare bones dragging asset.party models into Hammer
https://files.facepunch.com/matt/1b0611b1/sbox_5qCyTB85LC.mp4
Tidy up map view drag/drop targets in C#, interop more MapDoc so we can create an empty model and asynchronously set it's asset from the package fetch.
There's still some messy code here, I think I need to figure out how to do handles for map nodes before this becomes a sprawling mess.
And the async method is getting blocked on the main thread once dragging.. but a background thread is going to crash it.
Paginate asset.party assets in browser so we see all of them
Make our package drag data in the format "https://asset.party/facepunch/boomerjumppad" we could easily extend this code to let you grab these assets straight from the website then
Delete dota healthbar SFM code that plagued the IToolService and ISource2Engine
Revert "Make Entity.IsAuthority a virtual property"
This reverts commit 1533014f19347562cbac07a148ee3926da2f64ad.
Make Entity.IsAuthority a virtual property
Tidy up map view drag/drop targets in C#, interop more MapDoc so we can create an empty model and asynchronously set it's asset from the package fetch.
There's still some messy code here, I think I need to figure out how to do handles for map nodes before this becomes a sprawling mess.
And the async method is getting blocked on the main thread once dragging.. but a background thread is going to crash it.
Paginate asset.party assets in browser so we see all of them
Make our package drag data in the format "https://asset.party/facepunch/boomerjumppad" we could easily extend this code to let you grab these assets straight from the website then
Add remote asset.party location to asset browser, fill it with model query
Add drag data to Package in AssetList: e.g package://matt.box
Add managed handler for Hammer map view drag drop events
ManifestMount from Sandbox.Game -> Sandbox.Engine
Bare bones dragging asset.party models into Hammer
https://files.facepunch.com/matt/1b0611b1/sbox_5qCyTB85LC.mp4
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
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
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
Default Hammer map view port to single 3d pane since thats what 90% of people use all the time
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
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
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
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
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
Move Sandbox.CodeEditor -> Tools.CodeEditor - this does mean we can't open the code editor in non tools mode but does that matter?
Define CodeEditors in tool addons, add VSCode support
Basic editor preferences window to specify preferred code editor and default project location
https://files.facepunch.com/matt/1b1911b1/sbox_TaO9t1R3oN.png
Remove warning I left thinking it was dead code