diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp index c7466697fc..3f76efbb0a 100644 --- a/src/openrct2/ride/CableLift.cpp +++ b/src/openrct2/ride/CableLift.cpp @@ -21,6 +21,7 @@ #include "Track.h" #include "Vehicle.h" #include "VehicleData.h" +#include "VehicleGeometry.h" using namespace OpenRCT2; @@ -283,7 +284,7 @@ bool Vehicle::CableLiftUpdateTrackMotionForwards() if (nextVehiclePosition.z != _vehicleCurPosition.z) remainingDistanceFlags |= (1 << 2); - remaining_distance -= SubpositionTranslationDistances[remainingDistanceFlags]; + remaining_distance -= OpenRCT2::RideVehicle::Geometry::SubpositionTranslationDistances[remainingDistanceFlags]; _vehicleCurPosition.x = nextVehiclePosition.x; _vehicleCurPosition.y = nextVehiclePosition.y; _vehicleCurPosition.z = nextVehiclePosition.z; @@ -352,7 +353,7 @@ bool Vehicle::CableLiftUpdateTrackMotionBackwards() if (unk.z != _vehicleCurPosition.z) remainingDistanceFlags |= (1 << 2); - remaining_distance += SubpositionTranslationDistances[remainingDistanceFlags]; + remaining_distance += OpenRCT2::RideVehicle::Geometry::SubpositionTranslationDistances[remainingDistanceFlags]; _vehicleCurPosition.x = unk.x; _vehicleCurPosition.y = unk.y; _vehicleCurPosition.z = unk.z; diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 9483a361f6..3ec1b78046 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -7316,7 +7316,7 @@ bool Vehicle::UpdateTrackMotionForwards(const CarEntry* carEntry, const Ride& cu } // Loc6DB8A5 - remaining_distance -= SubpositionTranslationDistances[remainingDistanceFlags]; + remaining_distance -= Geometry::SubpositionTranslationDistances[remainingDistanceFlags]; _vehicleCurPosition = nextVehiclePosition; Orientation = moveInfo->direction; roll = moveInfo->roll; @@ -7629,7 +7629,7 @@ bool Vehicle::UpdateTrackMotionBackwards(const CarEntry* carEntry, const Ride& c { remainingDistanceFlags |= 4; } - remaining_distance += SubpositionTranslationDistances[remainingDistanceFlags]; + remaining_distance += Geometry::SubpositionTranslationDistances[remainingDistanceFlags]; _vehicleCurPosition = nextVehiclePosition; Orientation = moveInfo->direction; diff --git a/src/openrct2/ride/VehicleData.cpp b/src/openrct2/ride/VehicleData.cpp index 9bf2f47d27..b4e94fa698 100644 --- a/src/openrct2/ride/VehicleData.cpp +++ b/src/openrct2/ride/VehicleData.cpp @@ -795,31 +795,6 @@ const uint8_t MotionSimulatorTimeToSpriteMap[] = { const int32_t MotionSimulatorTimeToSpriteMapCount = static_cast(std::size(MotionSimulatorTimeToSpriteMap)); -/** rct2: 0x009A2930 -The distance between subposition points in a movement direction (but not distance). -*/ -const int32_t SubpositionTranslationDistances[] = { - // For a base length of 8716 (0x220C) on the horizontal and 6554 (0x199A) on the vertical, - // use the Pythagoras theorem and round up. - 0, // no movement - 8716, // X translation - 8716, // Y translation - 12327, // XY translation - 6554, // Z translation - 10905, // XZ translation - 10905, // YZ translation - 13961, // XYZ translation - // For the reverser car, multiply the horizontal distance by 2.5 and the vertical distance by 4.072. - 0, // no movement - 21790, // X translation - 21790, // Y translation - 30817, // Z translation - 16385, // XY translation - 27262, // XZ translation - 27262, // YZ translation - 34902, // XYZ translation -}; - /** rct2: 0x009A2970 */ const int32_t AccelerationFromPitch[] = { 0, // Flat diff --git a/src/openrct2/ride/VehicleData.h b/src/openrct2/ride/VehicleData.h index 5a7c47c80a..9ef99fc105 100644 --- a/src/openrct2/ride/VehicleData.h +++ b/src/openrct2/ride/VehicleData.h @@ -26,7 +26,6 @@ extern const TopSpinTimeToSpriteMap* TopSpinTimeToSpriteMaps[]; extern const uint8_t MotionSimulatorTimeToSpriteMap[]; extern const int32_t MotionSimulatorTimeToSpriteMapCount; -extern const int32_t SubpositionTranslationDistances[]; extern const int32_t AccelerationFromPitch[]; extern const int32_t SpriteDirectionToSoundDirection[]; diff --git a/src/openrct2/ride/VehicleGeometry.cpp b/src/openrct2/ride/VehicleGeometry.cpp index 962c45f3f5..4eb813fb09 100644 --- a/src/openrct2/ride/VehicleGeometry.cpp +++ b/src/openrct2/ride/VehicleGeometry.cpp @@ -14,4 +14,29 @@ namespace OpenRCT2::RideVehicle::Geometry { + /** rct2: 0x009A2930 + The distance between subposition points in a movement direction (but not distance). + */ + const int32_t SubpositionTranslationDistances[] = { + // For a base length of 8716 (0x220C) on the horizontal and 6554 (0x199A) on the vertical, + // use the Pythagoras theorem and round up. + 0, // no movement + 8716, // X translation + 8716, // Y translation + 12327, // XY translation + 6554, // Z translation + 10905, // XZ translation + 10905, // YZ translation + 13961, // XYZ translation + // For the reverser car, multiply the horizontal distance by 2.5 and the vertical distance by 4.072. + 0, // no movement + 21790, // X translation + 21790, // Y translation + 30817, // Z translation + 16385, // XY translation + 27262, // XZ translation + 27262, // YZ translation + 34902, // XYZ translation + }; + } // namespace OpenRCT2::RideVehicle::Geometry diff --git a/src/openrct2/ride/VehicleGeometry.h b/src/openrct2/ride/VehicleGeometry.h index c8cfee35fb..fa83549341 100644 --- a/src/openrct2/ride/VehicleGeometry.h +++ b/src/openrct2/ride/VehicleGeometry.h @@ -17,4 +17,6 @@ namespace OpenRCT2::RideVehicle::Geometry { + extern const int32_t SubpositionTranslationDistances[]; + } // namespace OpenRCT2::RideVehicle::Geometry