The complete lake toolset, identical to the one in Pro — shorelines, depth, swimming and buoyancy.
Lite ships the Pro lake system in full, with nothing removed. A lake is a real spline-authored water body: you draw its shoreline, and the plugin generates the surface mesh, the physics collision, the navigation geometry and the landscape carving from that one spline. Legacy had a lake actor, but it was a preset-driven flat body with no spline, no collision component and no terrain interaction anywhere in its source. This is a different system.
A lake is an actor carrying a lake water component, which declares itself flat-surfaced, closed-loop and without height offset support. You edit the water spline directly in the level, and the shoreline is the spline. The generator needs at least three spline segments before it will build anything, and it warns explicitly if the spline crosses itself, because a self-intersecting outline cannot be triangulated into a valid basin.
The spline is converted to a polyline at a squared error tolerance of 100, then triangulated with a constrained Delaunay pass using a positive fill rule, producing the water body mesh with colour and normal overlays attached. If Shape Dilation is set, which it is by default at 4096, a second polygon is offset outward by half that value and triangulated separately. That dilated mesh is what lets the shore blend outward past the literal waterline instead of ending in a hard edge.
The rendered surface is a static mesh scaled to the spline bounds in X and Y with Z left at one and made absolute, carrying the water material instance, with shadow casting and collision both off. Collision is a separate component and a different shape. It takes the shoreline polygon, ear-clips it, extrudes it in Z and stores the result as convex hulls on a body setup flagged to use simple geometry as complex. That body setup gets a deterministic GUID derived from the component's full name, so repeated cooks produce identical output instead of a new GUID each time. The collision extent in Z comes from half the Channel Depth plus half the Collision Height Offset, and the component sits below the surface accordingly. Bounds for the whole body are the spline bounds raised by the max wave height offset and dropped by the channel depth.
The collision component implements a custom navigable geometry export rather than letting the navigation system read its convex hulls directly. It exports the body setup with a translation of minus the maximum wave height, so navigation is built at the water's rest level instead of at wave crest height. Combined with an assignable water nav area class, that means AI pathing sees the lake as water at the right elevation, with whatever traversal cost or swim behaviour you attach to the area class.
Turning on Affects Landscape lets the lake carve its own basin. Curve settings define the channel: a curve channel toggle, an elevation curve asset, a channel edge offset, a channel depth and a ramp width defaulting to 512. Heightmap settings choose a blend mode from Alpha Blend, Min, Max and Additive, so you can restrict the brush to only lowering or only raising terrain, plus falloff settings and an effects stack covering blurring, curl noise, the curve channel, displacement, smooth blending and terracing. A per-layer weightmap map lets the lake paint named landscape layers while it carves, so a mud or sand layer appears with the basin. The carving itself runs as GPU passes for the distance field, the falloff, the weightmap and the final water composite.
Everything that needs to know about the water goes through one query. The surface info call requests location, normal and velocity, optionally depth, and resolves against the nearest point on the water body. Inside an exclusion volume it returns false along with a flat surface, an up normal and zero velocity, so gameplay code under a dock or a bridge gets a defined answer rather than a stale one.
Buoyancy runs the same query per pontoon. Each spherical pontoon carries water height, immersion depth, water depth, water plane location and normal, surface position, velocity, the water body index and the owning water component, and is copied across the physics thread boundary each step. Voxel buoyancy is available for hulls that a sphere set describes badly, and both systems are in Lite.
Swimming is one component reading the same query through its wave sampler. It enters swimming at 0.7 immersion and leaves at 0.55, hysteresis that stops a character at the waterline flickering between states. Defaults are 300 swim speed, 600 sprint, 0.005 hydrodynamic drag, surface flotation with a 1.35 buoyancy ratio and 3.0 vertical drag, 0.6 wave-follow smoothing, 220 wave surf push and a 1.5 second out-of-water exit delay, with wading speed scaled by depth. Where a baked shallow water simulation exists, it can serve those queries and the physics instead, and does so by default.
The lake polygon is inserted into the shared water quadtree, subdividing recursively to twice the tree depth, with its Z bounds raised by the maximum wave height so tiles are not culled at the crest. Overlap material priority decides which body wins where two coplanar surfaces meet.
| Oceanology Legacy | Oceanology Lite | |
|---|---|---|
| Shoreline authoring | Preset-driven flat body, no spline in the Legacy source at all | Closed water spline, mesh generated from it |
| Water body collision | No collision component in the source | Convex hulls extruded from the shoreline polygon |
| Navmesh | No navigable geometry export | Custom export offset to rest water level, with a nav area class |
| Landscape carving | Not present | Heightmap and per-layer weightmap carving with a six-effect brush stack |
| Shore blending | Not present | Dilated mesh generated from Shape Dilation |
| Cook determinism | Not addressed | Body setup GUID derived from the component name |
| Minimum spline segments | 3 |
| Spline to polyline tolerance | squared error of 100 |
| Triangulation | constrained Delaunay, positive fill rule |
| Shape Dilation default | 4096, offset applied at half |
| Collision trace flag | simple used as complex |
| Navmesh export offset | minus the maximum wave height |
| Curve ramp width default | 512 |
| Heightmap blend modes | 4 (Alpha Blend, Min, Max, Additive) |
| Brush effects | 6 (blurring, curl noise, curves, displacement, smooth blending, terracing) |
| Fixed water depth default | 512 |
| Swim enter and exit immersion | 0.7 and 0.55 |
| Quadtree subdivision for lakes | twice the tree depth |
This is one entry on the Galidar roadmap. For what already shipped in each release, see the Changelog.