5,887 Commits over 1,584 Days - 0.15cph!
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