685 Commits over 334 Days - 0.09cph!
Setup colour changing with spraycan on industrial shelves
Merge from missionobjective_findentities_optim
Fix some objectives searching on layers which are no good on the client
Merge from missionobjective_findentities_optim
Fix MissionObjective_KillEntity missing set initialized flag
Fix MissionObjective_KillEntity showing both standard mission marker and ping marker together when pings are enabled
Fix WorldPositionGenerator potentially throwing a NRE in editor
Optimise mission objectives which dynamically update mission location to nearby target entities
- Use a defined layer mask which matches that which the target entity/s will be found on, was previously doing a physics cast on every layer
- Rework how entities are defined as valid for each objective to remove allocations
- Now run the location updates entirely clientside where possible, it is only used for UI things and doesn't need to be run serverside if a valid entity is in range
On our mission testing map brings serverside cost per 1s tick from ~0.4ms to ~0.07ms clientside and now garbage free
Fix a bunch of SetFlag usages which were potentially doing multiple unnecessary SendNetworkUpdate invokes
Add a disposable struct to be able to define a scope in which we want to listen for flag changes and then do a network update at the end of the scope if flags changed
Update SetFlag to accept a specific update/send type. Makes it less easy to make the mistake of doing multiple send network updates in one go and allows for some neater one-line invokes
Added some SetFlags methods that accept multiple flag set arguments, allows setting multiple flag values in one go before doing a single send and avoids multiple invokes of OnFlagsChanged
Update colliders on industrial garage door to exactly match those on original door
Enable stopOnParentDestroy on bandage and syringe sounds to stop them from being audible after holstering
Restore checking for playermodel persist anim next frame, current frame is too early for the animator states to have been updated
Adjust clear playermodel anims to be slightly before the end of the bandage and syringe anims as they weren't being invoked at the very end
HeldEntity sends RPC to client notifying it is going to be destroyed because its item has been spent. Use that to determine if we should persist the animation or not
Fixes the animations persisting on syringes and bandages when they shouldn't be
Fix server.useLegacyWorkbenchInteraction always opening worbench upgrade panel
▊ ▍▅▌ ▇▉▍▄▉▊ ▆▍▌ █▊▌█▊▇ ▆▊▋ ▆▍▊▍▄▅▌ ▅▋ ▇▊▅▍▇▇▍█▌ ▍▌▅▅
Expose options for recyclers to turn off without an online powergrid and have different efficiency/duration stats with an online powergrid
Update recycler loot panel UI to pull from current stats to populate the text field, also optimise its update method
Adjust door chainlink colliders to overlap like they do on original garage door
Setup various things on the door prefab for the new skinned mesh renderer
Merge from 3p_spectator_improvements
Fix fucked up local playermodel if respawning after having changed to third person view whilst the local player is dead
Initial commit
Basic setup and boilerplate stuff to turn on powerplant using new fuse like item, feeds power into a global powergrid which can be plugged into at IO access points. ✨𝘴𝘶𝘣𝘫𝘦𝘤𝘵 𝘵𝘰 𝘤𝘩𝘢𝘯𝘨𝘦™✨
Setup anim events for toggling visibility of arrows on worldmodel
Merge from 3p_spectator_improvements
Viewmode fixes:
- Now need to press shift+F3 to set additional viewmodes. Just pressing F3 will only toggle between standard 1st and 3rd person.
- SpectatePlayer should now return the correct currentViewMode during both spectate and demo playback. Removed hack for getting the viewmode
- Can now switch between all viewmodes during demo playback
- Fix SpectatorMode.Update not being called in third person during demo playback
Merge from 3p_spectator_improvements
- Smoothed the zooming in and out in third person camera view
- Fixed third person camera zoom being inverted. Added client.'invertthirdpersoncamzoom' convar for the sickos that prefer it the old way
- Fix connections potentially being added more than once in RpcTarget.FromFlags
- Fix spectated player name and health text being invisible when spectating in third person
- Add LocalPlayer.GetLocalOrDemoPlayer() to cleanup some usages for retrieving the local player. Consequently fixed a few incorrect usages of GetLocalOrSpectatePlayer()
- Fix metabolism values on other players not being recorded in demos
- Add RpcTarget.FromFlags to easier construct who we want to send an RPC to
- Fix full server snapshots not being sent if running client+server
Merge from 3p_spectator_improvements
Fix potential NRE when starting debug camera
Merge from viewmodel_early_disable_fix
Move viewmodel clear config file
Merge from viewmodel_early_disable_fix
Fix issues with third person anims still stopping early on molotov, bandage and syringe
Merge from heldentity_preprocess_fix
Fix NRE in HeldEntity.PreProcess
Merge from 3p_spectator_improvements
Merge from viewmodel_early_disable_fix
Applied to other grenade types, bandage and medical syringe
Fix issues with camera reset lerp
- HeldEntity and BaseViewModel now find and cache which anim clips are valid for persisting in PreProcess rather than in DoPrepare and being serialized to each prefab. Makes it easier to quickly test in editor and no prefab diffs
- General cleanup of the code
- Fix not checking if the animation controller playable is valid in PlayerModel.IsGoingToPlayClearHoldTypeAnim
- Remove some garbage allocs in AnimationEvents
- In AnimationEvents.TryCacheEventReceivers always check its parent for any other IAnimationEventReceiver. No current viewmodel for which this would have been a problem for, but because it can support more than one event receiver felt like a bug waiting to happen
Fix exhaust VFX not playing correctly on chainsaw viewmodels
Merge from chainsaw_exhaust_vfx_fix