22 TypeHandle BulletConvexPointCloudShape::_type_handle;
27 BulletConvexPointCloudShape::
28 BulletConvexPointCloudShape(
const PTA_LVecBase3 &points, LVecBase3 scale) :
31 btVector3 btScale = LVecBase3_to_btVector3(scale);
34 btVector3 *btPoints =
new btVector3[points.size()];
37 PTA_LVecBase3::const_iterator it;
38 for (it=points.begin(); it!=points.end(); it++) {
39 btPoints[i] = LVecBase3_to_btVector3(*it);
44 _shape =
new btConvexPointCloudShape(btPoints, points.size(), btScale);
45 _shape->setUserPointer(
this);
51 btCollisionShape *BulletConvexPointCloudShape::
60 BulletConvexPointCloudShape::
61 BulletConvexPointCloudShape(
const Geom *geom, LVecBase3 scale) {
63 btVector3 btScale = LVecBase3_to_btVector3(scale);
77 btVector3 *btPoints =
new btVector3[points.size()];
81 for (it=points.begin(); it!=points.end(); it++) {
82 btPoints[i] = LVecBase3_to_btVector3(*it);
87 _shape =
new btConvexPointCloudShape(btPoints, points.size(), btScale);
88 _shape->setUserPointer(
this);
94 BulletConvexPointCloudShape::
100 btVector3 *btPoints = copy._shape->getUnscaledPoints();
101 int numPoints = copy._shape->getNumPoints();
102 btVector3 btScale = LVecBase3_to_btVector3(_scale);
104 _shape =
new btConvexPointCloudShape(btPoints, numPoints, btScale);
105 _shape->setUserPointer(
this);
111 int BulletConvexPointCloudShape::
112 get_num_points()
const {
115 return _shape->getNumPoints();
135 _scale.write_datagram(dg);
138 for (
int i = 0; i < get_num_points(); ++i){
139 btVector3_to_LVector3(_shape->getUnscaledPoints()[i]).write_datagram(dg);
156 param->fillin(scan, manager);
165 void BulletConvexPointCloudShape::
170 _scale.read_datagram(scan);
174 btVector3 *btPoints =
new btVector3[num_points];
175 for (
unsigned int i = 0; i < num_points; ++i) {
177 point.read_datagram(scan);
178 btPoints[i] = LVecBase3_to_btVector3(point);
182 _shape =
new btConvexPointCloudShape(btPoints, num_points, LVecBase3_to_btVector3(_scale));
183 _shape->setUserPointer(
this);