MCPcopy Create free account
hub / github.com/DanielChappuis/reactphysics3d / swapComponents

Method swapComponents

src/components/HingeJointComponents.cpp:328–415  ·  view source on GitHub ↗

Swap two components in the array

Source from the content-addressed store, hash-verified

326
327// Swap two components in the array
328void HingeJointComponents::swapComponents(uint32 index1, uint32 index2) {
329
330 // Copy component 1 data
331 Entity jointEntity1(mJointEntities[index1]);
332 HingeJoint* joint1 = mJoints[index1];
333 Vector3 localAnchorPointBody1(mLocalAnchorPointBody1[index1]);
334 Vector3 localAnchorPointBody2(mLocalAnchorPointBody2[index1]);
335 Vector3 r1World1(mR1World[index1]);
336 Vector3 r2World1(mR2World[index1]);
337 Matrix3x3 i11(mI1[index1]);
338 Matrix3x3 i21(mI2[index1]);
339 Vector3 impulseTranslation1(mImpulseTranslation[index1]);
340 Vector2 impulseRotation1(mImpulseRotation[index1]);
341 Matrix3x3 inverseMassMatrixTranslation1(mInverseMassMatrixTranslation[index1]);
342 Matrix2x2 inverseMassMatrixRotation1(mInverseMassMatrixRotation[index1]);
343 Vector3 biasTranslation1(mBiasTranslation[index1]);
344 Vector2 biasRotation1(mBiasRotation[index1]);
345 Quaternion initOrientationDifferenceInv1(mInitOrientationDifferenceInv[index1]);
346 Vector3 hingeLocalAxisBody1(mHingeLocalAxisBody1[index1]);
347 Vector3 hingeLocalAxisBody2(mHingeLocalAxisBody2[index1]);
348 Vector3 a1(mA1[index1]);
349 Vector3 b2CrossA1(mB2CrossA1[index1]);
350 Vector3 c2CrossA1(mC2CrossA1[index1]);
351 decimal impulseLowerLimit(mImpulseLowerLimit[index1]);
352 decimal impulseUpperLimit(mImpulseUpperLimit[index1]);
353 decimal impulseMotor(mImpulseMotor[index1]);
354 decimal inverseMassMatrixLimitMotor(mInverseMassMatrixLimitMotor[index1]);
355 decimal inverseMassMatrixMotor(mInverseMassMatrixMotor[index1]);
356 decimal bLowerLimit(mBLowerLimit[index1]);
357 decimal bUpperLimit(mUpperLimit[index1]);
358 bool isLimitEnabled(mIsLimitEnabled[index1]);
359 bool isMotorEnabled(mIsMotorEnabled[index1]);
360 decimal lowerLimit(mLowerLimit[index1]);
361 decimal upperLimit(mUpperLimit[index1]);
362 bool isLowerLimitViolated(mIsLowerLimitViolated[index1]);
363 bool isUpperLimitViolated(mIsUpperLimitViolated[index1]);
364 decimal motorSpeed(mMotorSpeed[index1]);
365 decimal maxMotorTorque(mMaxMotorTorque[index1]);
366
367 // Destroy component 1
368 destroyComponent(index1);
369
370 moveComponentToIndex(index2, index1);
371
372 // Reconstruct component 1 at component 2 location
373 new (mJointEntities + index2) Entity(jointEntity1);
374 mJoints[index2] = joint1;
375 new (mLocalAnchorPointBody1 + index2) Vector3(localAnchorPointBody1);
376 new (mLocalAnchorPointBody2 + index2) Vector3(localAnchorPointBody2);
377 new (mR1World + index2) Vector3(r1World1);
378 new (mR2World + index2) Vector3(r2World1);
379 new (mI1 + index2) Matrix3x3(i11);
380 new (mI2 + index2) Matrix3x3(i21);
381 new (mImpulseTranslation + index2) Vector3(impulseTranslation1);
382 new (mImpulseRotation + index2) Vector2(impulseRotation1);
383 new (mInverseMassMatrixTranslation + index2) Matrix3x3(inverseMassMatrixTranslation1);
384 new (mInverseMassMatrixRotation + index2) Matrix2x2(inverseMassMatrixRotation1);
385 new (mBiasTranslation + index2) Vector3(biasTranslation1);

Callers

nothing calls this directly

Calls 2

addMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected