253,016 Commits over 3,990 Days - 2.64cph!
Flip the shield raise progress bar so it starts full and lowers rather than vice versa
Shield can now only be raised for a maximum of 4 seconds
However long the shield is raised the player then has to wait that long until they can raise the shield again
Shield can be raised for a minimum of 1s (ie. if a player taps RMB, the shield will do a 1s hold and then have a 1s delay before it can be used again)
Communicated via the on screen progress bar (aka compound bow)
Fixed player floating above ground when rotating the ballista
Player follows the ground level
Better clipping checks
merge from primitive -> aux2
Yet another try catch that needs to throw it's exception instead of logging during GenerateManifest
Bindless lightmaps/Lightmap Combo Removal (#1765)
Add extra colliders to the top, side and bottom of all shields for extra cover
Tripled the health of all shields
merge from primitive -> aux2
Ensure errors are thrown inside DoPrepare() instead of being skipped over
- only applies when `-throw_manifest_error` is set
Remove Lightmap comborule from shadergraph graphcompiler
FoliageGrid profling.
RustCamera foliage grid profiling.
Test:
Disable LODGrid refreshing when applying a preset change, enable it afterwards and then manually call it once.
Saves it being called 3 times when the tree, particle and mesh quality convars each get changed at the same time.
Add profiling for LODGrid.Refresh
Add test for cloning prefabs that contain a nested prefab instance which has a variable that references the outer prefabs root
- Further polish on layer changes
- Fixed bug causing animation curve to not run fully through
- Ensured timer duration works ass expected
- Added big ass note to the top of the file
- Worked on further hiding some bow manipulations
Add Input.Keyboard.Down( key ), Input.Keyboard.Pressed( key ) and Input.Keyboard.Released( key ) - maintain accumulated press/releases for key presses now we need them
Add back vertex cache request batching now we know everything works
Fix decompressing normals in skinning compute shader
Custom Subgraph Nodes now detect sampled textures and allow you to change them as properties
Display Default Values on unconnected inputs of Subgraph Nodes
https://files.facepunch.com/CarsonKompon/2025/January/22_15-34-AnyAllensbigearedbat.png
Apply clone config overrides at a different stage
Double height texturcontrolwidget
Set initial stock of icepick, salvage axe & large backpack to the same value as their refill amounts
Add support for initial stock of a vending machine to be <10
Add TextureGenerator boilerplate
TextureControlWidget poc
Fix NRE in SpriteRenderer when texture is null
TextureControlWidget creates a child ResourceControlWidget instead of trying to be one
Draw texture preview
Standardize internal way to async replace placeholder textures
Add Sandbox.Utility.ForAsync
TextureGenerators are async
Add IPopupEditor<T>, EditorUtility.OpenControlSheet looks for this interface when creating a popup
Rename ControlSheetPopup to PopupEditor, make more modular so we can override important bits
Add TextureEditorPopup
Clean up TextureControlWidget
Add Color.Rgba16 (half based color)
Add Bitmap class
More bitmap stuff
Bitmap draw and bitmap pen
Bitmap drawing fixes
Bitmap clone, IDisposable, IValid
Wrap IResourceCompilerContext
Find "$compiler" in resource json and launch compiler
Add more ResourceCompiler functionality
Managed can override compiling of any resource
Add Texture.GetBitmap
Simple texture compiling from managed
Add Bitmap.ToFormat( ImageFormat format )
Add TextureBuilder.WithMips() - auto mip count
Bitmap.ToTexture supports mipmaps
ResourceCompiler.Compile is async (but we have to run it syncronously)
ResourceCompiler,. ResourceCompilerContext are in Engine
Add transient filesystem
Add Texture.IsError
Compile embedded textures to transient folder
ResourceCompiler,. ResourceCompilerContext are in Engine
Add transient filesystem
Add Texture.IsError
Compile embedded textures to transient folder
Add ShaderGraph.IsSubgraph and add "Shader Sub-Graph" to the New Asset menu
Shader Sub-Graphs are now saved with the `.shdrfunc` file extension despite being the same asset (just so it can be registered with a different icon and filtered against in the Asset Browser to reduce user confusion)
Give .shader, .shdrgrph, and .shdrfunc assets different colours in the Asset Browser
Don't include BlendMode, ShadingModel or Domain in Subgraphs
Don't include "Material" ShaderNode in the Create Node/Palette menus of Subgraphs. Ensure proper extensions are used when opening the respective file types.
Add PlugInfo and make BaseNode.Inputs and BaseNode.Ouputs virtual.
Added FunctionResult ShaderNode, can only be created in Subgraphs and is created as the default node in newly created Subgraphs
Fix Shader Graph wanting to save/load as sub-graphs
Make sure [Title] attributes are still respected with PlugInfo
FunctionResult can now have a variable amount of inputs of varying types defined by a Dictionary. These are to be used as the outputs of the eventual sub-graph node
Use shader-specific types for FunctionResult Inputs
https://files.facepunch.com/CarsonKompon/2025/January/16_16-02-HumiliatingMorayeel.png
Rename "Inputs" -> "Outputs" on FunctionResult since that's technically more accurate
Instantly update the Result node when Outputs are modified
https://files.facepunch.com/CarsonKompon/2025/January/16_16-18-WarmIncatern.mp4
FunctionResult node will produce Errors preventing compilation
https://files.facepunch.com/CarsonKompon/2025/January/16_16-48-VictoriousBrownbutterfly.png
Fix NRE when attempting to save with unresolved errors
Guarantee IsSubgraph is set properly from the ShaderGraph window
Only Update FunctionResult.Inputs when necessary instead of when accessed.
Add PlugInfo.GetInput() and serialize PlugInfo.Name as the property name instead of display name
Fixed NRE when FunctionResult name is left null
Subgraphs no longer attempt to generate a .shader file, and will run error checks in the graph on Save
FunctionResult Inputs now maintain connections upon being regenerated
FunctionResult node generates inputs before creating connections to ensure connections are always deserialized correctly
PlugInfo correctly uses property name if no [Title] attribute
Refactor Result node into an abstract BaseResult class which Result and now FunctionResult can both inherit
You can now specify the preview type for certain Output variables on a Subgraph so changes can be reflected in the Preview window.
https://files.facepunch.com/CarsonKompon/2025/January/21_12-51-DifferentAmericanbulldog.mp4
Can change Preview Blend Mode/Shading Model/Domain in Subgraphs
Implemented all other preview types for FunctionResult
Fix GraphCompiler failing when using Unlit in Subgraphs
Subgraphs have Title, Description, Category, Icon and Add To Node Library properties. To be used for the created node
Added SubgraphNode which references a .shdrfunc. Results in graph errors if the references graph cannot be found or the references graph has errors
Dragging a .shdrfunc asset into a ShaderGraph will create a Subgraph Node referencing the dragged asset
Fix error when deserializing SubgraphNodes
SubgraphNode now uses the Title, Description, and Icon from the referenced Subgraph
SubgraphNode now generates inputs from any Parameter nodes in the subgraph, with default names for any without.
SubgraphNodes now generate output plugs from the FunctionResult node in the references Subgraph
https://files.facepunch.com/CarsonKompon/2025/January/21_16-23-CoordinatedEastsiberianlaika.png
Subgraph "Add To Node Library" adds the subgraph to the Create Node menu so they can be easily accessed.
https://files.facepunch.com/CarsonKompon/2025/January/21_16-51-HardVampirebat.mp4
Double Clicking a Subgraph Node instantly opens the Subgraph
Implemented the file history forward and back buttons when navigating through multiple ShaderGraphs in the same window
https://files.facepunch.com/CarsonKompon/2025/January/21_18-29-MidnightblueSandbarshark.mp4
Add [Hide] to TextureCoord.Title override
Minor MainWindow refactor so .shdrgrph files arent recognized as Sub-Graphs mistakenly
Prompt to save current graph (if dirty) when pressing the Forward/Back/Home buttons
Created ITextureParameterNode and started custom inpsector editor for when texture samplers are present
Expand "Map %s is missing" disconnect in the other place too
It wasn't displaying the info about cl_downloadfilter.
Display HTTP error when FastDL fails and its not a 404
Fixed the game not downloading maps if bz2 version exists locally
Unify how ITex/IMat:GetColor pushes color to Lua
Merged Pull Requests
* Do not display effect rings with Gravity Gun equipped
* Update jQuery and reduce reliance on it in main menu, as well as lazy load images
* Added math.IsNearlyZero and math.IsNearlyEqual
Initial pass for primitive travelling vendor trades since 6/10 items were removed due to item restrictions (plan to do another pass later once seige equipment has final crafting costs)
- wood
- stone
- metal frags
- hqm
- sewing kits
- gears
- large backpack (max 2)
- salvaged axe (max 5)
- salvage pickaxe (max 5)
Update: ServerDemoPlayer - add debug option to log packets
Trying to figure out why some construction events are not being palyed back properly
Tests: played back a demo where I'm building multiple chained staircases
Fixed ballista SiegeWeaponVehicleAudio.StartReloadSounds NRE
Unpacked catapult mesh prefab, see if it fixes the unpooled bone names
Tweaked battering ram door max angles
Add support for alternative vending machine trades per era
Add TextureBuilder.WithMips() - auto mip count
Bitmap.ToTexture supports mipmaps
ResourceCompiler.Compile is async (but we have to run it syncronously)
New battering ram dismount pos
Fix nested prefab edge cases
Fix edge case when prefab with a variable referencing the prefab root was cloned
Tweak pickups so that grenade/tripmine pickup notices show correctly
Bugfix: ServerDemoPlayer - synthesize initial tick after loadign a player
Avoids server's perception of teleport, as ticks are delta serialized and after load of save have default values.
Tests: played back a demo on craggy where I stayed stationary the first 10 seconds. No longer generating errors.