1,708 Commits over 1,219 Days - 0.06cph!
Make PolygonMesh face Material work
Add Hammer.CurrentMaterial
Iterate PolygonMesh API, remove dumb "Simple" naming from classes, Polygons are Faces instead, document better and optimize.
PolygonMesh keeps it's own vertex list, allowing more advanced usages and simpler data stream construction
* AddPolygon renamed to AddFace
* PolygonMesh.AddVertex( ... ) returns an index you can use with AddFace( params int[] )
Check if Steam is running on clients asap, prevents some crashes from us using Steamworks super early
Hammer: Fix duplicate or remove non-working view modes / options in the view, mainly dota things
Remove another premature GetSteamUniverse() call that wasn't doing anything
Don't try to SteamAPI_Init() on dedicated servers or initialize the SteamGameServerAPIContext before we've called SteamGameServer_Init
Hammer: Curved stairs primitive (experimental), not sure how to make it interact nicely within the bounding box. Need to expand the PolygonMesh API some more to allow face data UV axis too.
https://files.facepunch.com/matt/1b1011b1/sbox_22SJRcVCiW.png
Remove QToolBlockUI which was just glue and do the whole thing in C#, remove some resulting dead code in CToolBlock
Remove redundant mapdoclib stocksolids
Hammer: Entity tool uses Block tool to place solid meshes w/ listeners, same way nav meshes are placed.
https://files.facepunch.com/matt/1b1011b1/sbox_CsQvkTwpm5.png
Mark these transform operations as internal, let's not just blindly expose C++ ways to the public API
Namespace Hammer/MapDoc under Tools.MapEditor
Add a simple MapMesh API for creating simple n-gon polygons programatically in tools addon layer
Move Hammer Block tool to C# addon layer, developers can implement any geometry shapes using the simple polygon mesh API and full hotloading.
Ported the following shapes to C# so far: Quad, Block, Cylinder
Cleanup naming of everything, create the tool interface in a more sane way, port over more primitives.
* GeometryTool -> BlockTool, keep the naming consistent with Hammer, it is a blocking out tool after all
* Geometry -> PrimitiveBuilder
* SimplyPolygonMeshDescription -> PolygonMesh - way less insane and future proofs us to binding it with CHammerPolyMesh, different ways to use it can be done on the class
* Port Spike and Hole primitives, Linq makes them super easy to do
* Hotloading triggers an update on the block tool, so when creating PrimitiveBuilders you see the changes straight away
* Glue "Orient to the 2D view plane direction" checkbox to set the option in native
Add Sphere primitive to C# block tool
Add Sphere primitive to C# block tool
Namespace Hammer/MapDoc under Tools.MapEditor
Add a simple MapMesh API for creating simple n-gon polygons programatically in tools addon layer
Move Hammer Block tool to C# addon layer, developers can implement any geometry shapes using the simple polygon mesh API and full hotloading.
Ported the following shapes to C# so far: Quad, Block, Cylinder
Cleanup naming of everything, create the tool interface in a more sane way, port over more primitives.
* GeometryTool -> BlockTool, keep the naming consistent with Hammer, it is a blocking out tool after all
* Geometry -> PrimitiveBuilder
* SimplyPolygonMeshDescription -> PolygonMesh - way less insane and future proofs us to binding it with CHammerPolyMesh, different ways to use it can be done on the class
* Port Spike and Hole primitives, Linq makes them super easy to do
* Hotloading triggers an update on the block tool, so when creating PrimitiveBuilders you see the changes straight away
* Glue "Orient to the 2D view plane direction" checkbox to set the option in native
Namespace Hammer/MapDoc under Tools.MapEditor
Add a simple MapMesh API for creating simple n-gon polygons programatically in tools addon layer
Move Hammer Block tool to C# addon layer, developers can implement any geometry shapes using the simple polygon mesh API and full hotloading.
Ported the following shapes to C# so far: Quad, Block, Cylinder
CreateVrMove avoid crash from out of bounds when controllers not plugged in
Cleanup and namespace map editor stuff under Tools.MapEditor, MapDoc class -> MapDocument
SimplePolygonMeshDescription (mouthful) defines a set of n-gon polygons that can be turned into a half edge Hammer mesh.
Explicitly this is simple because vertices are repeated, this isn't performant but it's 1000x easier to do simple things, I'll probably add an additional advanced API for nerds.
This will merge coincident vertices on the Hammer mesh if set and within a tolerance.
Create inherited map node types MapEntity, MapMesh, etc.
Can remove map nodes from managed document
Add PolygonMesh for creating map mesh nodes from polygons in C#
Add a simple perlin noise mesh generator to Hammer using PolygonMesh
Fix a few small bugs with feeding polygon meshes into map meshes
Add a window with noise parameters, update map mesh on change
GameData binding ( fgd stuff )
Bind MapDoc, MapNode, MapWorld w/ new handles, frame out how internal child nodes are handled
Don't use IHandle for mapnodes, pass them to a managed manager and reference by their HammerUniqueId_t. Still storing the native pointer in the class, we could probably roll a handle like system with the unique id.
Simple map outliner in C# for testing API
Implement entity gallery in C#
GameData binding ( fgd stuff )
Bind MapDoc, MapNode, MapWorld w/ new handles, frame out how internal child nodes are handled
Game category list uses engine version too so we don't end up with empty categories saying they have games
▄▊▆██▄▆-▋▊▅▉█-▌▍▉▋▉▌▆▄▍▄ ▍▍▉▆█▊ ▆▋▆▊▇█▄ ▌▇▆▄▉▆ ▉▌▍ ▋█▊▅ ▄▇▄
▍▅▌▄▉▇▇-▋█▇▄▍-█▌▅▉▊▊▅▆▋▉ ▉▆▇▍▋▇ ▋▅█▅▉▇▇ ▋▊▌▋█▋
▄▊▊▋▊▍▅-▌▅▌▅▇-▊▌█▉ ▉▋▊'▉ ▍▄▆▌ ▍▇▄▉▇▌ ▋▌▋▉ ▊▌▌'▉ ▊▄ ▊▉▊▇▇▌▌█▍▆ ▅▅▅▌▋▍ '█▌▋▆▌▊' █▆ ▄▇▊▅▆▊▊▍▄
Delete CameraComponent, game ships with CameraMode component now
Add .editorconfig so the code stops auto-formatting in shit ways
Switch from jank camera system to camera components and other refactor fixes
Compiled resources
Remove FoW from CGameParticleManager and protobufs
PrecipitationEntity: don't set control points to Local.Pawn if it's invalid
Use 10 second timeout for Steam auth ticket instead of 5, see if it fixes some people not getting their auth tickets
Fix small fuck up I made multiplying AnalogLook.pitch * 1.5f when using controller instead of mouse
Remove NativeEngine.EngineInputContextId
TraceResult.StartPos/EndPos -> StartPosition/EndPosition
PawnController.EyePosLocal -> EyeLocalPosition ( matches Entity.EyeLocalPosition )
TraceResult.StartPos/EndPos -> StartPosition/EndPosition
add managed to findflags concommand
Add Input.MotionData - current input device's motion sensors states of absolute rotation, positional acceleration & angular velocity.
Supported devices: Playstation 4/5 Controller, Switch Pro Controller, Steam Controller, Steam Deck.
Remove remaining references of fow
CClientInput::CreateVrMove: stop using tracked controller manager, removes reliance on vr_core and gives us more up to date values
Very basic movement with joystick in headset direction
Update .addon to new schema and resolve obsoletes
Fix CClientChangelevelState invalid client copy & not clearing causing the destructor to wrongly shutdown clients
Add basic sys/gpu mem usage to editor status bar to help identify if we have vram leaks
Make rich presence work again so it shows the game title instead of "Game" for every game
Fix some issues with Steam Input glyphs reflected in upcoming Steam Client update
* Glyph sizes for medium and large glyphs changed 64 => 128, 128 => 256.
* Glyph style modifiers now work properly with the source files from Steam.
* Added `steaminput_glyph_forceresize` cvar (default on), some of the styled glyphs are still the wrong size on Steam's end, so cvar so we know when it's safe to remove this hack.
* Added `steaminput_glyph_forcetype` cvar, you can test what your game looks like with different controller types easily.
send playername in connect protobuf, was previously wrapped in a splitscreen message
Remove splitscreen from engine and all the hacky shit that went along with it
* Input config now handled in InputService instead of SplitScreenService
* Remove split client connects / channels from networksystem
* Remove all remaining references to CSplitScreenSlot
Remove c++ engine camera manager from dota, we do cameras entirely in C# managed already anyway
Delete c++ flashlight code
Remove a bunch of vgui HUD stuff
Delete achievements manager from C++, when we add achievements it'll be easier to do in C# with Steamworks
Remove more unused convars specific to hl2, cs, etc.
Restore host_writeconfig which was hidden away in splitscreen service 🥴
Drop `name` convar that was really just a wrapped steamworks GetFriendPersonaName() call - replace with a cached GetPersonaName()
Packaged games properly update their hash for networking, fixes net vars in packaged games
Remove anything marked as [Obsolete] 3+ months ago
Obsolete Entity.EyePos/Rot => Entity.EyePosition/Rotation
delete some legacy c++ concommands: god, say, give, etc. these didn't work anyway and if they should work they should be done in c#
reimplement cl_showpos in c# so it uses the pawn, remove cl_showfps (there's much better ways to see it now)
Fix compile error and strip Panorama stuff from the particle host
Remove more legacy player concommands and whatevers left of impulse
remove env_message
Basic Managed Hammer: add menus from C# and auto reload fgds
* Basic Hammer interop, let tools addons add menu bar options with [Menu]
* FgdWriter tells Hammer to reload fgd automatically when written
* Hammer: Save & restore selection when reloading fgds instead of clearing it
[Net] codegen, use the ISymbol to get attributes instead of the syntax node so you can use the FQN and not have it silently do nothing
Fix access violation crash in NetWrite.SendRpc on invalid entities
Add missing interop includes
Basic Hammer interop, let tools addons add menu bar options with [Menu]
FgdWriter tells Hammer to reload fgd automatically when written
Hammer: Save & restore selection when reloading fgds instead of clearing it
Hook Hammer MapViewHUD render and pass a ToolRenderContext to C# for helper overlays (e.g. showing where a platform will go.)
Lobby.JoinGame remove [] wrapped steamid from connect
Hammer: Fix "New From Template" creating 2 world nodes and leaving one in a fucked state crashing loads of shit
Bare managed interop setup for Hammer
FgdWriter: tell tools to reload fgds
Hammer: when reloading fgds instead of just clearing selection, make a backup and restore it
Restore default key binds button for when you've fucked them
When uploading addons use a 64 bit int for scanned bytes for addons with manifests over ~2.1gb
Use an estimated velocity clientside for entities with physics (was just 0 before)
Only show gamemode packages in local games menu
Ball movement controller, move along with the ground entity velocity