13,493 Commits over 1,522 Days - 0.37cph!
Replace per tool GameData with a shared one managed by IToolFramework2, move the managed GameData out of Tools.MapEditor and into Tools, same with it's interop.
* Decoupled CGameData from CGameConfig (mapdoclib), removed g_pGameData use the IToolFramework2 locator now instead.
* Initialize managed GameData from CToolFramework2::Init() before anything could ever need it.
* Populate GameData from managed asynchronously, this solves race conditions of loading Hammer too fast, as well as letting you add localaddons mid game.
Tool scenes loading maps will now have access to all this managed game data too, solving lighting issues / missing sky boxes in modeldoc / others.
This also gives us a very easy route to deprecate fgd files in ModelDoc if desired.
Instead of loading GameData from addons on initialize, load it in from assemblies when added to GameAssemblyManager
Unfuck the map compilation, gotta use a dirty global for gamedata still in mapdoclib, set it automatically when toolframework2 is avaliable, mapcompiler manages it's own manually though.
A couple of dirty hacks to do this, we can undo these if we end up making map compilation not use a seperate process - or there may be some nicer ways to do these globals.
Startup time optimizations (~400ms)
Smoothing out tools mode startup
Move splashscreen to c#
Add r_force_copy_texture_using_shaders for the rare situations some cards are encoding video with incorrect color format
Fix compile error in fibertools.h with VS2022 17.2.0
Add some additional launch profiles to Sandbox.Engine for VR or going straight into a map, etc.
Add VR checks when creating a VROverlay
Don't try creating a borderless window in tools mode, fixes keyboard input not working in-game on tools
Fix loading a load of sound stacks we don't want/use
Fix compile warnings in NodeGraph
Fix compile warnings
Obsolete IAsset
Rename Asset to GameResource, move to engine, derive from Resource
New Hair! - Stubble WIP
WIP Stubble beard hair, needing to get the blendshapes fixed, will work on menu but not in game just yet!
https://files.facepunch.com/daniel/1b1011b1/beard_present.png
Now you can look as grizzly and cool as you do in real life!
Rearrange entity files
Add descriptions to some Entity virtual methods
Merge branch 'master' of sbox
Remove unused
Renaming sound system accessors to match native names
Fix pitch change sounding like dog shit
Sound Preview wip
Add to get_system_globals to allow forcing listener location to 0
SoundHandle, SoundPreview
Remove unused
VR: Get auto fidelity levels actually loading from their config, they don't seem to do anything yet though so need to tinker more
Fix bizzarre rendering logic preventing VR autofidelity from setting the render targets size
Delete more unused/non useful FGD types
ivScript, ivScriptList, ivGameUnitClass, ivGameItemClass, ivPropDataName
Trim underwater, hand positions, volume convars from soundsystem
Fix sound stack not applying soundevent volume propertly
Move pitch shift to vmix
Add Paint.DrawCircle
assetpreview: widgets
Mountain pine shrubs and bushes
Fixup our sky entity and implement everything the native env_sky entity has, replace native env_sky with our own C# one. Remove env_sky_atmosphere (if you use this, replace it with env_sky and use a atmosphere material)
Add Hammer.Skybox helper to render skybox in hammer
Default vr_depth_submit to on
VR overlays should set their transform from standing origin, this should be more consistent with everything else in the engine now
Added `VrHand.TriggerHapticVibration( float duration, float frequency, float amplitude )` Usage: `Input.VR.LeftHand.TriggerHapticVibration( 0.25f, 100.0f, 1.0f )`
This is clientside only for now, we can probably hook it up as an RPC though if it's required.
It would've been nice to hook this up as a unified API with controller vibrations, but haptics and rumble are pretty different, enough that emulating it either way ends up being utter wank.
Remove 'vecline' fgd type (all it does is spawn a vecline helper)
In favor of Hammer.PointLineAttribute
Clear audio system on game loop
Doppler, loudness compressor
New Hair! - Fade
New stylish hairstyle!
Implement phys_spring
Remove the bullshit constraints (phys_constraint, phys_ragdollconstraint, phys_genericconstraint, phys_keepupright - if we ever need these we can implement in a better way)
Implement phys_pulleyconstraint
Add Audio class
Player underwater effect
Deafen player when taking damage from explosions
Fixed Hammer.MinMax not applying in Hammer
Fixed GenerateStandardFullPathForResourceName succeeding for empty inputs
FBX loader: generate better fallback material names for blender meshes
DmeMesh: try to work around invalid material extensions
Fixes Blender's default material names not showing up in ModelDoc correctly
VR: Simplify and remove more code that we use OpenVR for or has no purpose for sbox
VR: Submit depth texture to the SteamVR compositor, flagged behind `vr_depth_submit 1` - this primarily assists Occulus' time warping / reprojection, but could help other HMDs too
FPArms: the camera of fists landing is now additive & handled separately
This allows the kick of the camera to continue gracefully even if the landing motion in the arms gets interrupted by a punch
Add GraphicsItem.HandlePosition
Add MouseEvent HasShift, HasCtrl, HasAlt
Add some help around FocusMode and OnKeyPress
Adding Curve2D wip
Cable tray tileset https://files.facepunch.com/louie/1b0911b1/sbox_14GcewgiNQ.png
FPArms: fists viewmodel now has working jumping/landing + raise/holster can be gracefully interrupted by other anims
Road sign pole material changes (compiled)
New Outfit Piece! - Baseball Cap
New gritty old Baseball Cap clothing asset, LODs to come ASAP.
Animgraph: Add GetGroupNodeID to ianimnode so we can add the group id to the current path when going to location - fixes clicking warning/error not taking you to the correct node if it's in a group
Put shatter_glass and voxel_surface into a destruction category
Put func_precipitation into effects category
Use tolower on entity category so we don't create multiple categories for same name
Implement phys_ballsocket
Add MSAA to video options
Abstract away multisample type, switch to anti alias quality
Move video setting configuration to be mainly managed by C#
Let "restore default" work for video config, auto config converter @ boot
Merge pull request #232 from Facepunch/msaa-premerge
Add MSAA to video options
Don't save or load the node manager of subgraph nodes
Bail when trying to create group from selection that contains group input or output - warn when they try
Animgraph: Add context menu item for creating new subgraph (doesn't do anything yet)
Recreate group input/output nodes if you try to delete them, this isn't ideal but grapheditor makes it tricky to protect nodes from getting deleted
Animgraph: Move log manager from context to graph, dunno why it was in context in the first place. Fixes warnings and errors not showing up in groups
Animgraph: fix some plug edges not getting removed on node refresh, fixes crashes when undoing
Clamp light probe debug render attributes to sane values
Remove implemented phys entities from MapClass.Native
Remove CS:GO freeze frames from world renderer ( they didn't work, if you wanted them to work you'd easily make them in C# )
Remove some dead code from world renderer
VR ALWAYS uses a compositor, remove a lot of dead code from the renderer
Fix VR window display being bizarrely offset or not displaying anything at all depending on VR render resolutions
Hammer: Fix output target dropdown colors not working