test_collision_traverser.py 1.0 KB

12345678910111213141516171819202122232425262728293031
  1. from panda3d.core import CollisionTraverser, CollisionHandlerQueue
  2. from panda3d.core import NodePath, CollisionNode
  3. def test_collision_traverser_pickle():
  4. from direct.stdpy.pickle import dumps, loads
  5. handler = CollisionHandlerQueue()
  6. collider1 = NodePath(CollisionNode("collider1"))
  7. collider2 = NodePath(CollisionNode("collider2"))
  8. trav = CollisionTraverser("test123")
  9. trav.respect_prev_transform = True
  10. trav.add_collider(collider1, handler)
  11. trav.add_collider(collider2, handler)
  12. trav = loads(dumps(trav, -1))
  13. assert trav.respect_prev_transform is True
  14. assert trav.name == "test123"
  15. assert trav.get_num_colliders() == 2
  16. collider1 = trav.get_collider(0)
  17. collider2 = trav.get_collider(1)
  18. assert collider1.name == "collider1"
  19. assert collider2.name == "collider2"
  20. # Two colliders must still be the same object; this only works with our own
  21. # version of the pickle module, in direct.stdpy.pickle.
  22. assert trav.get_handler(collider1) == trav.get_handler(collider2)