def test_motionstate(self): """ Set and get a motion state. """ # Get RigidBody object. body = getRB() # Create a new Transform. pos = Vec3(1, 2, 3.5) rot = Quaternion(0, 1, 0, 0) t = Transform() t.setOrigin(pos) t.setRotation(rot) # It must be impossible to instantiate 'MotionState' directly. with pytest.raises(NotImplementedError): MotionState() # Create a MotionState and apply the new transform. ms_ref = DefaultMotionState() ms_ref.setWorldTransform(t) # Verify the MotionState does not yet match ours. ms = body.getMotionState() assert ms.getWorldTransform().getOrigin() != pos assert ms.getWorldTransform().getRotation() != rot # Apply- and query the MotionState. body.setMotionState(ms_ref) ms = body.getMotionState() # Verify the MotionState is correct. assert ms.getWorldTransform().getOrigin() == pos assert ms.getWorldTransform().getRotation() == rot
def moveBody(rb, pos): trans = Transform() trans.setOrigin(pos) ms = DefaultMotionState() ms.setWorldTransform(trans) rb.setMotionState(ms)