1 # from panda3d.bullet import \
2 # BulletWorld as BWorld, \
3 # BulletDebugNode as BDebugNode, \
4 # BulletTriangleMesh as BTriangleMesh, \
5 # BulletTriangleMeshShape as BTriangleMeshShape, \
6 # BulletRigidBodyNode as BRigidBodyNode, \
7 # BulletGhostNode as BGhostNode
10 # class BulletPhysWorld:
13 # self._wld = BWorld()
14 # self.__debug_np = None
16 # def attach_rigid_body(self, rbnode):
17 # return self._wld.attach_rigid_body(rbnode)
19 # def remove_rigid_body(self, rbnode):
20 # return self._wld.remove_rigid_body(rbnode)
22 # def attach_ghost(self, gnode): return self._wld.attach_ghost(gnode)
23 # def remove_ghost(self, gnode): return self._wld.remove_ghost(gnode)
24 # def attach_vehicle(self, vehicle): return self._wld.attach_vehicle(vehicle)
25 # def remove_vehicle(self, vehicle): return self._wld.remove_vehicle(vehicle)
27 # def ray_test_closest(self, from_pos, to_pos, mask=None):
28 # if mask is not None:
29 # res = self._wld.ray_test_closest(from_pos, to_pos, mask)
30 # else: res = self._wld.ray_test_closest(from_pos, to_pos)
33 # def do_phys(self, dt, max_substeps, stepsize):
34 # return self._wld.do_physics(dt, max_substeps, stepsize)
36 # def set_gravity(self, vec): return self._wld.set_gravity(vec)
38 # def init_debug(self):
39 # debug_node = BDebugNode('Debug')
40 # debug_node.show_bounding_boxes(True)
41 # self.__debug_np = render.attach_new_node(debug_node)
42 # self._wld.set_debug_node(self.__debug_np.node())
44 # def stop(self): self.__debug_np.remove_node()
46 # def ray_test_all(self, pt_a, pt_b, mask=None):
47 # args = [pt_a._vec, pt_b._vec, mask] if mask else [pt_a._vec, pt_b._vec]
48 # #TODO: access to protected member
49 # return self._wld.ray_test_all(*args)
51 # def toggle_dbg(self):
52 # hidden = self.__debug_np.is_hidden()
53 # (self.__debug_np.show if hidden else self.__debug_np.hide)()
56 # class BulletTriangleMesh:
59 # self._mesh = BTriangleMesh()
61 # def add_geom(self, geom, rm_dupl, xform):
62 # return self._mesh.add_geom(geom, rm_dupl, xform)
65 # class BulletTriangleMeshShape:
67 # def __init__(self, mesh, dynamic):
68 # self._mesh_shape = BTriangleMeshShape(mesh._mesh, dynamic=dynamic)
69 # #TODO: access to protected member
72 # class BulletRigidBodyNode:
74 # def __init__(self, name): self._node = BRigidBodyNode(name)
77 # class BulletGhostNode:
79 # def __init__(self, name): self._node = BGhostNode(name)