5,490 Commits over 1,553 Days - 0.15cph!
Fix a 4 year old bug: being able to move items into the output of a furnace by splitting them into the output slots
- the reason I avoided it was you have to modify all the ItemFilter methods in the project and add a BasePlayer parameter
- this allows us to block the player moving items into the output of the furnace but keep the furnace able to move cooked items into it's output
Fix items that are both cookable and compostable (meat) using the lesser of the two times for composting instead of the correct time for each
Fix the composter showing "Furnace" in the loot panel title instead of "Composter"
Don't show the icon as burning when it's inside the composter
Fix item creation loop running for 0 amount (due to chance of creating fertilizer) so early exit if chance fails
Increase the smelt speed of the composter so it behaves the same as before when you were splitting stacks (same as furnaces were back in the day)
Fix composter set to only accept food from old prefab / item filter setup
Fix items that are compostable but don't produce any compost being allowed in the compost (because ItemModCompostable is used for bait value)
Fix the loot panel for the composter not working the editor
- OnValidate() was overwriting the offset of the inventory panel
Fix loot panel not predicting cook time for composting because it was only checking the ItemModCookable
Add the "automatically start cooking" code from the apartment stove to the BaseOven and enable it for the composter (so the composter automatically "cooks" items added into it)
Add prefab variant for composter loot panel (so we can remove / change the background icons for the composter inputs)
Change the composter prefab
Rewrite the hackweek composter UI to merge all of the composter code into normal cooking code
- move ItemModCookable -> CookableItemInfo so we can create a "cooking compost" component at runtime
- turn ItemModCompostable into an ItemMod
- convert Composter class from StorageContainre -> BaseOven
Make the code for "cooking items" in furnaces work on both compostable items and normal cookable items
merge from main -> Hackweek_CompostUI
merge from fix_hotbar_swap_overstack -> main
merge from main -> fix_hotbar_swap_overstack
merge from main -> Hackweek_CompostUI
merge from main -> fix_hotbar_swap_overstack
Fix hotbar swapping not working with overstacks
- move the RPC completely serverside so it can swap overstacks (thinking was we didn't need a network++ originally if we kept it clientside but forgot swapping overstacks is awkward)
- keep existing admin checks
merge from main -> base_occlusion
Refactor and cleanup of code
Make sure we only send entiites when a door opens immediately based on a convar, so we can do normal slower snapshot queue when doors are opened and we send entiites and let the "closer than 30m send everything" prevent pop-in
Fix deployables that are inside multiple rooms not working
- assign them to their own network groups similar to walls that share multiple rooms and subscribe appropriately
Always show rooms that are within ~30m of the player
- prevents us from having to blast the client with a ton of entities right when they open the door, allows us to stream them at a sane rate
Simple list of doors with transparency for testing
Add ddraw for network groups for rooms
Reduce amount of network groups for rooms
Send network updates of room behind the door before the door's network update is sent
Fix lingering occlusion (wait 5s before hiding on client) not always working
update base_occlusion/optimize_building_blocks
merge from main -> base_occlusion
merge from fix_threaded_logs -> main
merge from main -> fix_threaded_logs
Tests to confirm it's fixed
Also capture exceptions thrown on worker threads inside tasks
- been bitten by this before: not realizing exceptions are being thrown in async tasks
Fix log messages from other threads not showing up in the console / RCON due to not having a threaded log handler
- buffer in queue, swallow on main thread and feed into normal logging callback
Update other conditional model code to take into account null slots in conditionals (since we cache the last state of each conditional instead of only storing the spawned conditionals)
Optimize conditional models to only refresh if they are changed
- fixes condition models all being destroyed and recreated every single time the model state was changed instead of only creating and deleting the conditionals that needed to be
Don't hide rooms until they have been invisible for 5s+ (prevents room going invisible as the door is in it's closing animation + reduces churn from rooms being deleted and networked over and over
Move code around, don't unload filestorage since domain reload should handle it
merge from main -> base_occlusion
Tests to confirm the interior walls are fixed
Fixes to make edge case of interior walls not be hidden
Add command to export a building into a format that tests can use (so we aren't spawning the giant base every single time)