- Renamed PoolVehicle to IPoolVehicle.
- Made the submarines an IPoolVehicle.
- Removed the wake on trigger enter, IPoolVehicle already covers it.
- Made BaseBoat an IPoolVehicle as well, and removed it from Kayak (it's a BaseBoat subclass).
Detail collider trigger detection caused too many issues. Go back to the old way, and just add a small Vehicle World collider on the sub's client side just for detecting water volume triggers. Subs now float reliably in swimming pools.
Use Vehicle Detailed instead of Vehicle World in the swimming pool and paddling pool layer masks for the water volumes. Fixes submarines returning different water level results between client and server when used in a pool.
Some more submarine FX hook-up work. Also now handling the situation where if you Play() a particle system, then Stop() it, then Play() it again, new particles won't play until all the particles from the previous playing state have run out. Continue playing the particles and start/stop just the emitters.
Now only running the entity OnDestroy assert on the server as at the moment on client, a bunch of these come up when first connecting to a procedural map (although that's probably an issue in itself). Note that this assert is editor-only as well.
It seems that a mountable type somewhere on procedural isn't being destroyed in the proper way. There was already an assert in BaseNetworkable to detect this, but it was commented out. Fixed the reason it was commented out (spam on editor playmode exit) and reinstated it. This has been commented out for over five years so who knows what it might show up.