The print statement prints the correct value, however the ship does not move. The ship does move when I manually set currentThrust in the process function.
Well, first let me mention that our Bullet integration is not (yet?) client/server capable. The Bullet nodes do not implement any serialisation stuff, so only the PandaNode part would be serialized. I would have expected random crashes if you try to transfer nodes between client and server.
Second, please ensure that you are really applying the exactly same argument as force.
Also try using Vec3(x,y,z) and not let the Python wrapper auto-convert tuples:
but is_active() returns false after about 800-900 frames. I’ve confirmed that I really am applying the exact argument as force.
Edit: It sounds like bullet will put object to sleep if they are inactive for a small time. I just added a simple check to manually node.setActive(True) if it returns false.
Ok, so the node has been put to sleep. Applying a force won’t wake it up. You can call setActive(True), like you already mentioned. But if you have to wake up this particular node each frame then you should disable deactivation for this node completely:
np.node().setDeactivationEnabled(False)
Putting objects to sleep (de-activate them) is a feature found in most physics engines. There are two goal aimed for with sleeping:
save some CPU time
avoiding jitter if e.g. an object rests on some other object.
So disabling sleeping for all objects is not recommended. Only disable it for those objects which get manipulated each frame anyway.