Nice demo! It runs really slow on my computer when an object is overlapping the surface of the water though. But on a faster computer I bet it's fine.
Anyway, I just wanted to mention also that you don't need to make a loop for each event. You can place all of your box floating and displacement code into one loop like so:
This still works just fine. You could make a second loop for the circle the same way, and have just two loops instead of the ten loops you have now.