C++ Summary
You've got the UWaterSubsystem, which handles the intersections, and which actor/component gets which vertices, and that's all handled by the AWaterZoneActor, which is the volume that holds all mesh components and divides the rendering into tiles.
You then have the UWaterMeshComponent which builds the geometry data for a specific section of the water system (ie, river, ocean, lake, transition piece), which uses a HActor as a hit proxy which makes the geometry selectable in the viewport.
This data is then stored in a FWaterQuadTree, which is passed to a FWaterMeshSceneProxy, which handles the drawing like a primitive, which uses TWaterVertexFactory to draw said vertices to the screen.
TWaterVertexFactory then uses FWaterMeshVertexBuffer and FWaterMeshIndexBuffer in a collection of TWaterInstanceDataBuffers in a RHI thread.
Last updated