Skip to content
Snippets Groups Projects
Commit 255fd533 authored by isucan's avatar isucan
Browse files

the collision object should not enforce ownership of the geometry (this way...

the collision object should not enforce ownership of the geometry (this way every object would require creating a new geometry instance for every object instance) 

git-svn-id: https://kforge.ros.org/fcl/fcl_ros@58 253336fb-580f-4252-a368-f3cef5a2a82b
parent 9b2e6c6d
No related branches found
No related tags found
No related merge requests found
...@@ -84,24 +84,17 @@ public: ...@@ -84,24 +84,17 @@ public:
class CollisionObject class CollisionObject
{ {
public: 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() CollisionObject()
......
...@@ -222,7 +222,7 @@ void generateEnvironments(std::vector<CollisionObject*>& env, int n) ...@@ -222,7 +222,7 @@ void generateEnvironments(std::vector<CollisionObject*>& env, int n)
BVHModel<OBB>* model = new BVHModel<OBB>(); BVHModel<OBB>* model = new BVHModel<OBB>();
box.setLocalTransform(transforms[i].R, transforms[i].T); box.setLocalTransform(transforms[i].R, transforms[i].T);
generateBVHModel(*model, box, SimpleTransform()); 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); generateRandomTransform(extents, transforms, transforms2, delta_trans, 0.005 * 2 * 3.1415, n);
...@@ -232,7 +232,7 @@ void generateEnvironments(std::vector<CollisionObject*>& env, int n) ...@@ -232,7 +232,7 @@ void generateEnvironments(std::vector<CollisionObject*>& env, int n)
BVHModel<OBB>* model = new BVHModel<OBB>(); BVHModel<OBB>* model = new BVHModel<OBB>();
sphere.setLocalTransform(transforms[i].R, transforms[i].T); sphere.setLocalTransform(transforms[i].R, transforms[i].T);
generateBVHModel(*model, sphere, SimpleTransform()); 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); generateRandomTransform(extents, transforms, transforms2, delta_trans, 0.005 * 2 * 3.1415, n);
...@@ -242,6 +242,6 @@ void generateEnvironments(std::vector<CollisionObject*>& env, int n) ...@@ -242,6 +242,6 @@ void generateEnvironments(std::vector<CollisionObject*>& env, int n)
BVHModel<OBB>* model = new BVHModel<OBB>(); BVHModel<OBB>* model = new BVHModel<OBB>();
cylinder.setLocalTransform(transforms[i].R, transforms[i].T); cylinder.setLocalTransform(transforms[i].R, transforms[i].T);
generateBVHModel(*model, cylinder, SimpleTransform()); generateBVHModel(*model, cylinder, SimpleTransform());
env.push_back(new CollisionObject(model)); env.push_back(new CollisionObject(boost::shared_ptr<CollisionGeometry>(model)));
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment