With the introduction of the GameVolume entity and the ability to create WaterVolumes from this entity, you can now move entire water volumes with very simple Flow Graph setup.
For information on the WaterVolume object parameters see WaterVolume.
For this short example, we'll create a small lake that we want to drain and then refill. Add a new game volume to represent our body of water, make sure it's set to the WaterVolume class.
Now we need to define the height that the water will drain to, so add a new TagPoint where you want the lowest point to be. In this example, it's about 20 meters below the current surface height.
We also want the water to return to its original position as it refills, so add another Tagpoint where the current helper is for the GameVolume object is.
Use the 'Align Selected to Object' button to accurately align the tag points so that the water only travels on the Z axis.
The Flow Graph setup for this is very simple and can be triggered in many various ways. For the sake of simplicity, we're going to trigger the movement via an InputKey node.
Using the Movement:MoveEntityTo node, simply add the GameVolume entity as the Input Entity, adjust the movement values, and use the TagPoints as the destinations for either draining or refilling.
Pressing 'k' will tell the GameVolume to move down towards TagPoint1, releasing 'k' will tell it to move to it's original location at TagPoint2.
|Water at default position||Water going through the draining process||Water fully drained|
With very little effort required, you can add more realistic interactivity to your levels.
Things like activating a tap in a bathtub will now not only provide water visuals through particle effects, but now you can even physically add an increasing/decreasing water level, fully physicalized with floating soda cans and all!