20,863 Commits over 1,522 Days - 0.57cph!
Fix izQueryFaceDirections using the max instead of the min distance for face separation
Add appropriate unit tests
Backwards compatibility for IList and IDictionary but it isn't ideal so throw a warning to use NetList and NetDictionary
Fix some documentation. Add ExchangeNetList test. When new instance of NetDictionary or NetList is created, add Reset change immediately. We want clients to know it's completely changed.
Citizen/animgraph: made vertical swimming work, it's janky as hell, but at least it's reflected visually; becoming increasingly clear that this state will need custom code on the controller side
https://files.facepunch.com/maxlebled/1b2411b1/2024-01-24%2018-50-19.mp4
Re-compile ui backdrop filter shader w/ SPIR-V block
VR: fix LOD rendering, remove bVr from CFrustum::ComputeScreenSize
Citizen/animgraph: change the swimming 2D Blendspace from Z/X to Y/X, it was an interesting idea that unfortunately didn't pan out
VR: Fix VROverlay xml comment
VR: Fix vulkan submit, submit depth texture to compositor
VR: Update overlays from the render thread, because SetOverlayTexture might touch vulkan queue
Forward InputData and VROverlay through to Sandbox.Game to preserve compatibility
VR: Minor VROverlay cleanup
ActionGraph update, add more geometry-based nodes
Use Either<> type for object inputs
Let the INetworkTableContainer handle writing/reading whether it's only changes or a full update
Fix QPainter was null when calling setPen errors
CompileProgress tests (doesn't work)
Fix asset browser file type size
Fix NRE in GenericControlWidget
Add BaseLayout.AddLayout<T>
Add ControlSheet.AddProperty
SerializedCollection elements return attributes of parent
SoundFileCollection doesn't use PropertySheet
Add some exception handling
Make NetworkTableContainer into an internal interface INetworkTableContainer. Use explicit interface implemention to keep members from being exposed to public API.
Assume test mode will want rendersystemempty
Right now our tests machine doesn't have a GPU attached, for d3d11 it's fine since this runs over D3D11 Warp renderer, but not on Vulkan.
Change this if we ever do graphics tests on CI.
Running locally our tests pass fine without it
Add EditorUtility.OpenPropertySheet
https://files.facepunch.com/garry/c9f2b5cb-f6bb-4895-a401-346d1dbf939c.png
Set qt darkmode=2 so windows will follow system theme (I think)
Add ControlObjectWidget
Add [KeyProperty]
Add KeyProperty to TextureSequence.Source
ControlWidget will create an editor for unknown types (this will likely need locking down)
Support joint breaking on prismatic, revolute, rigid, spherical
Implement joint breaking, break callbacks called on post step, breaking a joint disables the component
Use gizmos for physics debug draw lines for when I need it
Comment out early out in capsule vs hull deep penetration until I get the proper fix
Add [ImageAssetPath]
fix SerializedCollection NRE
Fix MemberDescription.HasAttribute not finding base attributes
Convert TextureEditor to use Sequences
SequenceControlWidget has popup instead of doing it all horribly inline
Fix SerializedObject changes not propagating upwards
ResourceStringControlWidget cleanup
Use new Sequences json for amalgamated texture
Expose some sheet access on texture
Simplify amalgamatedtexture packing, less likely to infinite loop, loads from json
Add TextureFile sequence `IsLooping `
Can use particle SequenceTime easier
Remove parse_mks.cpp
Delete mks importers (everything should use our way now)
Default rendersystem to Vulkan ;)
In ByteStream.Read/WriteValueArray, use Enum.GetUnderlyingType when using Marshal.SizeOf if the type is an Enum type. This is because Marshal.SizeOf will error when used with Enum types directly. Fixes Facepunch/sbox-issues#4579
Citizen/animgraph: added Swim_Up
Native resource Load methods should only be called from main thread, the resourcesystem has no idea what to do with a blocking load on a thread and will just crash
Fix multiple box-shadow parsing (oops)
UI box / shadow / filter shader recompile
CSS box-shadow inset implementation
https://files.facepunch.com/alexguthrie/1b2311b1/sbox_QVsBt34bNx.png
sbox-issues/issues/3649
Basic support for custom C# nodes
Each SceneMap has a unique SpawnGroupHandle, fixes crashes with multiple map instances (including 3d skyboxes) in scenes
Fix Graphics.MipmapGen trying to generate one out of bounds mip
SubContext support on RenderContext (#1441)
* Add IRenderContext::GetSubContext() to get or create a sub context for a new thread, use it in managedsceneobject
Render contexts can never be passed between threads; they can only be used on the thread that created them. The thread index will be set in the constructor and can't change after that.
This causes a problem in our current implementation of SceneCustomObject that reuses the threaded render context on the main thread and expects we can add things,modify and render it from there, for D3D11 it is not a problem since the implementation or driver seems to have a mutex for command lists, but on Vulkan that gives validation errors and causes crashes.
This implements the concept of SubThreads to RenderContext, a very simple way to pass the render context around and consume it in a timely manner, it creates a new render context with the same characteristics as the parent one in a new thread and submits it when the parent context is released
Facepunch.ActionGraph API changes
Fixed race condition in Tools/CodeGen
Updated Facepunch.ActionGraphs
Don't list GameObjectActionComponent in action graph menus
Animation helper applies root motion to the root in treadmill mode, fixes treadmill movement not working in animgraph
Remove deferred rendering meshes from scenelight
We no longer have a hardcoded path for rendering viewmodel shadows, that will be handled with a special component in managed
Fix depth normalization on GetWorldPosition, since we are using 3D Skyboxes again we are splicing a bit of the depth range, fixes feathering on sprites again
GameObjects only save their own tags - not inherited tags!
Add group support into ControlSheet
TextureCompileSettings uses ControlSheet
Fix warning when dragging model into scene
Add EditorUtility.LoadBitmap
Don't store flipbook shit on the image
AssetSystem.CreateResource - create empty json not kv3 since I removed the legacy kv3 path
TerrainEditorTool use EditorTypeLibrary for paint tools
Citizen/animgraph: updated Swim_Idle
Citizen/animgraph: change threshold for movement reset from 5 to 2 u/s
Correctly preserve worldpanel combo when popping UI layers
Almost fixes worldpanel filters, but there's still some issues with depth
HideInEditor becomes Hide
Component.Destroy should always work in the editor
Hide components with ComponentFlags.Hidden, re-use ComponentSheet if possible
When calling a CallbackBatch, create a new CallbackBatch to catch callbacks inside
Init SkinnedModelRenderer to bind pose in editor
Set so transform on model create
Serialize component references as an object (for future usage)
Fix NRE when copying component to clipboard
Move BodyGroups, MaterialGroup control widgets out of engine until they don't look like shit
Add ShowIf to Model.BodyGroups + MaterialGroup
ComponentSheet obeys + watches ShowIf
Fix component sheet not having 4px space before groups
Update default QComboBox colors
Fix a `ERROR: Reentrant call to CResourceSystem::FrameUpdate()` caused by some resource compilers using g_pRenderDevice->Present() to clean up resources, this was cascading into swapchain updates when the window was resized (which always happens at startup) - which then make another call to the resource system to free previous swapchain resources.
Worldpanel backdrop filters correctly sample from the framebuffer
https://files.facepunch.com/alexguthrie/1b2211b1/sbox_SEP7KjTrRh.png
For sbox-issues/issues/3520
Make current FieldInfo avaiable to instance upgraders
Field.HasAttribute<T>() extension method that checks for property
SuppressNullKeyWarningAttribute
Rebuild ComponentListWidget rather than ComponentSheet on hotload
Fixes NullReferenceException when a component type is renamed / removed
Fix infinite loop compiling games, sorry!
Check typedef before we try and use it
PackageLoader: Don't add a package to loaded until we know the assemblies aren't going to throw
Graphics.Draw (RenderTools::DrawSceneObject) passes non-uniform scale to shader
Input action keybinds accept Tab
Input actions setup MOUSE buttons correctly, also uppercase everything so it's consistent
Fix not finding primary connection when not p2p
Add Networking.HostConnection
Fix map 3d skyboxes lifecycle by making them map components
Offset 3d skybox camera by skybox_reference position