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 test_transform(self): """ Test the Transform class. """ pos = Vec3(1, 2, 3.5) rot = Quaternion(0, 1, 0, 0) t = Transform(rot, pos) assert t.getOrigin() == pos assert t.getRotation() == rot # Set to identity. t.setIdentity() assert t.getOrigin() == Vec3(0, 0, 0) assert t.getRotation() == Quaternion(0, 0, 0, 1) # Set the position and rotation. pos = Vec3(1, 2, 3.5) rot = Quaternion(0, 1, 0, 0) t.setOrigin(pos) t.setRotation(rot) assert t.getOrigin() == pos assert t.getRotation() == rot # Repeat with different values. pos = Vec3(-1, 2.5, 3.5) rot = Quaternion(0, 0, 0, 1) t.setOrigin(pos) t.setRotation(rot) assert t.getOrigin() == pos assert t.getRotation() == rot
def test_centerOfMassTransform(self): """ Get/set the centerOfMassTransform. """ # Get RigidBody object. body = getRB() # Create a new Transform. pos = Vec3(1, 2, 3.5) rot = Quaternion(0, 1, 0, 0) t1 = Transform() t1.setOrigin(pos) t1.setRotation(rot) # Apply the Transform to the body. body.setCenterOfMassTransform(t1) t2 = body.getCenterOfMassTransform() # Verify the result. assert t1.getOrigin() == t2.getOrigin() assert t1.getRotation() == t2.getRotation()