4,572 Commits over 1,280 Days - 0.15cph!
Update build pipeline Unity version to 6000.0.58f2 to match ProjectVersion.txt
Fix "ShouldBeRunning()" getting inverted during refactor
Refactor refill code from PrefabPoolCollection into it's own PrefabPoolFiller class
Add convars to control pool refilling
- refill_max_concurrency (default max 5 jobs queued)
- refill_mode (0 = off, 1 = main thread, 2 = InstantiateAsync)
- refill_immutable_optimization (assumes source prefab isn't being modified)
- refill_max_per_job (max number of prefabs submitted per job (default 30)
Better detection when no work is being done and avoiding burning the budget
Target refilling each pool to 50% to avoid constantly deleting extra prefabs if the pool is always full
- hardcoded for now
Simplify main thread refilling, don't worry about overshooting budget since it can be set small and we want to move to async which doesn't risk overshooting
Add back parent parameter in InstantiateAsync() since it actually works in Unity 6
merge from unity_6.0.58 -> hackweek_pool_refill/unity_6
3 materials for the 3 extra materials created
Cherrypick CS
107107
- Wind shader fix
Update TextureFormat being deprecated in ColorCorrectionLookupEditor as well
Switch from ComputeBuffer -> GraphicsBuffer so I can cast from BufferDesc -> GraphicsBuffer implicitly to preserve existing behavior in SpatialEnvironment code
Cast null to RenderTexture in Graphics.Blit inside OcclusionCulling.Debug since there are overloads now
Remove TextureImporter.textureFormat being set in AssetStorage.cs since it's deprecrated
- simply set Automatic compression vs uncompressed for now, review later
Clarify namespaces for rendering in Rust code after namespaces changed
More auto applied upgrades
Update namespaces & such in SpatialEnvironmentVolumeDrawPass instead of the render pipeline package
Fix render pipeline switch using statement -> Begin() & End() calls
Remove RustRenderPipelineAsset.renderingLayerMaskNames since it's Obsolete and no longer virtual
Fix namespaces & methods being changed in the Rust.RenderPipeline package
- changes in project directly instead of in git repo for now
- stuff like UnityEngine.Experimental.Rendering.RenderGraphModule -> UnityEngine.Rendering.RenderGraphModule;
- ComputeBuffer renamed to Buffer
- obvious fixes first
Script auto compile / fixes
Cherrypick CS
107091
- TMP_script changes
Cherrypick CS
107090
- ProjectSettings\MultiplayerManager.asset
Cherypick CS
107089
- CurrentVersion.cs
Update ProjectVersion.txt to 6000.0.58f2
Add RefillAsync() method but it already doesn't work on 2022
- the Transform parent parameter is ignored and not fixed until Unity 6 so the refilled prefabs are spawned in the main scene instead of attached to the inactive root
Add editor only behavior to create pools when a prefab is first instantiated
- currently it will only create the pool & start refilling it once the prefab is killed, not when it is first spawned
- convar `instantiate_creates_pools` (default false) will cause the pool to created after the prefab is first spawned
- this isn't an issue in standalone builds as it will warmup the prefabs on the menu and fill the prefab pool while connecting to the server
- can't use the warmup command to fill pools in the editor as that takes 30s+ and isn't great for testing
Store time taken to instantiate each prefab when refilling the pool
- base the average on up to the last 20 prefabs spawned
- used to determine if we need to move onto async instantiation (for hackweek we will play around but later on)
- use estimated time to enforce the per-frame budget a big more aggressively (don't instantiate a new prefab if it will exceed budget by 20%)
Start by adding simple pool refilling
- 0.1ms per frame creating prefabs until each pool is full
- keep list of partially full pools, loop through them in order
Fix print_prefabs having wrong order of columns (existing issue??)
Reapply the caching present before the optimization with a nullable bool & ensure ResetState() will reset the caching
Fix parented static occlusion optimization not working when coming back into network range
- moved setting dynamic / static occlusion after the parent is set instead of before
- ensures static occlusion grabs the correct position from parent
Clamp radiation maximum radius to +50% or +20m: whichever is smaller
- reduces puzzle radiation size on large puzzle rooms
- reduces how much radiation leaks out of military tunnels building blocked
Fix arctic research puzzle radiation spawning randomly across the map
- was having it's worldPosition added twice: once via localPosition and once via BoxCollider.center
- set the WorldPosition to zero so the BoxCollider.center can be the worldPosition
Disable dynamic occlusion pausing until further fixes because it seems to be enabling static occlusion long before parenting is finalized, causing it to think the static position is 0,0,0
merge from fix_has_respawn_options -> main
Fix checking for sleeping bags instead of checking respawn options in PlayerInit()
- was still spawning player on death screen on fresh wipe because it was checking for 0 sleeping bags which would return the mission locked outpost respawn point
merge from fix_dynamic_occlusion_pooling -> main
Fix pooling issue with dynamic occlusion pausing
- was assuming the entity wasn't parented by default, so dynamic = false by default
- however wasn't resetting the bool in ResetState() causing pooling errors
- even if it was, the old code was updating batching + occlusion every time the parent changed so we want to follow suit
Show CPU time vs total warmup time when logging time taken to warmup steam item definitions
- only shown in editor
- the numbers were correct, it's actually really slow to warmup steam items on main thread
merge from puzzle_reset_changes -> main
Fix radiation trigger not being multiplied by 2 (extents vs size)
merge from puzzle_reset_changes -> main
Fix SpawnGroup on NMS having higher population than "maxSpawnedPerTick" causing it to consider the puzzle looted
S2P
S2P Launch site to apply previous "pauseUntilLooted" changes
Enable pauseUntilLooted in powerplant
S2P
merge from puzzle_reset_changes -> main