1,086 Commits over 487 Days - 0.09cph!
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
undid plane points reordering in the prefab, code was adjusting it in the wrong order - corrected there instead
re-ordered control forces plane points so plane normal points up, also set non-stupid values for control accel
steeringwheel controls HasDriver flag of parent boat
enabling PlayerBoat correction forces with some initial balance
added acceleration mode for boat wave correction forces, default is force (old behaviour)
- lets us have consistent control forces on playerboats without worrying about mass differences
handling torque scaling properly when accumulated forces cancel (was dividing by zero in some cases and apply naninf torque)
removed unused field from shore vector override mod
merge from floating_city_support
applying baked data for floating cities
gave shore vector override mod inner radius to allow linear falloff between inner and outer radii with hard limit inside inner radius
allow shorevector-only bake, handle in blitting
adjusted default deep sea height slope data to match expected minimum for deep sea (-64)