Updated SetPosition
- SetPosition now updates the aircraft's orientation after moving the aircraft - This should improve the handling of the aircraft when setting the position while paused and then unpausing - Fixes #91
This commit is contained in:
@@ -680,6 +680,17 @@ namespace XPC
|
|||||||
pos[2] = (float)GetDouble(DREF_Elevation, aircraft);
|
pos[2] = (float)GetDouble(DREF_Elevation, aircraft);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// See: http://www.xsquawkbox.net/xpsdk/mediawiki/MovingThePlane
|
||||||
|
// Need to get the aircraft's current orientation before moving and
|
||||||
|
// reset the orientation after moving to update the quaternion
|
||||||
|
float orient[3];
|
||||||
|
orient[0] = GetFloat(DREF_Pitch, aircraft);
|
||||||
|
orient[1] = GetFloat(DREF_Roll, aircraft);
|
||||||
|
orient[2] = GetFloat(DREF_HeadingTrue, aircraft);
|
||||||
|
|
||||||
|
// Now set the aircraft's position. Need to set world position for
|
||||||
|
// "long" moves, but since there isn't an easy way to calculate "long",
|
||||||
|
// we just set it every time.
|
||||||
double local[3];
|
double local[3];
|
||||||
XPLMWorldToLocal(pos[0], pos[1], pos[2], &local[0], &local[1], &local[2]);
|
XPLMWorldToLocal(pos[0], pos[1], pos[2], &local[0], &local[1], &local[2]);
|
||||||
// If the sim is paused, setting global position won't update the
|
// If the sim is paused, setting global position won't update the
|
||||||
@@ -691,6 +702,9 @@ namespace XPC
|
|||||||
Set(DREF_Latitude, (double)pos[0], aircraft);
|
Set(DREF_Latitude, (double)pos[0], aircraft);
|
||||||
Set(DREF_Longitude, (double)pos[1], aircraft);
|
Set(DREF_Longitude, (double)pos[1], aircraft);
|
||||||
Set(DREF_Elevation, (double)pos[2], aircraft);
|
Set(DREF_Elevation, (double)pos[2], aircraft);
|
||||||
|
|
||||||
|
// Now reset orientation to update q
|
||||||
|
SetOrientation(orient, aircraft);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DataManager::SetOrientation(float orient[3], char aircraft)
|
void DataManager::SetOrientation(float orient[3], char aircraft)
|
||||||
|
|||||||
Reference in New Issue
Block a user