1,153 Commits over 518 Days - 0.09cph!
removed all the debug logs I forgot about
added TriggerParentDelayedExit that defers Unparenting by small amount, allows bridging small gaps in parent volumes seemlessly without needing to find them algorithmically
- replaced all TriggerParnet in BoatBuildingBlocks with this
merge from parenting_improvements
compile fix for BaseMountable change
- switched out client-incompatible check to an explicit disabling of the behaviour from the vehicle parent instead
- set flag on PlayerBoat only
merge from parenting_improvements
- just the stairs parenting volume
gave boat stairs their own parenting trigger volume
pick up fuel when picking up boat engine
merge from boat_mountable_fixes
set steering wheel as DirectlyMountable, behaviour is the same but shortcuts checking the vehicle parent MountInfo in some cases
check whether the BaseMountable is a MountPoint for its vehicle parent when checking HasValidDismountPosition
- already being checked for retrieving the actual positions, this just stops the menu item being hidden in some cases
setting ForceDeployableSetParent to true for the PlayerBoat so parenting deployables actually works
moving some cargoship/tugboat special behaviour cases in deployabled and HitInfo to be driven by an interface tag rather than direct type check
- deployables parent directly to the vehicle instead of sub-entities
- special handling in some HitInfo data generation
merge from shorevector_disabled_terrain_fix
rebaked Tropical 3 and 4, slope data was broken
handling disabled terrain properly in shore vector bake
corrected buoyancy using almost none of the correct DeepSea data sources for querying wave information
put the ocean back into the cargo test scene (ocean topology)
merge from fc_shorevector_fixes
painted ocean topology onto shared FC terrain and rebaked shore vectors
handling null/empty heightslope and waterheight data in baked data properly
(was trying to blit empty arrays)
rebaked FC 1/2/3 so the data isn't infinity
support minimum enforced shore distance on baked data to handle FC better
merge from oceansimulation_split
- running two ocean simulations, all usage switches between based on position (like all other deepsea code) and batched queries gather indirect indices
fixed issues with batched ocean trace deferred jobs
using AsDeferredJobArray for the rays in the IJobParallelForDefer OceanTraceJob as the indices now drive the deferred batch size and we still need a view of the rays list that is aware of the populated size in previous jobs. This maintains parallelism and a single set of job dependencies without needing a complete/sync
OceanSimulation split between deepsea and mainland
- required extra indirection in most batched water queries but it's hidden away
strong internal hurt triggers in square hull to handle both clipping and player damage
assigned missing physics mats on some boat building blocks
initialize deep sea shore vectors properly when loading cached shore vectors (editor-only issue)
cleanup
left note for possible change to how angles are populated if it proves a performance issue
merge from directional_drag
added command to print DragByAngle table of a boat you're looking at (admin only)
reduced ray count slightly and only recaching BoatBuildingBlocks if the list is empty
better ray batching, as always it's bottlenecked by Verify
- added GamePhysics.SortDeferred which returns the sort JobHandle, useful in this case where we're scheduling multiple parallel batches
mapped accumulated area to drag values, needs further balancing but adjusts between 0.8->1.5 rang currently
- using batched casts, still a bit slow
- substepping drag values between angles for continuous values
initial WIP directional drag (not balanced and not fast)
- take a set of planes offset from hull block bounds at a regular set interval
- project min/max bounds extents onto plane and perform a set of raycasts in flow direction and use dot of normal against -flow to scale drag impact and accumulate
- drag is saved per-angle and will update for the boat at set intervals by slerping between nearest values to current angle of velocity against forward
- considering this as "drag" currently, but may apply this as a force for easier control
structure to query drag by angle from flattened pre-baked data (dummy data for testing)
sending client RPC to a player when entering the deep sea, currently only used to reset deepsea terrain texturing data
merge from physics_pass_two
playerboat wavePID balance
check boat engine state instead of driver state for enabling correction forces (playerboats are powered without someone at the helm)
improve transform access in correction forces