In my current game, doors each have an armature with a “hinge”-joint, which is exposed during initialisation. The door’s collider is attached to this joint. Thus, when the door’s open- and close- animations are played, the joint moves with the animation, and the collider moves with the joint.
As far as described above, this seems to work well. The problem comes when I want to pose the door, as after loading a saved game. In this case, the door seems to be posed as expected, but the joint doesn’t seem to be. As a result, the door’s collider is left in its default position, whether the door is open or not.
There is a minor complication in that I’m using a custom sub-class of Actor (specifically, it’s designed to automatically blend between animations via “setControlEffect”). However, since the visual posing seems to be happening as expected, I’m inclined to doubt that the problem lies there.
I’m using Panda 1.10 (home-built), under Ubuntu 16.04 (“Xenial”), I believe.
Could you create a simplified test program to reproduce this behaviour using one of the default models? If so, could you file an issue on GitHub?
Ah, it seems that I was mistaken! The problem was, in fact, on my side, rather than an issue in Panda. ^^;
I put together a simple test-program, as you requested–and it worked just as expected. The joint updated its rotation, and all seemed well.
Uncertain, I returned to my game, and the code that handles doors (so to speak ). I’m not sure of quite how I ended up with the joint’s rotation seeming unchanged–I presume that I made some mistake in where or how I added the test-output. But more to the point, I remembered that actors don’t update immediately after being told to do so, unless forced otherwise. And indeed, calling “Actor.update(force = True)” before I mark the collider as “dirty” seems to solve the problem! (I imagine that marking the collider as “dirty” at a later stage would also work.)
In short, I believe that I have the issue fixed!
Sorry for the trouble! ^^;