24 BulletPlaneShape(LPlane plane) {
26 btVector3 btNormal = LVecBase3_to_btVector3(plane.get_normal());
28 _shape =
new btStaticPlaneShape(btNormal, plane.get_w());
29 _shape->setUserPointer(
this);
36 BulletPlaneShape(
const LVector3 &normal, PN_stdfloat constant) {
38 btVector3 btNormal = LVecBase3_to_btVector3(normal);
40 _shape =
new btStaticPlaneShape(btNormal, constant);
41 _shape->setUserPointer(
this);
51 btVector3 btNormal = copy._shape->getPlaneNormal();
52 PN_stdfloat constant = (PN_stdfloat)_shape->getPlaneConstant();
54 _shape =
new btStaticPlaneShape(btNormal, constant);
55 _shape->setUserPointer(
this);
61 btCollisionShape *BulletPlaneShape::
70 LPlane BulletPlaneShape::
74 btVector3 normal = _shape->getPlaneNormal();
75 return LPlane(normal[0], normal[1], normal[2], (PN_stdfloat)_shape->getPlaneConstant());
81 PN_stdfloat BulletPlaneShape::
82 get_plane_constant()
const {
85 return (PN_stdfloat)_shape->getPlaneConstant();
91 LVector3 BulletPlaneShape::
92 get_plane_normal()
const {
95 return btVector3_to_LVector3(_shape->getPlaneNormal());
104 LVector3 normal = solid->get_normal();
105 PN_stdfloat constant = solid->dist_to_plane(LPoint3(0, 0, 0));
127 get_plane_normal().write_datagram(dg);
143 param->fillin(scan, manager);
152 void BulletPlaneShape::
155 nassertv(_shape ==
nullptr);
160 normal.read_datagram(scan);
164 _shape =
new btStaticPlaneShape(LVecBase3_to_btVector3(normal), constant);
165 _shape->setUserPointer(
this);
166 _shape->setMargin(margin);