Using objects of several classes to represent the same thing in several contexts is not bad in itself. In fact, it would probably be worse if you used the same object in all these contexts - for example, through some creative use of multiple inheritance.
Your QEntity class QEntity already disabled for you - while you program its interface and do not allow PhysX specific classes to stick out of the QEntity * interface, you are good.
It looks like your project introduces coupling in the "bridge" classes, which is exactly where it belongs. As long as you keep it there, your design will not have communication problems.
As for the 60 FPS, don't worry too much about this during the design phase. As long as there are no long chains of responsibility based on virtual functions, your compiler should be able to do a good job optimizing it for you.
* for example, QEntity should not accept parameters or return objects specific to PhysX , except for the constructor that creates the "wrapper".
source share