4,207 Commits over 1,157 Days - 0.15cph!
Simplified some naming so that InventoryContainer and InventoryItem both just have Parent
Inventory containers are no longer required to have a parent entity. Inventory containers can have an optional parent item. Items can now control whether or not they register their own child containers. This is useful because now weapons can now have their own "inventory" to store attachments. Updated all inventory UIs to support selecting an item and showing any child containers.
Less spacing between inventory slots and reduce the border radius by half
Added TemperatureModifier to ArmorResource & ArmorItem and appropriately adjust the player's temperature based on what they are wearing
Extended the equipment inventory to support a new armor type: Feet. Added Army Boots, Black Hoodie and Cargo Pants as available items
Added a hover loot feature (hold Ctrl and hover over items in a container to add them to a transfer queue to be transferred to their transfer target container)
Completed refactored InventoryContainer to support derived types and custom serialization
Some tidy up around InventoryContainer
Refactored item tag system to be a hash set of strings and can be set on the game resource. Item tag display info for tooltips etc can be registered with ItemTag.Register this stuff will be used for inventory container item filtering
Completely remove hardcoded equipment check and add a new whitelist and blacklist item tag filter to inventory containers (client + server) show an invalid drag if trying to drag into a container that disallows the item
Merge branch 'main' of sbox-forsaken
Added Thoughts and some generic thoughts for invalid placement of construction pieces and deployables https://files.facepunch.com/conna/1b2211b1/sbox-dev_3TTHzT5GR3.mp4
Some tweaks to the campfire
Updated font to Vollkorn for Cursor title and action names
Added a dynamic light to the campfire that flickers and moves around for a cool effect
Added SetRadialGradientBackground PanelStyle extension method
Add ForsakenPlayer.GetChatRecipients
Added opacity transitions for Backpack, Hotbar, Storage and ToolboxMenu
Fix Draggable selecting IDroppable panels that aren't visible
Added glow background to InventorySlot and use a radial gradient
Added a chatbox with support for system messages
Merge branch 'main' of sbox-forsaken
Add a default muzzle flash effect to the MP5A4
Temporarily fix parse ordering error by using °
Refactored context actions to use a simple class with ids instead of a bunch of classes
Use ??= for internal environment in TimeController
Reduce size of campfire by ~50%
Support new context action stuff in player, make cursor movement less frame dependent, and simulate deployable placement in FrameSimulate
Update Storage Crate and Item Entity to new context action stuff
Add the first version of the deployable campfire (cooking UI to come later)
Some alternative styling to tooltips, draggables and inventory slots to better match the theme
Added TimeGradient<T>, ColorGradient and FloatGradient to TimeController and added TimeSystem.Temperature
Remove unused properties from MoveController
Added networked temperature to the player (for now this just gets set to the ambient temperature)
Added a simple (temporary) vitals display to show health, stamina and temperature
Merge branch 'main' of sbox-forsaken
Update InventorySlot styling
Added campfire model and Vollkorn font and resource paths
Added a command to throw an item from a container
Add `item` tag to ItemEntity entities and show stack size in the context name
PickupAction now works with ItemEntity entities as well as storage crates
Reverse FindDroppable loop in Draggable class
Make Backpack and Storage panels droppable and, when items are dropped onto the background, throw the items out of the container in that direction
Ensure that stack sizes of given items (from command, or by cancelling a crafting entry) properly respect an item's max stack size value
Added CraftingTime to RecipeResource (the amount of time it takes to craft in seconds)
Added CraftingQueueEntry networkable type
Added a networked crafting queue (CraftingQueueEntry) and various methods to add or cancel entries for crafting
Updated bolt recipe to have a crafting time of 2 seconds
Use Color cast for hex colors in ItemColors class
Add an intro transition to the custom tooltips
Make sure custom tooltip uses correct styling for Core Wars
Various compile fixes for Core Wars and bring it up to date
Use new FinalLayoutChildren overload
Merge branch 'main' of sbox-corewars
Use new FinalLayoutChildren overload
Add some placeholder resource icons
Remove unused baseball cap icon
Increase draggable icon size
Fix radial menu and custom tooltip to use new FinalLayoutChildren overload
Add some fundamental material item types
Add methods for getting total item count in inventory (sum of stack sizes) and HasItems and TakeItems these will be used for crafting
Added guard for ResourceLibrary being null (seems to happen sometimes in menu, even with a Host.IsMenu check?)
Added StackSize and some documentation to RecipeResource
Clear background image if setting to a missing/invalid image
Add Package.FindAsync (new api) replaces Package.Query
Only compile runtime local addons if they need compiling
Load runtime addon resources on activate (so sounds work etc)
Add active property to button
Don't render game ui in VR, it showing was a regression from render hooks. We can revisit this if we end up doing a separate desktop view for VR games
Added PhysicsBody.SurfaceMaterial, deprecated SetSurface/GetDominantSurface
Obsolete Entity.IsFollowingEntity & FollowedEntity
Documentation & cleanups
Launcher: when adding local game config, append game ident with #local, fixes not loading into the correct games
ScenePortal docs
Entity bone methods throw on out of bounds input
Updated the Project Page to use game selectors for Game Support, Parent Game and Target Game instead of having to manually enter semi-colon separated values
Merge branch 'master' into custom-client-input
Ensure custom selector properties are reset when new project is selected + fix for QWidget error if Update is called at end of async FetchPackages method but widget is no longer valid
Merge branch 'master' into custom-client-input
Menu is allowed to access engine convars - unfucks all the settings menus
Use TryGetMeta instead of being a nob
Merge branch 'master' of github.com:Facepunch/sbox
Merge branch 'master' into custom-client-input
Use TryGetMeta instead of being a nob
Merge branch 'master' of github.com:Facepunch/sbox
Ensure custom selector properties are reset when new project is selected + fix for QWidget error if Update is called at end of async FetchPackages method but widget is no longer valid
Updated the Project Page to use game selectors for Game Support, Parent Game and Target Game instead of having to manually enter semi-colon separated values
Add Client.IsFriend
Fix compiler not finding runtime game dll when compiling runtime addon
Can get TypeDescription by fullname (namespace.typename)
Runtime addons can define their primary class
Fixed codegen removing all namespaces in generated files
This is primarily for property initializers
Properly fix codegen removing all namespaces
Load System.Security.Cryptography.Algorithms.dll, System.Security.Cryptography.Primitives.dll - and whitelist System.Security.Cryptography
System.Net.WebSockets for tool addons
Greatly increase depth precision for world, fix decals in VR, don't do viewmodel offsetting at all on VR
Fix Undefined Behaviour In Tiled Rendering
vr: make debugoverlay work on right-eye again, don't constantly change render target to swapchain
vr: debugoverlay behaves properly for multiview instancing now too
Outfit Reskins Variations + LODs
Update shaders with adjustments for tiled rendering
projected decal shader: adjust the instance id under multiview instancing so it actually appears in the right eye - decal space position still seems off though
Release shader for projected decals
Get rid of anaglyph and parallel stereo rendering modes
r_stereo_multiview_instancing: default 1, same as VR
Add Debug menu options for stereo rendering to the editor ( easy way to see if your game renders properly in VR )
Local packages untangled from remote packages
Local packages now end in #local and are completely separate from remote packages. This means you don't have to disable your game project to test the published version. It also means your launch configs are now broken. To fix just go in the config for each one and set them back up.
I've updated the Game list page to razor so we could have the local game tab.
Don't bother with multiview instancing unless we explicitely want it, previous behaviour was to always ignore it even when we wanted it, fixes decals and other stuff in VR
Fix r_stereo_multiview_instancing affecting non stereo rendering
projected decals: small compile fix for shader
Clothing Texture Variations + Makeup
Merge branch 'master' of sbox
release shaders for projected decals - should fully behave in VR now
Update sentry-native 0.5.2, add Crashpad WER handler which bypasses SEH to handle __fastfail and stack buffer overrun crashes
vr: particle renderer don't initialize 4x vbos for instancing, only need 2x
vr: fix cables renderer adjusting the transform id the wrong way, cables will render in right eye again
Launcher: first draft for selecting addons for game configurations https://files.facepunch.com/devultj/1b1611b1/sbox_pbcF7SRE4R.mp4
Less debug spam
Switch to new find/get api endpoints
Don't use localhost api - I knew I was gonna do this eventually
Unfuck VR culling frustum which was causing scene objects to get rejected thinking they were only visible on 0.1% of the screen
vr: don't transform hand's angular velocity to anchored pose, it's not something you want or expect to be affected by it
Fix Panel.OnParametersSet getting called twice
Hammer: Try to guess static overlay projection distance from scaling
more crash fix for when m_pInterpolatedBoneTransformWeights is nullptr, missed checking the src
vr: controller poses scale properly with VR.Scale now, so your hands are where you expect them
Add GetName & Count to MorphCollection
Extra info for ModelEntity.SetMaterialOverride overlaods
Fix incorrect blending on spritecard, makes render scene test pass
Fix tags not going to the datatable on client only entities, stopping collisions and traces working properly
adjusted bird_spikes size to be grid size+ LOD tweak
tweaked bird_spikes LOD2
tweak ad board to have the glass on the grid and reduce z-fight on LODs
Sprite card compiled shader with fixes
https://i.imgur.com/B1O3Eqc.png
Revert "Sprite card compiled shader with fixes"
This reverts commit ed5cfdcc2bd94d525dc48e55373bad7f0889747f.
Fix typo on spritecard
We only need to rebuild the panel's box if yoga or our parent position changed
Add checker for HasNewLayout
Don't try to cache null packages
Fix transitions causing recursive selector checks
Speed up HasClasses
Refactor Panel system so PreLayout only recurses when it really really needs to
Only call FinalLayout if we need to
https://files.facepunch.com/garry/8df37b66-e43c-4c46-9123-022f6888b7e7.png
Fix backwards compatibility
Fix exception with "say" on dedicated servers
vr: controllers linear velocity affected by VR.Scale too
RenderHook works in VR as you'd expect without needing to do anything, passing the multiview instancing combo as expected ( doesn't fuck up through monitors either too )
Viewmodels can multiview instance, not really useful but less annoying in debug
Merge branch 'master' into custom-client-input
Immediately set the viewer's container when Storage.Open is called server-side
Added InventoryViewer component. Add this component to Client when they join. Add InventoryContainer.GetRecipients to concatenate the connections list with any explicit viewers. Update viewer based on currently open storage input from client.
Don't do anything in ItemResource.PostLoad or PostReload if we're in the menu
Added Equipment to the Storage UI so players can drag items in and out of their equipment from/to the storage container
Fixed usage of TypeLibrary.Create being wrong
Removed ResourceItem.FromResource because now it can just be done by unique id with item definitions
Crate ->StorageCrate
Remove redundant BaseballCapItem definition
Added InventorySystem.ReloadDefinitions, Initialize, AddDefinition and GetDefinition
Remove ClassName in favor of UniqueId
Move resource items to inventory folder and add ItemClassAttribute. Have ResourceItem implement IResourceItem
Initialize InventorySystem in game class
Send unique id instead of class name
Added RecipeResource (game resource)
Set ItemClass attributes on each of the current 3 item game resources (ammo, armor, weapon)
Properly load game resources when creating items from a unique id. Whether item is a game resource or a class
Update all existing items and add first recipe: bolt
Added InventoryItem.IsCraftable / RequiredItems
Added support to ItemResource for a dictionary of required items (id=> quantity)
Have the bolt require 10 wood and 5 stone to craft this will be the first craftable item to test
Added icons for open + pickup and show a plus icon when there are available secondary actions
Added InventoryContainer.IsEmpty and only allowing pickup on storage crates if they're empty
StructureSelector -> ToolboxMenu
Grey out any unavailable context actions from the menu
Order structures in radial menu by title
Some refactoring to have GetSecondaryActions return IEnumerable<ContextAction>
Add Dialog separate to IDialog
Update to use Dialog + add Storage.Network for simple opening API
Some tidy up and add client input for currently open storage. Use this add/remove connections during simulate
▆▇▉▌▆▊▇▌▊▄▌.▆▍▌▉▊▋▊▌▍▊▇▋▄▉ ▄▆▍▄▌█▊ ▍▌▅▋▊▌▅▌▆▅▌ █▍▉▋▌▉▅▆
(▍▊ ▅▄▌▉█▆▆▇▇ ▌▋▊▅ ▇▄▊▋▍ ▍▉▄ ▋██-▇▅▍▇██▍▉▉▄▌ ▌▆▆▅▉▍▉ ▌▇ ▄▌▋ ▅▊▆▋▅▇▇)
▊▇▊█▅▇ ▆▍▍▍▌ ▆▄▅▉▅█ ▉▋▇▉ █▍▄█▉▇▋▊▅▊▋
! ▆▅ ██▆ ▌▅▌▇▄ ▉▍█▌▋▊▊ █▋▆▇▄▌▅█▉▄ ▊▄ █▆▋▆▅▍▌▋▄
▍▊█▍/▄▉▍▄▉▉/▋▊▅
▅██▇▆▇▇/▍▊▌█▌▌▋▌▊: ▇▌ ▌▍▉▉-▅▌█▍▆_▅█▄█▌▇ ▇▄▇▌▋ ▋▉█▅▆▌, ▍▅▆▋▅▇▅ ▋▍▋▉▊▆ ▉▍▆▄▅█▊▇ ▊██▋█ ▌▊▅▇▉ █▇▇▍▇▋█
▄▅▌▋▌▉▌/█▄▆▌▉█▆▊▉: █▆▊▋▄ ▊▉▉▉ ▊▆▅▆▍▊ ▉█▉▄▇▌▊▌▍▊ ▆█▊ ▌▉▌ ▆▌▋▍▋_▊▄█▇▊▇ (▅▆▆▊ ▆▅▉▆) ▄▌▅▆▋▋█
▋▅▌▆▌▊▍ ▌▄ ▇█▄'▍▌ █▅▊▋█▉▉, ▊▍▄ ▆▄▊▉ ▍▄ ▉▄▅▆▍▌ ▉▅▋▊, ▅█▆ ▇▋ ▅▉▇'▊▋ ██▆▆▌▄, ▆▌▍ ▌▄█▌ ▄▋ █▌▊▍▊▉ ▉▄▌▇.
▄█▉▇ ▅█▆▍▆▉.▄▌▌█▍▊ ▋▅▍▊
▊▉▆▉ ▇▆▍█▍▅▍██▌ ▋▊▊▉▌▇ ▋▉▊█▋▉▍ ▆▍▍ ▌▇▅▅ ▊▉▆▍▍▌▉▌▍▅▉ ▊█▍▊▇ ▍▆▇▉ ▌▅▍▋▌.▋▇▊█▄
▆▉▇▆▆▆▇ ▊ ▉▍▋▍▉▉▌ ▅▅▍▉ ▊▄▉▍▉▆ █▉ █▅▆▉▌▇▍▌ ▍ ▆▅▋▇ ▍▆ ▋█▋ ▍▊█▌▋ ▉▇▄▋▍▋
▊▋▍▋▋ ▍▉▆▇▍▉▊▊▌ ▌▍▆▆▋▋▌▉ ▌▇▌▄▉ ▇▊ ▆▋▉▍▄▇▉▆▍▊▄▊█▅▌█▍ ▋▄▌▊▅▌▄ ▆▌▄▍▊ ▍▊▇▆▉▄▅▍▊ ▉█▆▋
▆▉▋▄▇█▍▍▌▇▉█▄▅▍▉▊ ▅▇▊▉ ▄▄▊█▌▄▊█ ▆▅▉▊▌▍ ▇▆▅ ▉▊▍▋▄▇▌▋
▉▍▆█▍▇ _▅▊▆▅▉▅▊_█▇▆█▉▅_▄▌▅▅_▉▆▉▊▋▊▌▄▊▌▋_▇▄█▍▇▋▇▍ ▊▋▋▅: ▉▅▆▊ ▆█ ▅▋▍█▋▊▆ █▋ █▍▇▄▌▆ ▍▅▆▌▉▆ ▇▊▌██▌▄▍
▉▉▄▊▊▉▄▋▌ ▇▌▋▌▍▍▄▇▋▍ ▍▊▄ ▍▌▋▅▋▅▄▍▇▌▅▉
▆▍▍▋█▇▆▅▆▍▄▋ █▇▊▋ ▅▊▌▄▆▉ ▉▆ ▌█▋▍▋▍. ▍'▍ ▉▆▋▄▅▉▆ ▊▋▉▋▍▋▍▊▇█▆▋ ▊▍▄▇▋▇▊▌▍ ▉▆█ ▆▍▄.
▅▆▊▊▊▊ ▇▆▇ ▊▋ ▉█▍▋▇█
█▆▇'▄ █▌▍ ▊█▊▇ ▄█▅▉ ▄▋▋ █▋▋▊▅▆▋▋▊▄▋▆▍.▆▅▌▍▄▊▄▋ ▇▊ ▄▅▍▄▅▍▉▅ ▉▋ ▆▇▊▋▋▅ ▄▇▋▆▍▌ ▆▋▄▌▊▅█
▇▊▄▅▄▋ █▅▅▉▋▅▌ ▆▉▊▌ █▄ ▅▍▊▋▍▅▋ ▅▍▆▍ ▆▇▇▊▅▄▅ ▆▊▍▇▍ ▌▋▍▄▅▊▊
▄▆█▉▍▉: ▋▍▅ ▍▇▊█▍ ▆▆█▌ ▅▄█▉▊▌▅ ▌▍▋▍▍▄▊ █▇ ▅▋▌▋ ▇▅▇▅▄
▆▆▇▌▄▊ ▉▉▅▍ ▉ ▆▉▉▉▇▄▊ ▄▍ ▅▌▋▅▅▋ █▇ ▊█▄▋▇██▉▋▄▌▅██▍▊▍▄▊▆▇█▆█▇▆::▌▇▉▆▊▆▅▆▌▊▍▌▍▄▅▍▊▄▌▌▉▋▍▄ - ▆▄ ▅▆▍▆ ▆▉ ▇▄▉▄▄▉ █▉▍ ▅▉▆ ▋▄'▅ ▉▄▇▋▆▊▉▊▅, ▇█▄ ▉▅ ▍▆ ▊█ ▇▉▌█▄ ▍▄▊▆ ▌▇ ▆▋▇▅ ▌ ▊▅▊█▄ ▍▌▇█▊▉█ ▌█▍▍▍▋ ▇▉ ▇_▄▄█▊▉█▊▇▌▊▄▍▊█▌▊▅██▊█▄▇█▊▋▋▍█▇▍▄▉
▉▊▄▆▌ ██▅ / ▄▉▄█▉▅ ▍▅ ▇▋▇▌▌▍▍▊▍▄▌▊▋▌▉▊▄▇▅▌▋█▇▍▍█::▇█▇▍▄▉▌▌== ▅▉▊▅▊ ▉_▊█▆▋▉▌█▅▍██▆▄▅▇▌█▇▌▇▉█▆▄▄▆▋▍▋▄▍▌▊ ▉▆▇▅▉ ▇▅ ▄▅▉▍█▋█
▊█▆▄▆▆▆▄▅▅▅▊▇ ▄▉█▍█▊▉ ▉▍▍ ▋▌▍▋▇▇▍ ▇▉▆▋ ▅█ ▉▍▋▉▇▉▄
▅▍▍▄▄▉▋ ▉▉▌▅▍ ▋▉▉▆
▆▉▍▊▅▌▉.▇▉▍▄▌▄▋▅▆▄ ▌▋▋ ▍▍▋▌ ▉█▌ ▋▄▌▇▍ ▄▋█▄█▌▍▇ ▇▉▉
▄█▍▉▌▊: ▍▍▍ ▋▋▆▇▋▅▄▋ ▍▌▇ ▊▊▅▌▆▆▄ ▌▅▍▇ ▇█▇▊▇▊ ▌▄▄▅▍▇▅▆, █▄▆▆ ▋▅█ ▉▅▍█▆▄▆▉▊▅▋▄ ▇█▋▄▅▋█ ▌▍ ▋▅▋▆▄.▉▌▅▌▉█▋ ▍▋▆█▅ & ▅▊▉ ██ ▍▅▇▌▌ ▊▄▄█ ▇▆▉▌▄
▅▅▆██ ▇▋▊▇▆▇ '▊▉▊▍▊▋' ▇█▆▆ ▊▍▆▋▅▅-▋▄▄▉█▍-▆▆▍▌▅
Some cleanup. Implement test pickup/open actions. For now check if dialog is open before simulating context actions.
Added support for secondary actions (hold down to open)