135,061 Commits over 4,293 Days - 1.31cph!
Bugfix: OcclusionGroupTests - fixup invalid expectation of newlogic groups in TestVisibilityAfterMovementAway
We succesfully enforce newlogic's rule that networkable should always be in a local occlusion group
Tests: ran all unit tests, all green
Picture Frame - updated scrap set icons
Refactor from IsChildOfPlayerBoat to IsChildOfFinishedPlayerBoat (for now)
Picture frames - texture update, deploy volumes fix
remove_extra_scientist_weapons -> main
Remove unused weapons on boat scientists.
This removes the extra server generated weapons (that aren't used), saving us around 144~ unused networked entities across all AI boat scientists.
Not fully aware of the full performance impacts of having these (if there were any), but worth removing and we will see
Bugfix: OcclusionGroup - prevent unsubbing from own group
Can happen when player is dead/in limbo
Tests: ran unit tests, fixed TestUpdateSubs(newLogic, dead), but TestVisibilityAfterMovementAway(newLogic, dead, *) still fail, albeit for new reason
Tests: OcclusionGroupTests - add simple tests verifying group and sub updates
Need them to validate that new logic can unsub from group it's in (which is illegal)
Tests: ran new 24 tests, TestUpdateSubs(true, dead) failed as expected
boatai_balance_changes -> main
Refactored to pass a List<Vector3> from the client so we can implement different shapes & fixes without needing server update / mismatch of client & server RPCs
If pasting multiple "bases" at once (in a line) add all the entities to a single entry in the paste history so they can be undone in a single step
Refactor `paste` and `paste_line` into a single method one the client & server
- paste now acts like a repeating paste with count of 1
- pass repeat count inside the RPC proto
Picture Frames - texture update
Bugfix: OcclusionGroupTests - fix TestVisibilityAfterMovementAway(oldLogic, Dead) tests
Updating subs when in limbo unsubs you from limbo group (funky, but legal). Old logic ends up with empty groups (okay for it), but new logic ends up with an invalid occl group
Tests: ran unit tests, 4 failures left
Bugfix: OcclusionGroupTests - fix TestVisibilityAfterMovementAway(*, OutsideCell) tests
- Handle the fact that new occlusion group logic eagerly cleans up occlusion groups when moving out of range, even before subscription tick
- Fix invalid assertion for old logic when p2 moves, before subscription tick
Tests: ran tests, now 8 failing (all related to Dead players)
Tests: OcclusionGroupTests - add TestVisibilityAfterMovementAway tests (32)
Tests: ran new unit tests, 14 fail
hooked up workshop source to sks skinnable
added night ambience sounds to the deep sea islands
fixed paintable reference on XL lightup frame referencing the whole prefab not just the lod0
Easel fix, small and medium ornate frame fix
Tests: OcclusionGroupTests - Visibility tests now update network groups and update subscriptions
This validates that subscription mechanism works on a basic level
Tests: all 42 unit tests pass
SKS skinnable , still need to set up workshop source
Boat ai will now only drive the boat to 90% of its max speed, this allows players to be able to go slightly faster than them and get away (setup with a convar as well)
Merge from artist_pack_dlc_old/paintball_overalls
Bugfix: OcclusionGroupTests - use AreEquivalent instead of AreEqual when comparing occlusion groups
Old logic and new logic end up with differently ordered occlusion groups - but in real world we don't care about order
Tests: all 42 unit tests pass
merge from fixed artist_pack_dlc_2 branch to newly constructed artist_pack_dlc
merge from fixed ornate frames branch
Fixed Cherry-picked branch
merge from artist_pack_dlc
Bugfix: Eagerly initialize occlusion groups when player spawns
When player's network group switches on spawn, it's treated as a bot, so doesn't create an occlusion group, but it might be awhile till next group switch, so player might have uninitialized occlusion group for a bit.
Tests: unit tests - 42/45 pass
boat_ai_patrol_aggression_fix -> main
Think time 10 seconds -> 5 seconds
boat_ai_patrol_aggression_fix -> main
Fix boat ai getting stuck patrolling oil rig and not actually engaging a player driving up
Optimisation for EnvironmentManager.Check
- No longer converts the physics overlap collider buffer to a list
- Returns true as soon as a valid environment volume collider is found rather than always iterating through all colliders
Bugfix: OcclusionGroupTests - handle dead players in limbo
All TestVisibility* tests pass for old logic
Tests: ran unit tests
Commit progress on mission "can accept" improvements
- Split up work between client and server. Server checks if missions are valid, this result is the same for all players and does not need to be regenerated at the request of each player. Clients use this result + checking themselves if they could accept this mission for things like mission provider map marker visibility.
- Removed "relative to" position generator type "player" as this no longer works for generating positions in a player agnostic way before missions have been accepted. Replaced each case where this was used in mission position generators, all missions should still be functional as before using alternative position types.
- Modify blocked points so that they work properly with positions being generated in advance of missions being accepted.
- Misc minor mission related optimisations.
TLDR: Restoring mission provider map marker functionality whilst also fixing problems of these being misleading due to discrepancies between the client and server for if missions can be accepted.
Fixes for battery hunt mission
Fix new scientists not playing static sound effect on death
Bugfix: OcclusionGroupTests - use RespawnAt to be put in the right position for RespawnFromDead players
This makes 3 unit tests pass
Tests: ran unit tests
Fix new Scientist using wrong headshots sounds
Prevent another "Look rotation viewing vector is zero" error