Physical Water Surface

Physical Water Surface is built in such a way that multiple WaterPlanes can be added to a map. By default there is only one sea level and all the Buoyancy Blueprints read the SeaLevel property from the WaterSettings Blueprint. Have a look at the Event BeginPlay in the WaterSettings Blueprint, there you will see that the SeaLevel property is set automatically, using the Z position of the first WaterPlane that is found. This works fine as long as all the WaterPlanes are at the same level.

If you want to put WaterPlanes at different heights with working Buoyancy, you need to make some modifications:
In the BuoyancyBlueprint you need to find out above which WaterPlane you are. Depending on the situation you can use Traces or Trigger Actors for this. Then you add the appropriate height offset to the SeaLevel value that is used in the Buoyancy calculations in the Buoyancy Blueprint. It is only used in 5 locations that you can easily find with the search function.
And you probably want to disable the the FollowCamera option of the WaterPlane Blueprints, otherwise the WaterPlanes will move with the camera. It’s probably a good idea to use your own mesh for the water plane that has the correct shape of the body of water that you need.

That was a very general description how this can be accomplished. If you have more detailed questions, you’re welcome to write an email to my support address and I will help you get this working.