1,708 Commits over 1,219 Days - 0.06cph!
Add TraceResult.HitPosition same as EndPosition for rays, but for sweeps its going to be the contact point where as EndPosition should be how far the sweep got
Sweep trace the paddle into the ball, way way more reliable, setup a nice cylinder hull for the paddle too
Better physics, account for paddle angular velocity, original ball velocity reflects, and resolve movement after we've been hit instead of before
Add support for sweep traces against sphere shapes, needed to do some bullshit with a 0 radius sphere
Make [UseTemplate] work properly on consolidated builds (used for s&works) - instead of the generator trying to guess root directories feed it a map of physical paths -> virtual paths for all the cs files
Probably fix the speed boost entity
Don't give alternate flags when querying DX11 display mode list
Fix crash when registering the minidump handler due to addon stuff being removed
setting default map and removing something redundant
[HideInEditor] works on asset properties
Give [GameResource] a default question_mark icon so it's not null by default (also fix DrawMaterialIcon shitting the bed with null)
Fix static/dynamic colors not working on [EditorModel] ( This is only used for light modes, weird fucking place? )
All our triggers should inherit from BaseTrigger, we get the nice fixes layla did to make them not lag like shit then
Fix ball not hitting any triggers because it's physics motion type was Static, set it to Keyframed
delete fgd
Tidy up all this shit and get it compiling again
Update SteamInput attack actions to match C#
Attack1/2 -> PrimaryAttack SecondaryAttack
InputButton.Attack1/2 becomes InputButton.PrimaryAttack and InputButton.SecondaryAttack
Delete ambiguous DistinctBy Linq extension, this is in .NET 6 now
Take distinct Hammer entities by their TypeLibrary ClassName instead of Type
Load Hammer entity types from base first always, then distinct by class name
When we have delicious new game data let Hammer know so it can do the weird stuff it does to refresh all the widgets, helpers, blah blah blah
Shut this assert up, we're calling it multiple times on purpose
Delete "Reload Game Data" from Hammer, doesn't make sense when everything is hotloaded ( plus it would be a fucking mess to implement for no reason )
Instead of deleting / recreating native CGameDataClass lets replace their data if they already exist - this fixes a bunch of crashes since they're referenced by raw pointer everywhere within native tools code
Cleanup EntityParser some more, use DisplayInfo instead of fucking with attributes ourselves, remove code that was for ModelDoc or Assets
MapClass holds it's C# type
Use TypeLibrary.AddAssembly when adding remote game packages from Hammer
Refresh Entity Tool UI after tools.refresh and we've parsed any new map entities
Remove / replace managed Hammer entities on new assemblies so they work all lovely on hotloads
Collect [PathNode] types too for Hammer
Small fix to packages of gamedata entities
HammerEntity should be HammerEntityAttribute
Fix DisplayInfo setting Group to the IconAttribute value
Remove GameData.ParseAssembly and special cases for Sandbox.Game, let's grab it all with TypeLibrary on tools.refresh
Remove Entity.Create<T>() and rename Entity.Create( name ) to Entity.CreateByName( name ) to hint that this isn't the only way to create entities ( you can use new )
Hammer entities become opt-in with [HammerEntity] - most game authors were having to do [Hammer.Skip] on most of their entities so makes sense to invert it
Fix material icons not showing in Hammer's entity tool
set ident to facepunch.tabletennis
Can drop the ball with your left hand by pressing X, and transfer paddle velocity into the ball on hit. Need to do this better by figuring out local velocity of the point from the angular velocity of the paddle.
Make Input.VR.Left/RightHand.ButtonA/B.WasPressed work within Simulate ( before this only worked clientside in FrameSimulate )
VrHand.AngularVelocity Vector3 to Angles - unfuck the code behind it treating it like SteamVR coordinates which ended up giving batshit values, now it's just degrees/s
Move the paddle a bit further down so you're actually holding it
Make surface assets for the ball, paddle and wood with realistic restitution values (can you hook these up to the models/materials @bakscratch)
Tidy up our physics code a bit and use the restitution coefficients
Set MaxPlayers to 2
Fix regression where entities base properties were getting stomped
Fix regression where entities base properties were getting stomped
Delete FgdWriter, pretty sure everything is managed gamedata now
Fix base addon entities not getting added to Hammer because they don't have a package
Load all entities that live in Sandbox.Game into GameData ( Lights )
Oops, make sure it's this paddle that's colliding with the ball
Put different client pawns at the end of each table
how'd I cock this up
Improve VR anchor positions
Turn the paddle around, black side is back hand I think?
Better test camera position & fov so I can see wtf is going on
Add a PlayerPawn which has a Paddle which tracks the ActiveBall
Paddle hits the ball from a Simulated context, if the ball hit the paddle it'd be shite, do this from Simulate so it can be predicted/clientside authorative
Also get some bounce / hit sounds going
Hook our paddles up to Input.VR.RightHand and set our anchor position, can whack balls in VR now
Initial commit
Base empty s&box game
Some basic table tennis physics with accurate gravity, mass, bounce factor and some air drag.
If we can't allocate transform data (because of shitty small cbuffers) stop trying to render instead of just crashing, this should fix Hammer crashing on complex maps temporarily until structured buffers are merged in.
AddonConfig.GetPackageType() supports tool, fixes tools showing in local games list
Cursor gets set properly when you focus back into the game from tools
Fix `cursor: none` not working ( last cursor type wasn't getting set and always assumed to be 0 (None) )
Bit of error checking in CSteamAudioScene::BakePathData when creating path data to avoid access violation crash and give us the actual error
Hammer: Add toggleable fullscreen layout ( Shift + Alt + Z )
https://files.facepunch.com/matt/1b1211b1/sbox_0AAXaFMbCO.png
Add description to ModelDoc prop_data "Bake Lighting As Static Prop" so it doesn't seem unimplemented
Delete ModelPropData.AllowStatic - did nothing
Collapsible game tabs in Hammer entity selector
https://files.facepunch.com/matt/1b1111b1/sbox_h9bb4QJuJf.png
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.
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
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
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.
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
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