In UE2 we had a simple but fun feature called a FluidSurfaceInfo. This was a small, simulated fluid surface that you could place in your level, and would respond to the player running through it and shooting it. It was requested that we bring back this feature in UE4. So I am posting the original source from UE2, if anyone is interested in porting it to UE4 as a plugin! I made a page on the wiki with the source code here:
This is a CPU implementation. In UE3 we had a more sophisticated GPU-based fluid surface implementation, but I don’t really know that code, and I thought this would be a simpler place to start. I would look at the CableComponent plugin to give an example of how to set up a plugin and render custom geometry each frame. This is not intended to be an ‘ocean surface’ feature, but something useful for small pools of water (or, you know, toxic acid, lava, the usual…). This is UE2 source, back when we had .uc files, so the first job will be turning those into UE4 decorated C++ headers.
I’m happy to try and answer any questions about here it here on the forums (if I can remember!) and I’m sorry for the lack of comments :(. If anyone makes some progress, please post your github branch here so others can check it out and contribute
Okay so I am not used to using GitHub, so I have uploaded the source code for the plugin to my private fork. You’ll find it under the master branch in “Engine/Plugins/Runtime/FluidSurface/”. Link is https://github.com/Ehamloptiran/UnrealEngine. The plugin contains the following:
CPU Based fluid simulation (Based on the UE2 code originally provided by JamesG) - Up to 255x255 grid, with variable spacing
Particle effects that play when surface receives damage or when overlapped by an actor supporting overlapping
A small Modifier framework (Can create new modifiers based off AFluidSurfaceModifier)
An oscillator modifier
An example rain effect modifier
There is still plenty of work to be done, so this is purely still an alpha test release, use at your own risk. For now you will have to compile your own version (I will provide precompiled binaries later when the plugin is more stable).