2
0

test_collision_handlers.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. from direct.stdpy.pickle import dumps, loads
  2. from panda3d.core import NodePath, CollisionNode
  3. def test_collision_handler_event_pickle():
  4. from panda3d.core import CollisionHandlerEvent
  5. handler = CollisionHandlerEvent()
  6. handler.add_in_pattern("abcdefg")
  7. handler.add_in_pattern("test")
  8. handler.add_again_pattern("again pattern")
  9. handler.add_again_pattern("another again pattern")
  10. handler.add_out_pattern("out pattern")
  11. handler = loads(dumps(handler, -1))
  12. assert tuple(handler.in_patterns) == ("abcdefg", "test")
  13. assert tuple(handler.again_patterns) == ("again pattern", "another again pattern")
  14. assert tuple(handler.out_patterns) == ("out pattern",)
  15. def test_collision_handler_queue_pickle():
  16. from panda3d.core import CollisionHandlerQueue
  17. handler = CollisionHandlerQueue()
  18. handler = loads(dumps(handler, -1))
  19. assert type(handler) == CollisionHandlerQueue
  20. def test_collision_handler_floor_pickle():
  21. from panda3d.core import CollisionHandlerFloor
  22. collider1 = NodePath(CollisionNode("collider1"))
  23. collider2 = NodePath(CollisionNode("collider2"))
  24. target1 = NodePath("target1")
  25. target2 = NodePath("target2")
  26. center = NodePath("center")
  27. handler = CollisionHandlerFloor()
  28. handler.add_out_pattern("out pattern")
  29. handler.add_collider(collider1, target1)
  30. handler.add_collider(collider2, target2)
  31. handler.center = center
  32. handler.offset = 1.0
  33. handler.reach = 2.0
  34. handler.max_velocity = 3.0
  35. handler = loads(dumps(handler, -1))
  36. assert tuple(handler.in_patterns) == ()
  37. assert tuple(handler.again_patterns) == ()
  38. assert tuple(handler.out_patterns) == ("out pattern",)
  39. assert handler.center.name == "center"
  40. assert handler.offset == 1.0
  41. assert handler.reach == 2.0
  42. assert handler.max_velocity == 3.0
  43. def test_collision_handler_gravity_pickle():
  44. from panda3d.core import CollisionHandlerGravity
  45. collider1 = NodePath(CollisionNode("collider1"))
  46. collider2 = NodePath(CollisionNode("collider2"))
  47. target1 = NodePath("target1")
  48. target2 = NodePath("target2")
  49. handler = CollisionHandlerGravity()
  50. handler.add_out_pattern("out pattern")
  51. handler.add_collider(collider1, target1)
  52. handler.add_collider(collider2, target2)
  53. handler.offset = 1.0
  54. handler.reach = 2.0
  55. handler.max_velocity = 3.0
  56. handler.gravity = -4.0
  57. handler = loads(dumps(handler, -1))
  58. assert tuple(handler.in_patterns) == ()
  59. assert tuple(handler.again_patterns) == ()
  60. assert tuple(handler.out_patterns) == ("out pattern",)
  61. assert handler.center == None
  62. assert handler.offset == 1.0
  63. assert handler.reach == 2.0
  64. assert handler.max_velocity == 3.0
  65. assert handler.gravity == -4.0
  66. def test_collision_handler_pusher_pickle():
  67. from panda3d.core import CollisionHandlerPusher
  68. collider1 = NodePath(CollisionNode("collider1"))
  69. collider2 = NodePath(CollisionNode("collider2"))
  70. target1 = NodePath("target1")
  71. target2 = NodePath("target2")
  72. handler = CollisionHandlerPusher()
  73. handler.add_again_pattern("again pattern")
  74. handler.add_collider(collider1, target1)
  75. handler.add_collider(collider2, target2)
  76. handler.horizontal = True
  77. handler = loads(dumps(handler, -1))
  78. assert tuple(handler.in_patterns) == ()
  79. assert tuple(handler.again_patterns) == ("again pattern",)
  80. assert tuple(handler.out_patterns) == ()
  81. assert not handler.has_center()
  82. assert handler.horizontal