21,410 Commits over 1,552 Days - 0.57cph!
Fog TAA + Tiled Rendering
* Fixes artifacts
* Improves perfomance
* Removes Clipmaps
* Lights are culled with tiles
* Makes fog render until far-z
* Removes ghosting
* Simplifies codebase a lot
Pixel size + bilinearity doesn't match the power of two in the depth chain, sample neighbors, we just want far value
CreatePerViewConstantBuffer needs to exist before prepass, it's used for wind, remove callback stuff since async fog is gone
If no [Inspector] found keep falling back on [CanEdit]
Fixes Facepunch/sbox-issues#6784
Can drag scene prefabs into Hammer map view
Fix PrefabFile.GetMetadata() reading the wrong property name
Iterate until number of lights rather than 64 every time 😪, more cleanup
Fix Prefabs not serializing ISceneMetadata components that are on the root GameObject
Frustum FarZ for fog tiled rendering
Remove async fog, unlikely to yield gains, move volumetric fog to after depth prepass, we need depth chain to not be 1 frame behind on tiled culling for volumetrics
mapbuilder: don't try to parse empty scene json
fixes Facepunch/sbox-issues#6777
Citizen/animgraph: added b_firstperson parameter; intended to be used when showing the body in first-person view while looking down
Get shortest SourceLocation path when setting TypeDescription.SourceLine/File
- This should've been the original fix for opening code files that have partial class defs
Get rid of my partial class check for SourceLocation codegen, it's actually the culprit for Facepunch/sbox-issues#6753 - re-publish your game and it'll be fine
If setting local transform to default, set it to Transform.Zero
Add Texture.CreateFromSvgSource
PlayerController: Fix hiding other players bodies
PlayerController: Tweak how body rotation works, clamp rotation to always be within RotationAngleLimit vs eye angles
PlayerController: Only apply "viewer" tag to render body if set
Svg's have mips, can keep aspect ratio
Fix warning
Animgraph: Add blend cycle option to state machine transitions - blends cycle on transition instead of resetting to zero https://files.facepunch.com/layla/1b0211b1/sbox-dev_fR7ScCdFuP.mp4
Wrap property tooltips in rich text tags so they wrap, resolves Facepunch/sbox-issues#6723
Do Widget.AdjustSize before ConstrainToScreen
Fix colour picker relying on late sizing and not constraining to screen properly, Facepunch/sbox-issues#6717
Quick fix to diving outfit
Merge branch 'master' of sbox
Citizen/animgraph: removed several unused parameters + skid now relies on 2 new parameters, skid_x/skid_y, instead of move_x/move_y
Fix readonly string control widget
Tiled rendering for volumetrics https://files.facepunch.com/sam/1b0111b1/GsS5a4ZBVu.png
Hammer GameObjects (#1675)
* Hammer Scene is serialized in MapWorld and gets written into VPK as world.scene_c
* MapInstance additive loads the SceneFile from inside the VPK
Tie Meshes to GameObject:
* Replaces Entity
* GameObjects with meshes tied have a HammerMesh component which procedurally creates a ModelRenderer and ModelCollider
* HammerMesh is setup at map compile time with generated models.
Editor:
* Add HammerManagedInspector which can take over native inspector if it likes the MapNode type
* Add HammerSceneEditorSession for handling saving properly
* Gizmo interactions work in MapView, Hammer gizmo selectionset syncs with native selection set (native has authority)
* Clean up MapView loop: run Scene.EditorDraw() for gizmos, remove old Entity.DrawGizmos
Hammer Outliner:
* Managed sets DragData of map nodes in Hammer outliner
* Defer selection until mouse release so it acts like our managed treeview, allows dragging without selecting instantly
* Removed duplicate entity list
* Add "Create Game Object" button
ActionGraph:
* Add MapSourceLocation for editing action graphs in .vmap files
* Open source map when inspecting graph from .vmap
* Parent action graph editor to hammer window if editing map graph
---------
Co-authored-by: James King <james.king@facepunchstudios.com>
Cleanup
Set native modified flag using SerializedObject callback, also emit EventMapNodeDescriptionChanged_t for the outliner
Get rid of map
Update sbproj
Don't tick this if we're not in VR
Remove old VR stuff
Can rotate and scale map game objects
Unify UI and ListenLocal, should have complete parity with how it was before 🤞
Hammer Game Objects
* Hammer Scene is serialized in MapWorld and gets written into VPK as world.scene_c
* MapInstance additively loads the SceneFile from inside the VPK
Tie Meshes to GameObject:
* Replaces Entity
* GameObjects with meshes tied have a HammerMesh component which procedurally creates a ModelRenderer and ModelCollider
* HammerMesh is setup at map compile time with generated models.
Editor:
* Add HammerManagedInspector which can take over native inspector if it likes the MapNode type
* Add HammerSceneEditorSession for handling saving properly
* Gizmo interactions work in MapView, Hammer gizmo selectionset syncs with native selection set (native has authority)
* Clean up MapView loop: run Scene.EditorDraw() for gizmos, remove old Entity.DrawGizmos
Hammer Outliner:
* Managed sets DragData of map nodes in Hammer outliner
* Defer selection until mouse release so it acts like our managed treeview, allows dragging without selecting instantly
* Removed duplicate entity list
* Add "Create Game Object" button
ActionGraph:
* Add MapSourceLocation for editing action graphs in .vmap files
* Open source map when inspecting graph from .vmap
* Parent action graph editor to hammer window if editing map graph
Co-authored-by: James King <james.king@facepunchstudios.com>
Properties with [Hide] don't contribute to features tabs
Don't need these Hammer prefab templates anymore
InspectorWidgets are explicitly marked with [Inspector( Type )] instead of [CanEdit( Type )], created with InspectorWidget.Create( SerializedObject )
Fix exception in Asset.ReadJson()
Fix NRE in GetBoneObject() when using the wrong name
Remove extra quat normalize that isn't doing anything
Normalize quaternions in AddPoses to prevent drift in model space blending
Citizen/animgraph: improve look & feel of turning while moving
https://files.facepunch.com/maxlebled/1b0111b1/2024-11-01%2005-08-50.mp4 (NB: this video has several of the parameters non-functional due to the current state of the physics-based player controller, so it's not a complete picture, but it does show off this specific improvement)
Fix UI sounds still playing spatially.
Don't early out of model collider when there isn't a bone for part
Add jsoncpp so we can read/write json properly without fucking around with kv3
Add CMapGameObject map node with managed counter part that wraps a GameObject
* Hammer world's Scene uses HammerSceneEditorSession
* Add HammerManagedInspector that can take over if it likes the MapNode. We only like MapGameObject for now
* Run Scene.EditorDraw() on MapView for gizmos, remove old Entity.DrawGizmos
* More explicit HammerEvents. Managed map node callback interface, a little convoluted because of mapdoclib <-> hammer <-> managed. But this is easier to do callbacks and can return values
* MapGameObjects can be tied to MapMesh and generate model geometry
Add MapSourceLocation for editing action graphs in .vmap files
* Open source map when inspecting graph from .vmap
* Parent action graph editor to hammer window if editing map graph
Several assumptions of SceneEditorSession.Active.Scene should be GameObject.Scene
Gizmo interactions work in MapView, Hammer gizmo selectionset syncs with native selection set (native has authority), clean up MapView loop
Managed can set DragData of map nodes in Hammer outliner, MapGameObject sets its GameObject
DragData uses QObject.FindOrCreate so it persists when going native -> managed -> native for DragData.Object to work correctly
QOutliner: Remove hidden entity list
QOutliner: Defer selection until mouse release so it acts like our managed treeview, allowing dragging without switching the inspector away
[~] ModelRenderer don't default to box if Model is null
InspectorWidgets are explicitly marked with [Inspector( Type )] instead of [CanEdit( Type )], created with InspectorWidget.Create( SerializedObject )
Hammer Scene is serialized entirely in MapWorld & written into VPK as world.scene_c
MapInstance: Load from SceneFile from inside the VPK (A little more logic because we don't normally read managed from VPKs)
When tying a MapMesh to a MapGameObject add ModelRenderer and ModelCollider automatically
Don't need these Hammer prefab templates anymore
Add "Create Game Object" button to Hammer outliner
HammerMesh component, explicitly set on GameObjects that have a map mesh attached
Fog TAA cherry pick with the new changes we have on fog lightbinner, removes fog clipmaps entirely too
Allow physics shape to associate with a bone index so SceneTraceResult.Bone works when hitting physics shape, as the summary suggests https://files.facepunch.com/layla/1b3111b1/sbox-dev_016MWrhQrI.mp4
Remove the need for CGameTrace and delete it, the less trace result structs we have, the better
Don't let the user drag AssetPicker tabs about/outside the window (lol)
AssetPicker: Disable type facet dropdown if FilterAssetTypes is specified
AssetPicker: Default to project assets folder when no initial selection is given
Fix CloudBrowser not saving/restoring from cookie
Shift cloud locations around again, this makes more sense I think
AssetPicker: make sure we're raising the tab you'd expect by default
Add more optional functions to IPressable, for hovering and update
Slow down default player turn speed
PlayerController camera can be moved left/right
PlayerController has "use"ing built in
Switch case node
https://files.facepunch.com/ziks/2024-10-31/sbox-dev_YiyL34b2CY.mp4
Add clear button to asset/cloud browser search bars
AssetPicker: Standardise initial selection logic, prefer selecting cloud package for cloud assets (and not .sbox disk path)
Fix focusing AssetList on entry sneakily not working
Wait for cloud browser to receive results before selecting initial selection
Add pivot to sprite renderers
Prevent cloud browser from shitting pant with duplicate facet tags in query
Don't add type tag twice when FilterAssetTypes is specified for cloud browser
Cloud browser: Hide sidebar type locations when FilterAssetTypes is specified
Update Facepunch.XR to match commit 5cb9da3f30cde711d40b872e8b37e29c6f1dfbfe
API fixes
Cloud asset uninstall flow/ui
- removes all references to the package from your project
- deletes all files that're no longer needed from disk
- updates package references to remaining installed package where there's shared files
https://files.facepunch.com/solw/2024/October/31_13-07-ComposedAmericancreamdraft.png