body rotation reset when changing position
turowskipaul opened this issue · comments
turowskipaul commented
I don't understand why setPosition resets a body's rotation. (In ofxBox2dBaseShape, setPosition calls setTransform with an angle of 0.) Is there a reason for this?
For example, in the following code:
ofLogNotice() << "freezer->getRotation(): " << freezer->getRotation();
float tempPosX = (float)freezer->getPosition().x + (posXDiff * freezerPosLerp);
float tempPosY = (float)freezer->getPosition().y + (posYDiff * freezerPosLerp);
freezer->setPosition(tempPosX, tempPosY);
ofLogNotice() << "freezer->getRotation(): " << freezer->getRotation();
I get the following output in the console:
[notice ] freezer->getRotation(): 118.134
[notice ] freezer->getRotation(): 0
To preserve rotation, I have to do this instead:
ofLogNotice() << "freezer->getRotation(): " << freezer->getRotation();
float tempRot = freezer->getRotation();
float tempPosX = (float)freezer->getPosition().x + (posXDiff * freezerPosLerp);
float tempPosY = (float)freezer->getPosition().y + (posYDiff * freezerPosLerp);
freezer->setPosition(tempPosX, tempPosY);
freezer->setRotation(tempRot);
ofLogNotice() << "freezer->getRotation(): " << freezer->getRotation();
Vanderlin commented
this has been fixed with the latest update.