[OPEN-SOURCE] Machinery Modelling Toolkit

Update: Performance optimization

Moved track animation component into c++ and refactored some of the BP code. Speed up is about 3 times according to profiler. Now we roll down the hill about 24 LightTankCpp vs 8 LightTank for the same amount of GameThread cost. There is no rendering optimization as there are no LODs for geometry or animation of tracks, so this can be improved too.
Unfortunately we can’t really spawn all 24 tanks on the same machine with the decent FPS. They take about 50ms to process and large portion comes from syncing physx bodies to render meshes. Which is understandable as each LightTank has a lot of components in it. Tanks with simpler suspension, like M113 or Tiger, should have much better performance.

But regardless, I have couple more ideas on how to get better performance and tidy up code. For example, it makes a lot of sense to merge Sprocket/Idler/Roadwheel collision components with friction. The other components that need to be ported to c++ are drive train parts, they have plenty of simple math that need to be run on sub-steps or ticks, so this will impact BP’s performance too much.
The other part that makes sense to spend effort on is removing communication between components from BPs. I’ll see how it can be done. Simplest is to build everything as a single component similar to VehicleComponent in UE4, but this will severely effect flexibility of what we can build and I would prefer to have this system more like lego, where you can combine different parts and it will just work.