> For the complete documentation index, see [llms.txt](https://docs.oserosuite.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.oserosuite.com/technical-notes/unreal-engine-notes/water-plugin/classes-overview.md).

# Classes Overview

* **AWaterBodyActor**: Base Class for all of the actors
* **UWaterBodyComponent**: Holds the Meta Data and a bunch of variables to make it generic for all actors, even those without a spline
  * **UWaterSplineMetadata**: Holds all the custom spline curves such as depth, width, velocity, etc
    * **FWaterSplineMetadataDetails**: Customisation for the meta data class (added by default in the SplineComponentDetails)
    * **UWaterSplineMetadataDetailsFactory**: To identify FWaterSplineMetadataDetails as the correct details customisation to the default SplineComponentDetails
  * **UWaterBodyComponent::CreateOrUpdateWaterMID**: Gets or creates a dynamic material instance for use in the mesh component
* **UWaterSplineComponent**: Custom spline class for the water body actors such as river
  * **FWaterSplineComponentVisualizer**: Adds the extra handles for depth, width, velocity, etc
    * **HWaterSplineVisProxy**: Custom spline handles for the custom water curves
    * **UWaterSplineComponentVisualizerSelectionState**: Processes what type of handle is selected for functionality to be correct
