1,189 Commits over 518 Days - 0.10cph!
breaking BaseSculpture down into multiple files, getting unmanageable
merge from pointgrid_to_sdf
basic client->server sculpture update, removed serverside carving
bake GUI physics on a job thread without blocking
basically functional SDF in-GUI sculpting
turning tesselation all the way down on the ice block, not needed as badly with the new method
clear with an overfit sdf mod rather than directly setting values, always enforce clear boundary values
replaced enough of the old point grid into SDF to be able to place it in-game and get the default looking ice block back
realmed OverlapSphere
- this isn't worth it, it's going to break the whole game to fix minor annoyances or in-editor mistake
realmed GamePhysics.CheckSphere
- it's stupid that the PhysicsScene API doesn't have a CheckSphere, but the static one does
force World prefab spawning to spawn both client and server manager instances of the prefab in listen-server mode
- something hacky in bootstrap to not fail trying to build a navmesh, we're populating TerrainMeta.Path.Monuments twice here but it might be a non-issue beyond this one
create GO for the client's physics scene to just hold a terrain collider (Terrain component not needed as it can reference the same TerrainData), should be able to share the static ignore grid still as well
handle client physics tick and interpolation in custom PlayerLoopSubsystems inserted to run after their respective default scene's ticks
merge from SeparatePhysicsScenes
moved some vertex processing into multi-threaded generation
fixed triangle -> vertices/indices processing, each edge holds a cache of indices (max of 4 that it can produce in any configuration) and vertices check this cache before adding their own
- EdgeKey now just holds the interpolated vertex and an order-independent hash of the grid corners it is defined by
- Lets us weld vertices within our own tolerance, roughly halves verts and allows smooth normals to be calculated properly (we lose hard edges a bit with this, but we can solve that procedurally later if we want)
merge from the correct gui_sculpting branch
reduced triangles->vertices/indices processing by roughly half by making Triangles/EdgeKeys readonly struct and only calculating the hash once on creation, done in parallel when they're created and reduces the overhead in the single-thread processing stage
improved triangles->indices generation performance a bit, mainly trying to make it somewhat readable
sped up marching cube triangle generation by 10x by using local list batches with IJobParallelForBatch to reduce NativeList<>.ParallelWriter locking adds
(~0.35ms -> ~0.05ms)
Indirectly iterate modifiers with separate list of modifier types that servers as history
trying to make sense of shit code I wrote a year ago
got test scene working properly
merge from ice_sculptures/sdf_sculpting
undid some questionable shader changes, need a way to supply a triplanar anchor for sculptures or it pans when rotating them in-gui
merge from ice_sculptures/gui_sculpting
- bit broken still
sculpture item not hidden
reduction in sail position influence on thrust, less than half what it was but still double the engine's
- still impacts how you place them on the baot but results in less situations where it feels like the boat is not behaving as it should
setting global shader params update flag after regenerating textures for dirty DeepSea data flags
use a realmed trace for TriggerParent.HasObjUnderFeet so they don't freak out in-editor at speed
PlayerBoat uses HasDriver to check AnyMounted, corrects flipped behaviour not running
merge from anchored_boat_mass
increase boat mass to arbitrarily high value when anchored, won't be pushed arround much but maintains buoyancy behaviour as it's acceleration based
made ProceduralMapEmpty more empty
merge from deepsea_terraintexturing_leak
properly destroying leaked deepsea shorevector / coarseheight / waterheight textures when re-generating
handle uninitialized heightmap properly for shorevector gen (happens with scene camera in some cases)
small engine fuel always accessible from pie menu, proxy func changes the order if you're looking at the fuel access collider to prioritize it
merge from engine_improved_fuel_access
halved shore vector generation time in editor with batched water depth queries (250ms off the time to get into playmode)
- we should jobify the DistanceField stuff as well, but this is a quicker win
flipped steering wheels can't be mounted and flipped playerboats dismount all steeringwheels as well