collisions.py 1011 B

123456789101112131415161718192021222324252627282930
  1. from panda3d.core import CollisionNode, NodePath
  2. from panda3d.core import CollisionTraverser, CollisionHandlerQueue
  3. from panda3d.core import CollisionSphere, CollisionInvSphere, CollisionBox, CollisionPolygon, CollisionCapsule
  4. from panda3d.core import CollisionLine, CollisionRay, CollisionSegment, CollisionParabola
  5. from panda3d.core import CollisionPlane
  6. from panda3d.core import Point3, Vec3, Plane, LParabola
  7. def make_collision(solid_from, solid_into):
  8. node_from = CollisionNode("from")
  9. node_from.add_solid(solid_from)
  10. node_into = CollisionNode("into")
  11. node_into.add_solid(solid_into)
  12. root = NodePath("root")
  13. trav = CollisionTraverser()
  14. queue = CollisionHandlerQueue()
  15. np_from = root.attach_new_node(node_from)
  16. np_into = root.attach_new_node(node_into)
  17. trav.add_collider(np_from, queue)
  18. trav.traverse(root)
  19. entry = None
  20. for e in queue.get_entries():
  21. if e.get_into() == solid_into:
  22. entry = e
  23. return (entry, np_from, np_into)