diff --git a/trunk/fcl/include/fcl/collision_object.h b/trunk/fcl/include/fcl/collision_object.h index 77f603bd52c0ed4d35d9ac038a6989d54014fffb..e8a6ee9b8a52ea904d1022ca8e58b753c7cf8929 100644 --- a/trunk/fcl/include/fcl/collision_object.h +++ b/trunk/fcl/include/fcl/collision_object.h @@ -84,24 +84,17 @@ public: class CollisionObject { public: - CollisionObject(CollisionGeometry* cgeom_) + CollisionObject(const boost::shared_ptr<CollisionGeometry> &cgeom_) : cgeom(cgeom_) { - cgeom.reset(cgeom_); - computeAABB(); } - CollisionObject(CollisionGeometry* cgeom_, const SimpleTransform& tf) + CollisionObject(const boost::shared_ptr<CollisionGeometry> &cgeom_, const SimpleTransform& tf) : cgeom(cgeom_), t(tf) { - cgeom.reset(cgeom_); - t = tf; - computeAABB(); } - CollisionObject(CollisionGeometry* cgeom_, const Matrix3f& R, const Vec3f& T) + CollisionObject(const boost::shared_ptr<CollisionGeometry> &cgeom_, const Matrix3f& R, const Vec3f& T): + cgeom(cgeom_), t(SimpleTransform(R, T)) { - cgeom.reset(cgeom_); - t = SimpleTransform(R, T); - computeAABB(); } CollisionObject() diff --git a/trunk/fcl/test/test_core_broad_phase.cpp b/trunk/fcl/test/test_core_broad_phase.cpp index 63d33f7c3a7acf65b4178f1b76a658f1ad24d135..ae196f990743d4d772f28c760363bea73d90243e 100644 --- a/trunk/fcl/test/test_core_broad_phase.cpp +++ b/trunk/fcl/test/test_core_broad_phase.cpp @@ -222,7 +222,7 @@ void generateEnvironments(std::vector<CollisionObject*>& env, int n) BVHModel<OBB>* model = new BVHModel<OBB>(); box.setLocalTransform(transforms[i].R, transforms[i].T); generateBVHModel(*model, box, SimpleTransform()); - env.push_back(new CollisionObject(model)); + env.push_back(new CollisionObject(boost::shared_ptr<CollisionGeometry>(model))); } generateRandomTransform(extents, transforms, transforms2, delta_trans, 0.005 * 2 * 3.1415, n); @@ -232,7 +232,7 @@ void generateEnvironments(std::vector<CollisionObject*>& env, int n) BVHModel<OBB>* model = new BVHModel<OBB>(); sphere.setLocalTransform(transforms[i].R, transforms[i].T); generateBVHModel(*model, sphere, SimpleTransform()); - env.push_back(new CollisionObject(model)); + env.push_back(new CollisionObject(boost::shared_ptr<CollisionGeometry>(model))); } generateRandomTransform(extents, transforms, transforms2, delta_trans, 0.005 * 2 * 3.1415, n); @@ -242,6 +242,6 @@ void generateEnvironments(std::vector<CollisionObject*>& env, int n) BVHModel<OBB>* model = new BVHModel<OBB>(); cylinder.setLocalTransform(transforms[i].R, transforms[i].T); generateBVHModel(*model, cylinder, SimpleTransform()); - env.push_back(new CollisionObject(model)); + env.push_back(new CollisionObject(boost::shared_ptr<CollisionGeometry>(model))); } }