diff --git a/apps/openmw/mwmp/DedicatedActor.cpp b/apps/openmw/mwmp/DedicatedActor.cpp index fa0709190..56da06d1e 100644 --- a/apps/openmw/mwmp/DedicatedActor.cpp +++ b/apps/openmw/mwmp/DedicatedActor.cpp @@ -104,9 +104,14 @@ void DedicatedActor::setMovementSettings() move->mPosition[0] = direction.pos[0]; move->mPosition[1] = direction.pos[1]; move->mPosition[2] = direction.pos[2]; - move->mRotation[0] = direction.rot[0]; - move->mRotation[1] = direction.rot[1]; - move->mRotation[2] = direction.rot[2]; + + // Make sure the values are valid, or we'll get an infinite error loop + if (!isnan(direction.rot[0]) && !isnan(direction.rot[1]) && !isnan(direction.rot[2])) + { + move->mRotation[0] = direction.rot[0]; + move->mRotation[1] = direction.rot[1]; + move->mRotation[2] = direction.rot[2]; + } } void DedicatedActor::setPosition() diff --git a/apps/openmw/mwmp/DedicatedPlayer.cpp b/apps/openmw/mwmp/DedicatedPlayer.cpp index 5ba963965..666a1bcfa 100644 --- a/apps/openmw/mwmp/DedicatedPlayer.cpp +++ b/apps/openmw/mwmp/DedicatedPlayer.cpp @@ -123,10 +123,14 @@ void DedicatedPlayer::move(float dt) move->mPosition[0] = direction.pos[0]; move->mPosition[1] = direction.pos[1]; move->mPosition[2] = direction.pos[2]; - move->mRotation[0] = direction.rot[0]; - move->mRotation[1] = direction.rot[1]; - move->mRotation[2] = direction.rot[2]; - + + // Make sure the values are valid, or we'll get an infinite error loop + if (!isnan(direction.rot[0]) && !isnan(direction.rot[1]) && !isnan(direction.rot[2])) + { + move->mRotation[0] = direction.rot[0]; + move->mRotation[1] = direction.rot[1]; + move->mRotation[2] = direction.rot[2]; + } } void DedicatedPlayer::setAnimFlags()