@@ -178,7 +178,7 @@ bool CEqCollisionObject::Initialize( CEqBulletIndexedMesh* mesh, bool internalEd
178178 return true ;
179179}
180180
181- bool CEqCollisionObject::Initialize (const FVector3D & boxMins, const FVector3D & boxMaxs)
181+ bool CEqCollisionObject::Initialize (const Vector3D & boxMins, const Vector3D & boxMaxs)
182182{
183183 using namespace EqBulletUtils ;
184184
@@ -189,7 +189,7 @@ bool CEqCollisionObject::Initialize(const FVector3D& boxMins, const FVector3D& b
189189
190190 ConvertDKToBulletVectors (vecHalfExtents, ext);
191191
192- m_center = (boxMins+ boxMaxs)* 0 .5f ;
192+ m_center = (boxMins + boxMaxs) * 0 .5f ;
193193
194194 btBoxShape* box = new btBoxShape ( vecHalfExtents );
195195 box->initializePolyhedralFeatures ();
@@ -258,6 +258,27 @@ bool CEqCollisionObject::Initialize(float radius, float height)
258258 return true ;
259259}
260260
261+ bool CEqCollisionObject::Initialize (ArrayCRef<Vector3D> points, float margin)
262+ {
263+ ASSERT (!m_shape);
264+
265+ m_numShapes = 1 ;
266+ m_shapeList = nullptr ;
267+
268+ m_shape = new btConvexHullShape (reinterpret_cast <const float *>(points.ptr ()), points.numElem (), sizeof (points[0 ]));
269+ m_shape->setMargin (margin == 0 .0f ? ph_margin.GetFloat () : margin);
270+ m_shapeOwning = OWNS_SHAPE ;
271+
272+ m_collObject = new btCollisionObject ();
273+ m_collObject->setCollisionShape (m_shape);
274+
275+ InitAABB ();
276+
277+ m_collObject->setUserPointer (this );
278+
279+ return true ;
280+ }
281+
261282ArrayCRef<btCollisionShape*> CEqCollisionObject::GetBulletCollisionShapes () const
262283{
263284 return ArrayCRef<btCollisionShape*>(m_numShapes > 1 ? m_shapeList : &m_shape, m_numShapes);
0 commit comments