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

Method swapComponents

src/components/SliderJointComponents.cpp:360–457  ·  view source on GitHub ↗

Swap two components in the array

Source from the content-addressed store, hash-verified

358
359// Swap two components in the array
360void SliderJointComponents::swapComponents(uint32 index1, uint32 index2) {
361
362 // Copy component 1 data
363 Entity jointEntity1(mJointEntities[index1]);
364 SliderJoint* joint1 = mJoints[index1];
365 Vector3 localAnchorPointBody1(mLocalAnchorPointBody1[index1]);
366 Vector3 localAnchorPointBody2(mLocalAnchorPointBody2[index1]);
367 Matrix3x3 i11(mI1[index1]);
368 Matrix3x3 i21(mI2[index1]);
369 Vector2 impulseTranslation1(mImpulseTranslation[index1]);
370 Vector3 impulseRotation1(mImpulseRotation[index1]);
371 Matrix2x2 inverseMassMatrixTranslation1(mInverseMassMatrixTranslation[index1]);
372 Matrix3x3 inverseMassMatrixRotation1(mInverseMassMatrixRotation[index1]);
373 Vector2 biasTranslation1(mBiasTranslation[index1]);
374 Vector3 biasRotation1(mBiasRotation[index1]);
375 Quaternion initOrientationDifferenceInv1(mInitOrientationDifferenceInv[index1]);
376 Vector3 sliderAxisBody1(mSliderAxisBody1[index1]);
377 Vector3 sliderAxisWorld(mSliderAxisWorld[index1]);
378 Vector3 r1(mR1[index1]);
379 Vector3 r2(mR2[index1]);
380 Vector3 n1(mN1[index1]);
381 Vector3 n2(mN2[index1]);
382 decimal impulseLowerLimit(mImpulseLowerLimit[index1]);
383 decimal impulseUpperLimit(mImpulseUpperLimit[index1]);
384 decimal impulseMotor(mImpulseMotor[index1]);
385 decimal inverseMassMatrixLimit(mInverseMassMatrixLimit[index1]);
386 decimal inverseMassMatrixMotor(mInverseMassMatrixMotor[index1]);
387 decimal bLowerLimit(mBLowerLimit[index1]);
388 decimal bUpperLimit(mUpperLimit[index1]);
389 bool isLimitEnabled(mIsLimitEnabled[index1]);
390 bool isMotorEnabled(mIsMotorEnabled[index1]);
391 decimal lowerLimit(mLowerLimit[index1]);
392 decimal upperLimit(mUpperLimit[index1]);
393 bool isLowerLimitViolated(mIsLowerLimitViolated[index1]);
394 bool isUpperLimitViolated(mIsUpperLimitViolated[index1]);
395 decimal motorSpeed(mMotorSpeed[index1]);
396 decimal maxMotorForce(mMaxMotorForce[index1]);
397 Vector3 r2CrossN1(mR2CrossN1[index1]);
398 Vector3 r2CrossN2(mR2CrossN2[index1]);
399 Vector3 r2CrossSliderAxis(mR2CrossSliderAxis[index1]);
400 Vector3 r1PlusUCrossN1(mR1PlusUCrossN1[index1]);
401 Vector3 r1PlusUCrossN2(mR1PlusUCrossN2[index1]);
402 Vector3 r1PlusUCrossSliderAxis(mR1PlusUCrossSliderAxis[index1]);
403
404 // Destroy component 1
405 destroyComponent(index1);
406
407 moveComponentToIndex(index2, index1);
408
409 // Reconstruct component 1 at component 2 location
410 new (mJointEntities + index2) Entity(jointEntity1);
411 mJoints[index2] = joint1;
412 new (mLocalAnchorPointBody1 + index2) Vector3(localAnchorPointBody1);
413 new (mLocalAnchorPointBody2 + index2) Vector3(localAnchorPointBody2);
414 new (mI1 + index2) Matrix3x3(i11);
415 new (mI2 + index2) Matrix3x3(i21);
416 new (mImpulseTranslation + index2) Vector2(impulseTranslation1);
417 new (mImpulseRotation + index2) Vector3(impulseRotation1);

Callers

nothing calls this directly

Calls 2

addMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected