dgHingeConstraint* dgWorld::CreateHingeConstraint ( const dgVector& pivot, const dgVector& pinDir, dgBody* const body0, dgBody* const body1) { dgAssert (body0); dgAssert (body0 != body1); dgHingeConstraint* const constraint = new (m_allocator) dgHingeConstraint; AttachConstraint (constraint, body0, body1); constraint->SetPivotAndPinDir (pivot, pinDir, constraint->m_localMatrix0, constraint->m_localMatrix1); return constraint; }
dgBallConstraint* dgWorld::CreateBallConstraint ( const dgVector& pivot, dgBody* const body0, dgBody* const body1) { dgAssert (body0); dgAssert (body0 != body1); dgBallConstraint* const constraint = new (m_allocator) dgBallConstraint; AttachConstraint (constraint, body0, body1); constraint->SetPivotPoint (pivot); return constraint; }
dgCorkscrewConstraint* dgWorld::CreateCorkscrewConstraint ( const dgVector& pivot, const dgVector& pinDir, dgBody* const body0, dgBody* const body1) { dgAssert (body0); dgAssert (body0 != body1); dgCorkscrewConstraint* const constraint = new (m_allocator) dgCorkscrewConstraint; AttachConstraint (constraint, body0, body1); constraint->SetPivotAndPinDir (pivot, pinDir); return constraint; }
dgUniversalConstraint* dgWorld::CreateUniversalConstraint ( const dgVector& pivot, const dgVector& pin0, const dgVector& pin1, dgBody* const body0, dgBody* const body1) { dgAssert (body0); dgAssert (body0 != body1); dgUniversalConstraint* const constraint = new (m_allocator) dgUniversalConstraint; AttachConstraint (constraint, body0, body1); constraint->SetPivotAndPinDir(pivot, pin0, pin1); return constraint; }
dgBallConstraint* dgWorld::CreateBallConstraint ( const dgVector& pivot, dgBody* const body0, dgBody* const body1) { dgBallConstraint *constraint; _ASSERTE (body0); _ASSERTE (body0 != body1); // constraint = dgBallConstraint::Create(this); constraint = new (m_allocator) dgBallConstraint; AttachConstraint (constraint, body0, body1); constraint->SetPivotPoint (pivot); return constraint; }
dgSlidingConstraint* dgWorld::CreateSlidingConstraint ( const dgVector& pivot, const dgVector& pinDir, dgBody* const body0, dgBody* const body1) { dgSlidingConstraint *constraint; _ASSERTE (body0); _ASSERTE (body0 != body1); // constraint = dgSlidingConstraint::Create(this); constraint = new (m_allocator) dgSlidingConstraint; AttachConstraint (constraint, body0, body1); constraint->SetPivotAndPinDir (pivot, pinDir); return constraint; }