1,426 Commits over 1,127 Days - 0.05cph!
Fix threading issue in navgen too
Delete some unused tier0 files
Fix threading issue in raytraceenvironment, be more explicit and capture the lambda parameters earlier when the job is queued not executed
New tier0 threadpool code from Valve
* Functor processors removed in favor of std::function jobs (lambdas)
* QueueJob always returns a SmartPtr now
* JF_PER_FRAME flag added for scheduling jobs to be completed this frame
* Improvements to contention by putting stuff on cachelines
* New simple ParallelFor usage:
```cpp
ParallelFor( 0, 10, []( int n )
{
Msg( "%d\n", n );
} );
```
The fun part: replaced all functor thread jobs with lambdas, and make it work with SmartPtrs
This is just done manually by me and isn't from Valve, so there's likely
a few cock ups - but everything I've tested has been good.
Fix all occurences of WaitForFinishAndRelease() on smart ptrs
Fix all occurences of WaitForFinishAndRelease() on smart ptrs
New tier0 threadpool code from Valve
* Functor processors removed in favor of std::function jobs (lambdas)
* QueueJob always returns a SmartPtr now
* JF_PER_FRAME flag added for scheduling jobs to be completed this frame
* Improvements to contention by putting stuff on cachelines
* New simple ParallelFor usage:
```cpp
ParallelFor( 0, 10, []( int n )
{
Msg( "%d\n", n );
} );
```
The fun part: replaced all functor thread jobs with lambdas, and make it work with SmartPtrs
This is just done manually by me and isn't from Valve, so there's likely
a few cock ups - but everything I've tested has been good.
Remove ui test that doesn't exist
Delete native saverestore systems
Saved myself a 5 minute change by spending hours deleting code, and I
don't think I even got it all
remove some unused convars cl_team, cl_class, (versus_)stats_highlight_interval, mapcyclefile and some debug concmds
missed rubikon and navlib for threadpool api updates
New tier0 thread pooling code, should schedule better with less contention, slightly changed API
Lots of API changes here I've replicated to the rest of our code base,
I'd imagine I've fucked at least one thing up though.
Functor jobs are replaced by IThreadPool::QueueJob(WithFlags) which
accepts a std::function, much simpler to use and execute
Delete all this saverestore shit
remove convars: cl_team, cl_class, (versus_)stats_highlight_interval
ui: onmousedown triggers from middle mouse too, seems accidental that it wasn't
make antlr codegen more sane, hopefully fixes it on build server
Delete generate_decal_normals.vmat
New rendersystemvulkan & vfx_vulkan
[hack] don't deal with instancing on SboxVertex for now, need some additional code around input layouts
GetShaderFullPath: remove shader replacements and legacy prefix substitutes
Shader fixes where DXC is slightly less forgiving on bad syntax (has a bad hack for material api in it)
Rip up Material API to get it compiling
Shader resource v2 has optional dx11 and vulkan blocks, if a block doesn't exist will use fallback shader
bare bones video code using video.dll for ref
Add Asset.GetUnrecognizedReferencePaths() - returns a list of paths this asset references that can not be resolved (missing from disk)
Missing asset resolver when loading Hammer maps
If your map contains missing assets when you load your map
(after EditorReferences have been resolved), we will check if there are
matching assets on asset.party and prompt the user to install them.
We don't have to worry about updating EditorReferences here either,
as this is automatically done on save if any asset refs have a linked
package.
After the assets are installed the user will be prompted to reload the
map - this is needed to reload the missing assets.
https://files.facepunch.com/matt/1b1811b1/image%20%281%29.png
Fix Gizmo.Draw.SolidCircle transforms
Hammer: display download progress of cloud assets using gizmos
Can publish shaders & shader graphs
Hammer undos for sndscape and sound drops
Hammer: cloud materials don't stick to everything they've hovered, and can be undone now
History API for Hammer
Hammer: add undos for asset.party models & dragged entities
SceneSunLight transform sets the correct direction now
Add cloud path to CONTENT search path, fixes hotspot rects not working but probably loads of other weird stuff too
Gizmo.Model shouldn't cast shadows
Make sure we have a Filesystem.Content early even though LocalProjects aren't added yet, fixes asset type icons not registering
Rebuild content path and open editor window on PostBootstrap since LocalProject are added in Bootstrap now, otherwise Qt doesn't know where any files are
tools_sprite shader: can use in standard mode
Gizmo.Draw.Sprite correct transform
Gizmo sprites draw the right texture although this generic shader is shit
Update MapEntity.TypeDescription when class is changed from native
Oops not a string, return enum
CMapView m_pToolManager can be nullptr when rendering thumbnail
Add MapNode.Visible property, don't call DrawGizmos for hidden entities
Hammer manipulation mode maps to Gizmo.Settings.EditMode: select, position, rotate, scale, pivot
Hammer Gizmos (#874) ( https://wiki.facepunch.com/sbox/Hammer_Gizmos )
https://files.facepunch.com/matt/1b0511b1/gizmos.mp4
Don't draw editor gizmos if "show game objects only"
Whitelist some System.Buffer methods
* System.Buffer.BlockCopy( System.Array, System.Int32, System.Array, System.Int32, System.Int32 )
* System.Buffer.ByteLength( System.Array )
* System.Buffer.GetByte( System.Array, System.Int32 )
* System.Buffer.SetByte( System.Array, System.Int32, System.Byte )
interopgen: don't needlessly overwrite subfiles as this would cause c++ rebuilds everytime
Whitelist System.Lazy
Whitelist System.Runtime.CompilerServices.ConditionalWeakTable
Revert "Never recompile symlinked assets, e.g compiled asset from asset.party that you have the source file for"
This was causing more problems then it was solving, need to rethink a better way to do this.
Whitelist System.Collections.Concurrent.ConcurrentDictionary & System.Collections.Concurrent.BlockingCollection
Whitelist System.Buffers.Binary.BinaryPrimitives
Whitelist System.Environment.StackTrace
Shader Graph: Clean up recent files code; make clear recent files show again, only show max 10, re-opening a file moves it to the top of recent files
Fix build failing models, these probably need the same lodding setup as simple_dress too @DanduwFP
PropertySheet { init; } properties are read-only
Fix choppy Input.Pressed outside of Simulate (e.g FrameSimulate or UI Tick) when FPS was lower than tick rate
Wrap map entity in a static EditorEntity class, expose if it's selected, transform, etc. usable within game code.
Hammer: managed traces add their trace info within list of native Hammer traces, can order themselves alongside native traces so we don't cock block others
Managed gizmos suppress native Hammer manipulators.. doesn't work in some cases, probably need to do a different way
SerializedEntity: right now it's just an accessor for MapEntity keyvalues
ui_text shader works in Hammer now (why do we need ToolsVis mode for this?)
Move rest of HammerGizmos to Sandbox.Tools, call static DrawGizmo on entities
Hammer gizmos using the ISceneView now
Iterate map entities, find their matching type and call static method DrawGizmo within a Gizmo.Scope
Move Hammer Gizmo instance to be owned by MapView
Whitelist System.Net.Primitives assembly, and HttpStatusCode type
Fix User-Agent typo so none would ever be set
Let you define Content-Type and stuff through the standard headers field
Fix these typos in the HttpHeaders whitelist, but probably will unwhitelist these
Can specify HttpContentHeaders specifically for Content related headers, non-content would still use standard way
Http.CreateJsonContent specifies application/json as default content type
Static Http API (#604)
Add Sandbox.Http static REST methods that run off an allow list in your project settings. Obsoletes Sandbox.Internal.Http.
---------
Co-authored-by: Rohan Singh <rohan-singh@hotmail.com>
Co-authored-by: Garry Newman <garrynewman@users.noreply.github.com>
Swap order of parameters so method is first even though you should be using named optional parameters. Minor documentation fixes.