mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-21 11:23:51 +00:00
Fixed rotations more than 360 degrees
This commit is contained in:
parent
7cd4dd0c91
commit
240217ae42
1 changed files with 32 additions and 0 deletions
|
@ -818,6 +818,22 @@ namespace MWWorld
|
||||||
objRot[1] = rot.y;
|
objRot[1] = rot.y;
|
||||||
objRot[2] = rot.z;
|
objRot[2] = rot.z;
|
||||||
|
|
||||||
|
float fullRotateRad=Ogre::Degree(360).valueRadians();
|
||||||
|
|
||||||
|
while(objRot[0]>=fullRotateRad)
|
||||||
|
objRot[0] -= fullRotateRad;
|
||||||
|
while(objRot[1]>=fullRotateRad)
|
||||||
|
objRot[1] -= fullRotateRad;
|
||||||
|
while(objRot[2]>=fullRotateRad)
|
||||||
|
objRot[2] -= fullRotateRad;
|
||||||
|
|
||||||
|
while(objRot[0]<=-fullRotateRad)
|
||||||
|
objRot[0] += fullRotateRad;
|
||||||
|
while(objRot[1]<=-fullRotateRad)
|
||||||
|
objRot[1] += fullRotateRad;
|
||||||
|
while(objRot[2]<=-fullRotateRad)
|
||||||
|
objRot[2] += fullRotateRad;
|
||||||
|
|
||||||
if (ptr.getRefData().getBaseNode() != 0) {
|
if (ptr.getRefData().getBaseNode() != 0) {
|
||||||
mPhysics->rotateObject(ptr);
|
mPhysics->rotateObject(ptr);
|
||||||
}
|
}
|
||||||
|
@ -832,6 +848,22 @@ namespace MWWorld
|
||||||
ptr.getRefData().getLocalRotation().rot[1]=Ogre::Degree(y).valueRadians();
|
ptr.getRefData().getLocalRotation().rot[1]=Ogre::Degree(y).valueRadians();
|
||||||
ptr.getRefData().getLocalRotation().rot[2]=Ogre::Degree(z).valueRadians();
|
ptr.getRefData().getLocalRotation().rot[2]=Ogre::Degree(z).valueRadians();
|
||||||
|
|
||||||
|
float fullRotateRad=Ogre::Degree(360).valueRadians();
|
||||||
|
|
||||||
|
while(ptr.getRefData().getLocalRotation().rot[0]>=fullRotateRad)
|
||||||
|
ptr.getRefData().getLocalRotation().rot[0]-=fullRotateRad;
|
||||||
|
while(ptr.getRefData().getLocalRotation().rot[1]>=fullRotateRad)
|
||||||
|
ptr.getRefData().getLocalRotation().rot[1]-=fullRotateRad;
|
||||||
|
while(ptr.getRefData().getLocalRotation().rot[2]>=fullRotateRad)
|
||||||
|
ptr.getRefData().getLocalRotation().rot[2]-=fullRotateRad;
|
||||||
|
|
||||||
|
while(ptr.getRefData().getLocalRotation().rot[0]<=-fullRotateRad)
|
||||||
|
ptr.getRefData().getLocalRotation().rot[0]+=fullRotateRad;
|
||||||
|
while(ptr.getRefData().getLocalRotation().rot[1]<=-fullRotateRad)
|
||||||
|
ptr.getRefData().getLocalRotation().rot[1]+=fullRotateRad;
|
||||||
|
while(ptr.getRefData().getLocalRotation().rot[2]<=-fullRotateRad)
|
||||||
|
ptr.getRefData().getLocalRotation().rot[2]+=fullRotateRad;
|
||||||
|
|
||||||
float *worldRot = ptr.getRefData().getPosition().rot;
|
float *worldRot = ptr.getRefData().getPosition().rot;
|
||||||
|
|
||||||
Ogre::Quaternion worldRotQuat(Ogre::Quaternion(Ogre::Radian(-worldRot[0]), Ogre::Vector3::UNIT_X)*
|
Ogre::Quaternion worldRotQuat(Ogre::Quaternion(Ogre::Radian(-worldRot[0]), Ogre::Vector3::UNIT_X)*
|
||||||
|
|
Loading…
Reference in a new issue