From 95c1adc813ec38319516f21defe1125f488343b1 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 14 Jan 2024 23:46:28 +0100 Subject: [PATCH] Rename TrackBank to TrackRoll --- src/openrct2-ui/ride/Construction.cpp | 2 +- src/openrct2-ui/ride/Construction.h | 2 +- src/openrct2-ui/windows/RideConstruction.cpp | 138 +-- src/openrct2/actions/WallPlaceAction.cpp | 4 +- src/openrct2/ride/RideConstruction.cpp | 28 +- src/openrct2/ride/RideConstruction.h | 4 +- src/openrct2/ride/Track.cpp | 14 +- src/openrct2/ride/Track.h | 14 +- src/openrct2/ride/TrackData.cpp | 1050 +++++++++--------- src/openrct2/ride/TrackData.h | 4 +- src/openrct2/scripting/ScriptEngine.cpp | 8 +- src/openrct2/windows/_legacy.cpp | 12 +- 12 files changed, 640 insertions(+), 640 deletions(-) diff --git a/src/openrct2-ui/ride/Construction.cpp b/src/openrct2-ui/ride/Construction.cpp index d6d13f88d9..7029aa0986 100644 --- a/src/openrct2-ui/ride/Construction.cpp +++ b/src/openrct2-ui/ride/Construction.cpp @@ -42,7 +42,7 @@ void RideConstructNew(RideSelection listItem) } SpecialElementsDropdownState BuildSpecialElementsList( - const Ride& currentRide, uint8_t buildDirection, TrackPitch buildSlope, TrackBank buildBank, RideConstructionState state) + const Ride& currentRide, uint8_t buildDirection, TrackPitch buildSlope, TrackRoll buildBank, RideConstructionState state) { auto buildDirectionIsDiagonal = TrackPieceDirectionIsDiagonal(buildDirection); SpecialElementsDropdownState list; diff --git a/src/openrct2-ui/ride/Construction.h b/src/openrct2-ui/ride/Construction.h index d05858b600..db19d93dea 100644 --- a/src/openrct2-ui/ride/Construction.h +++ b/src/openrct2-ui/ride/Construction.h @@ -159,6 +159,6 @@ struct SpecialElementsDropdownState }; SpecialElementsDropdownState BuildSpecialElementsList( - const Ride& currentRide, uint8_t buildDirection, TrackPitch buildSlope, TrackBank buildBank, RideConstructionState state); + const Ride& currentRide, uint8_t buildDirection, TrackPitch buildSlope, TrackRoll buildBank, RideConstructionState state); void RideConstructNew(RideSelection listItem); diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 938d5a948b..e03e76264d 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -227,14 +227,14 @@ public: _currentTrackCurve = currentRide->GetRideTypeDescriptor().StartTrackPiece | RideConstructionSpecialPieceSelected; _currentTrackSlopeEnd = TrackPitch::None; - _currentTrackBankEnd = TrackBank::None; + _currentTrackRollEnd = TrackRoll::None; _currentTrackLiftHill = 0; _currentTrackAlternative = RIDE_TYPE_NO_ALTERNATIVES; if (currentRide->GetRideTypeDescriptor().HasFlag(RIDE_TYPE_FLAG_START_CONSTRUCTION_INVERTED)) _currentTrackAlternative |= RIDE_TYPE_ALTERNATIVE_TRACK_TYPE; - _previousTrackBankEnd = TrackBank::None; + _previousTrackRollEnd = TrackRoll::None; _previousTrackSlopeEnd = TrackPitch::None; _currentTrackPieceDirection = 0; @@ -396,7 +396,7 @@ public: { disabledWidgets |= (1uLL << WIDX_BANK_LEFT) | (1uLL << WIDX_BANK_RIGHT); } - else if (_currentTrackBankEnd != TrackBank::None) + else if (_currentTrackRollEnd != TrackRoll::None) { disabledWidgets |= (1uLL << WIDX_SLOPE_DOWN) | (1uLL << WIDX_SLOPE_UP); } @@ -409,7 +409,7 @@ public: || _currentTrackSlopeEnd == TrackPitch::Up25 || _currentTrackSlopeEnd == TrackPitch::Up60) disabledWidgets |= 1uLL << WIDX_CHAIN_LIFT | (1uLL << WIDX_BANK_LEFT) | (1uLL << WIDX_BANK_RIGHT); // Disable upward slope if current track piece is not flat - if ((_previousTrackSlopeEnd != TrackPitch::None || _previousTrackBankEnd != TrackBank::None) + if ((_previousTrackSlopeEnd != TrackPitch::None || _previousTrackRollEnd != TrackRoll::None) && !(_currentTrackLiftHill & CONSTRUCTION_LIFT_HILL_SELECTED)) disabledWidgets |= (1uLL << WIDX_SLOPE_UP); } @@ -425,7 +425,7 @@ public: case EnumValue(TrackCurve::Left): case EnumValue(TrackCurve::LeftLarge): disabledWidgets |= (1uLL << WIDX_BANK_RIGHT); - if (_previousTrackBankEnd == TrackBank::None) + if (_previousTrackRollEnd == TrackRoll::None) { disabledWidgets |= (1uLL << WIDX_BANK_LEFT); } @@ -439,7 +439,7 @@ public: case EnumValue(TrackCurve::RightSmall): case EnumValue(TrackCurve::RightVerySmall): disabledWidgets |= (1uLL << WIDX_BANK_LEFT); - if (_previousTrackBankEnd == TrackBank::None) + if (_previousTrackRollEnd == TrackRoll::None) { disabledWidgets |= (1uLL << WIDX_BANK_RIGHT); } @@ -451,7 +451,7 @@ public: } if (!IsTrackEnabled(TRACK_SLOPE_ROLL_BANKING)) { - if (_currentTrackBankEnd != TrackBank::None) + if (_currentTrackRollEnd != TrackRoll::None) { disabledWidgets |= (1uLL << WIDX_SLOPE_DOWN) | (1uLL << WIDX_SLOPE_UP); } @@ -548,17 +548,17 @@ public: disabledWidgets &= ~(1uLL << WIDX_SLOPE_UP_STEEP); } } - if (_previousTrackBankEnd == TrackBank::Left) + if (_previousTrackRollEnd == TrackRoll::Left) { disabledWidgets |= (1uLL << WIDX_RIGHT_CURVE_SMALL) | (1uLL << WIDX_RIGHT_CURVE) | (1uLL << WIDX_RIGHT_CURVE_LARGE) | (1uLL << WIDX_BANK_RIGHT); } - if (_previousTrackBankEnd == TrackBank::Right) + if (_previousTrackRollEnd == TrackRoll::Right) { disabledWidgets |= (1uLL << WIDX_LEFT_CURVE_SMALL) | (1uLL << WIDX_LEFT_CURVE) | (1uLL << WIDX_LEFT_CURVE_LARGE) | (1uLL << WIDX_BANK_LEFT); } - if (_currentTrackBankEnd != _previousTrackBankEnd) + if (_currentTrackRollEnd != _previousTrackRollEnd) { disabledWidgets |= (1uLL << WIDX_RIGHT_CURVE_SMALL) | (1uLL << WIDX_RIGHT_CURVE) | (1uLL << WIDX_RIGHT_CURVE_LARGE) | (1uLL << WIDX_LEFT_CURVE_SMALL) | (1uLL << WIDX_LEFT_CURVE) | (1uLL << WIDX_LEFT_CURVE_LARGE); @@ -594,7 +594,7 @@ public: disabledWidgets |= (1uLL << WIDX_BANK_LEFT) | (1uLL << WIDX_BANK_RIGHT); } } - if (_currentTrackBankEnd != TrackBank::None || _previousTrackBankEnd != TrackBank::None) + if (_currentTrackRollEnd != TrackRoll::None || _previousTrackRollEnd != TrackRoll::None) { disabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP) | (1uLL << WIDX_SLOPE_UP_STEEP) | (1uLL << WIDX_CHAIN_LIFT); } @@ -628,7 +628,7 @@ public: disabledWidgets |= (1uLL << WIDX_CHAIN_LIFT); } } - if (_previousTrackBankEnd == TrackBank::UpsideDown) + if (_previousTrackRollEnd == TrackRoll::UpsideDown) { disabledWidgets |= (1uLL << WIDX_LEFT_CURVE_SMALL) | (1uLL << WIDX_LEFT_CURVE) | (1uLL << WIDX_LEFT_CURVE_LARGE) | (1uLL << WIDX_STRAIGHT) | (1uLL << WIDX_RIGHT_CURVE_SMALL) | (1uLL << WIDX_RIGHT_CURVE) @@ -664,17 +664,17 @@ public: else if (IsTrackEnabled(TRACK_SLOPE_CURVE_BANKED)) { disabledWidgets |= (1uLL << WIDX_SLOPE_DOWN_STEEP) | (1uLL << WIDX_SLOPE_UP_STEEP); - if (_currentTrackBankEnd == TrackBank::Left) + if (_currentTrackRollEnd == TrackRoll::Left) { disabledWidgets |= (1uLL << WIDX_BANK_STRAIGHT) | (1uLL << WIDX_BANK_RIGHT); disabledWidgets &= ~(1uLL << WIDX_BANK_LEFT); } - if (_currentTrackBankEnd == TrackBank::Right) + if (_currentTrackRollEnd == TrackRoll::Right) { disabledWidgets |= (1uLL << WIDX_BANK_LEFT) | (1uLL << WIDX_BANK_STRAIGHT); disabledWidgets &= ~(1uLL << WIDX_BANK_RIGHT); } - if (_currentTrackBankEnd == TrackBank::None) + if (_currentTrackRollEnd == TrackRoll::None) { disabledWidgets |= (1uLL << WIDX_BANK_LEFT) | (1uLL << WIDX_BANK_RIGHT); disabledWidgets &= ~(1uLL << WIDX_BANK_STRAIGHT); @@ -765,7 +765,7 @@ public: if (_currentTrackSlopeEnd == TrackPitch::None && _currentTrackSlopeEnd == _previousTrackSlopeEnd) { // If the bank is none, attempt to show unbanked quarter helixes - if (_currentTrackBankEnd == TrackBank::None + if (_currentTrackRollEnd == TrackRoll::None && (_currentTrackCurve == EnumValue(TrackCurve::Left) || _currentTrackCurve == EnumValue(TrackCurve::Right))) { if (IsTrackEnabled(TRACK_HELIX_DOWN_UNBANKED_QUARTER)) @@ -776,7 +776,7 @@ public: // If the track is banked left or right and curvature is standard size (2.5 tile radius), attempt to show buttons // for half or quarter helixes else if ( - (_currentTrackBankEnd == TrackBank::Left || _currentTrackBankEnd == TrackBank::Right) + (_currentTrackRollEnd == TrackRoll::Left || _currentTrackRollEnd == TrackRoll::Right) && (_currentTrackCurve == EnumValue(TrackCurve::Left) || _currentTrackCurve == EnumValue(TrackCurve::Right))) { if (IsTrackEnabled(TRACK_HELIX_DOWN_BANKED_HALF) || IsTrackEnabled(TRACK_HELIX_DOWN_BANKED_QUARTER)) @@ -787,7 +787,7 @@ public: // If the track is banked left or right and curvature is small size (1.5 tile radius), attempt to show buttons for // half helixes else if ( - (_currentTrackBankEnd == TrackBank::Left || _currentTrackBankEnd == TrackBank::Right) + (_currentTrackRollEnd == TrackRoll::Left || _currentTrackRollEnd == TrackRoll::Right) && (_currentTrackCurve == EnumValue(TrackCurve::LeftSmall) || _currentTrackCurve == EnumValue(TrackCurve::RightSmall))) { @@ -804,7 +804,7 @@ public: if (_currentTrackCurve == EnumValue(TrackCurve::LeftSmall) || _currentTrackCurve == EnumValue(TrackCurve::RightSmall)) { - if (_currentTrackSlopeEnd == TrackPitch::None && _previousTrackBankEnd != TrackBank::None + if (_currentTrackSlopeEnd == TrackPitch::None && _previousTrackRollEnd != TrackRoll::None && (!currentRide->GetRideTypeDescriptor().HasFlag(RIDE_TYPE_FLAG_UP_INCLINE_REQUIRES_LIFT) || gCheatsEnableAllDrawableTrackPieces)) { @@ -817,7 +817,7 @@ public: if (_currentTrackCurve == EnumValue(TrackCurve::LeftSmall) || _currentTrackCurve == EnumValue(TrackCurve::RightSmall)) { - if (_currentTrackSlopeEnd == TrackPitch::None && _previousTrackBankEnd != TrackBank::None) + if (_currentTrackSlopeEnd == TrackPitch::None && _previousTrackRollEnd != TrackRoll::None) { disabledWidgets &= ~(1uLL << WIDX_SLOPE_DOWN); } @@ -1060,7 +1060,7 @@ public: case WIDX_STRAIGHT: RideConstructionInvalidateCurrentTrack(); if (_currentTrackCurve != EnumValue(TrackCurve::None)) - _currentTrackBankEnd = TrackBank::None; + _currentTrackRollEnd = TrackRoll::None; _currentTrackCurve = EnumValue(TrackCurve::None); _currentTrackPrice = MONEY64_UNDEFINED; WindowRideConstructionUpdateActiveElements(); @@ -1069,14 +1069,14 @@ public: RideConstructionInvalidateCurrentTrack(); if (IsTrackEnabled(TRACK_HELIX_DOWN_BANKED_HALF) || IsTrackEnabled(TRACK_HELIX_UP_BANKED_HALF)) { - if (_currentTrackCurve == EnumValue(TrackCurve::Left) && _currentTrackBankEnd == TrackBank::Left) + if (_currentTrackCurve == EnumValue(TrackCurve::Left) && _currentTrackRollEnd == TrackRoll::Left) { _currentTrackCurve = TrackElemType::LeftHalfBankedHelixDownLarge | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY64_UNDEFINED; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentTrackCurve == EnumValue(TrackCurve::Right) && _currentTrackBankEnd == TrackBank::Right) + if (_currentTrackCurve == EnumValue(TrackCurve::Right) && _currentTrackRollEnd == TrackRoll::Right) { _currentTrackCurve = TrackElemType::RightHalfBankedHelixDownLarge | RideConstructionSpecialPieceSelected; @@ -1084,14 +1084,14 @@ public: WindowRideConstructionUpdateActiveElements(); break; } - if (_currentTrackCurve == EnumValue(TrackCurve::LeftSmall) && _currentTrackBankEnd == TrackBank::Left) + if (_currentTrackCurve == EnumValue(TrackCurve::LeftSmall) && _currentTrackRollEnd == TrackRoll::Left) { _currentTrackCurve = TrackElemType::LeftHalfBankedHelixDownSmall | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY64_UNDEFINED; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentTrackCurve == EnumValue(TrackCurve::RightSmall) && _currentTrackBankEnd == TrackBank::Right) + if (_currentTrackCurve == EnumValue(TrackCurve::RightSmall) && _currentTrackRollEnd == TrackRoll::Right) { _currentTrackCurve = TrackElemType::RightHalfBankedHelixDownSmall | RideConstructionSpecialPieceSelected; @@ -1102,7 +1102,7 @@ public: } if (IsTrackEnabled(TRACK_HELIX_DOWN_BANKED_QUARTER) || IsTrackEnabled(TRACK_HELIX_UP_BANKED_QUARTER)) { - if (_currentTrackCurve == EnumValue(TrackCurve::Left) && _currentTrackBankEnd == TrackBank::Left) + if (_currentTrackCurve == EnumValue(TrackCurve::Left) && _currentTrackRollEnd == TrackRoll::Left) { _currentTrackCurve = TrackElemType::LeftQuarterBankedHelixLargeDown | RideConstructionSpecialPieceSelected; @@ -1110,7 +1110,7 @@ public: WindowRideConstructionUpdateActiveElements(); break; } - if (_currentTrackCurve == EnumValue(TrackCurve::Right) && _currentTrackBankEnd == TrackBank::Right) + if (_currentTrackCurve == EnumValue(TrackCurve::Right) && _currentTrackRollEnd == TrackRoll::Right) { _currentTrackCurve = TrackElemType::RightQuarterBankedHelixLargeDown | RideConstructionSpecialPieceSelected; @@ -1121,7 +1121,7 @@ public: } if (IsTrackEnabled(TRACK_HELIX_DOWN_UNBANKED_QUARTER) || IsTrackEnabled(TRACK_HELIX_UP_UNBANKED_QUARTER)) { - if (_currentTrackBankEnd == TrackBank::None) + if (_currentTrackRollEnd == TrackRoll::None) { if (_currentTrackCurve == EnumValue(TrackCurve::Left)) { @@ -1152,9 +1152,9 @@ public: break; case WIDX_SLOPE_DOWN: RideConstructionInvalidateCurrentTrack(); - if (_rideConstructionState == RideConstructionState::Back && _currentTrackBankEnd != TrackBank::None) + if (_rideConstructionState == RideConstructionState::Back && _currentTrackRollEnd != TrackRoll::None) { - _currentTrackBankEnd = TrackBank::None; + _currentTrackRollEnd = TrackRoll::None; } UpdateLiftHillSelected(TrackPitch::Down25); break; @@ -1164,31 +1164,31 @@ public: { if (_currentTrackCurve == EnumValue(TrackCurve::LeftSmall)) { - _currentTrackBankEnd = TrackBank::Left; + _currentTrackRollEnd = TrackRoll::Left; } else if (_currentTrackCurve == EnumValue(TrackCurve::RightSmall)) { - _currentTrackBankEnd = TrackBank::Right; + _currentTrackRollEnd = TrackRoll::Right; } } else if (_rideConstructionState == RideConstructionState::Back && _previousTrackSlopeEnd == TrackPitch::Up25) { if (_currentTrackCurve == EnumValue(TrackCurve::LeftSmall)) { - _currentTrackBankEnd = TrackBank::Left; + _currentTrackRollEnd = TrackRoll::Left; } else if (_currentTrackCurve == EnumValue(TrackCurve::RightSmall)) { - _currentTrackBankEnd = TrackBank::Right; + _currentTrackRollEnd = TrackRoll::Right; } } UpdateLiftHillSelected(TrackPitch::None); break; case WIDX_SLOPE_UP: RideConstructionInvalidateCurrentTrack(); - if (_rideConstructionState == RideConstructionState::Front && _currentTrackBankEnd != TrackBank::None) + if (_rideConstructionState == RideConstructionState::Front && _currentTrackRollEnd != TrackRoll::None) { - _currentTrackBankEnd = TrackBank::None; + _currentTrackRollEnd = TrackRoll::None; } if (currentRide->GetRideTypeDescriptor().SupportsTrackPiece(TRACK_REVERSE_FREEFALL)) { @@ -1208,28 +1208,28 @@ public: RideConstructionInvalidateCurrentTrack(); if (IsTrackEnabled(TRACK_HELIX_DOWN_BANKED_HALF) || IsTrackEnabled(TRACK_HELIX_UP_BANKED_HALF)) { - if (_currentTrackCurve == EnumValue(TrackCurve::Left) && _currentTrackBankEnd == TrackBank::Left) + if (_currentTrackCurve == EnumValue(TrackCurve::Left) && _currentTrackRollEnd == TrackRoll::Left) { _currentTrackCurve = TrackElemType::LeftHalfBankedHelixUpLarge | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY64_UNDEFINED; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentTrackCurve == EnumValue(TrackCurve::Right) && _currentTrackBankEnd == TrackBank::Right) + if (_currentTrackCurve == EnumValue(TrackCurve::Right) && _currentTrackRollEnd == TrackRoll::Right) { _currentTrackCurve = TrackElemType::RightHalfBankedHelixUpLarge | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY64_UNDEFINED; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentTrackCurve == EnumValue(TrackCurve::LeftSmall) && _currentTrackBankEnd == TrackBank::Left) + if (_currentTrackCurve == EnumValue(TrackCurve::LeftSmall) && _currentTrackRollEnd == TrackRoll::Left) { _currentTrackCurve = TrackElemType::LeftHalfBankedHelixUpSmall | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY64_UNDEFINED; WindowRideConstructionUpdateActiveElements(); break; } - if (_currentTrackCurve == EnumValue(TrackCurve::RightSmall) && _currentTrackBankEnd == TrackBank::Right) + if (_currentTrackCurve == EnumValue(TrackCurve::RightSmall) && _currentTrackRollEnd == TrackRoll::Right) { _currentTrackCurve = TrackElemType::RightHalfBankedHelixUpSmall | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY64_UNDEFINED; @@ -1239,7 +1239,7 @@ public: } if (IsTrackEnabled(TRACK_HELIX_DOWN_BANKED_QUARTER) || IsTrackEnabled(TRACK_HELIX_UP_BANKED_QUARTER)) { - if (_currentTrackCurve == EnumValue(TrackCurve::Left) && _currentTrackBankEnd == TrackBank::Left) + if (_currentTrackCurve == EnumValue(TrackCurve::Left) && _currentTrackRollEnd == TrackRoll::Left) { _currentTrackCurve = TrackElemType::LeftQuarterBankedHelixLargeUp | RideConstructionSpecialPieceSelected; @@ -1247,7 +1247,7 @@ public: WindowRideConstructionUpdateActiveElements(); break; } - if (_currentTrackCurve == EnumValue(TrackCurve::Right) && _currentTrackBankEnd == TrackBank::Right) + if (_currentTrackCurve == EnumValue(TrackCurve::Right) && _currentTrackRollEnd == TrackRoll::Right) { _currentTrackCurve = TrackElemType::RightQuarterBankedHelixLargeUp | RideConstructionSpecialPieceSelected; @@ -1258,7 +1258,7 @@ public: } if (IsTrackEnabled(TRACK_HELIX_DOWN_UNBANKED_QUARTER) || IsTrackEnabled(TRACK_HELIX_UP_UNBANKED_QUARTER)) { - if (_currentTrackBankEnd == TrackBank::None) + if (_currentTrackRollEnd == TrackRoll::None) { if (_currentTrackCurve == EnumValue(TrackCurve::Left)) { @@ -1297,7 +1297,7 @@ public: RideConstructionInvalidateCurrentTrack(); if (!_currentlyShowingBrakeOrBoosterSpeed) { - _currentTrackBankEnd = TrackBank::Left; + _currentTrackRollEnd = TrackRoll::Left; _currentTrackPrice = MONEY64_UNDEFINED; WindowRideConstructionUpdateActiveElements(); } @@ -1306,7 +1306,7 @@ public: RideConstructionInvalidateCurrentTrack(); if (!_currentlyShowingBrakeOrBoosterSpeed) { - _currentTrackBankEnd = TrackBank::None; + _currentTrackRollEnd = TrackRoll::None; _currentTrackPrice = MONEY64_UNDEFINED; WindowRideConstructionUpdateActiveElements(); } @@ -1333,7 +1333,7 @@ public: RideConstructionInvalidateCurrentTrack(); if (!_currentlyShowingBrakeOrBoosterSpeed) { - _currentTrackBankEnd = TrackBank::Right; + _currentTrackRollEnd = TrackRoll::Right; _currentTrackPrice = MONEY64_UNDEFINED; WindowRideConstructionUpdateActiveElements(); } @@ -1422,7 +1422,7 @@ public: break; case TrackElemType::LeftVerticalLoop: case TrackElemType::RightVerticalLoop: - _currentTrackBankEnd = TrackBank::None; + _currentTrackRollEnd = TrackRoll::None; _currentTrackLiftHill &= ~CONSTRUCTION_LIFT_HILL_SELECTED; break; case TrackElemType::BlockBrakes: @@ -1662,7 +1662,7 @@ public: widgets[WIDX_SLOPE_UP].type = WindowWidgetType::FlatBtn; } if ((IsTrackEnabled(TRACK_HELIX_DOWN_BANKED_HALF) || IsTrackEnabled(TRACK_HELIX_UP_BANKED_HALF)) - && _currentTrackBankEnd != TrackBank::None && _currentTrackSlopeEnd == TrackPitch::None) + && _currentTrackRollEnd != TrackRoll::None && _currentTrackSlopeEnd == TrackPitch::None) { if (_currentTrackCurve >= EnumValue(TrackCurve::Left) && _currentTrackCurve <= EnumValue(TrackCurve::RightSmall)) { @@ -1744,7 +1744,7 @@ public: } if ((IsTrackEnabled(TRACK_HELIX_DOWN_UNBANKED_QUARTER) || IsTrackEnabled(TRACK_HELIX_UP_UNBANKED_QUARTER)) - && _currentTrackSlopeEnd == TrackPitch::None && _currentTrackBankEnd == TrackBank::None + && _currentTrackSlopeEnd == TrackPitch::None && _currentTrackRollEnd == TrackRoll::None && (_currentTrackCurve == EnumValue(TrackCurve::Left) || _currentTrackCurve == EnumValue(TrackCurve::Right))) { widgets[WIDX_SLOPE_DOWN_STEEP].image = ImageId(SPR_RIDE_CONSTRUCTION_HELIX_DOWN); @@ -1772,7 +1772,7 @@ public: if ((IsTrackEnabled(TRACK_HELIX_DOWN_BANKED_QUARTER) || IsTrackEnabled(TRACK_HELIX_UP_BANKED_QUARTER) || IsTrackEnabled(TRACK_HELIX_DOWN_BANKED_HALF) || IsTrackEnabled(TRACK_HELIX_UP_BANKED_HALF)) && (_currentTrackCurve >= EnumValue(TrackCurve::Left) && _currentTrackCurve <= EnumValue(TrackCurve::RightSmall)) - && _currentTrackSlopeEnd == TrackPitch::None && _currentTrackBankEnd != TrackBank::None) + && _currentTrackSlopeEnd == TrackPitch::None && _currentTrackRollEnd != TrackRoll::None) { widgets[WIDX_SLOPE_DOWN_STEEP].image = ImageId(SPR_RIDE_CONSTRUCTION_HELIX_DOWN); widgets[WIDX_SLOPE_DOWN_STEEP].tooltip = STR_RIDE_CONSTRUCTION_HELIX_DOWN_TIP; @@ -1854,7 +1854,7 @@ public: if ((_currentTrackCurve < EnumValue(TrackCurve::LeftSmall) || _currentTrackCurve == (RideConstructionSpecialPieceSelected | TrackElemType::SBendLeft) || _currentTrackCurve == (RideConstructionSpecialPieceSelected | TrackElemType::SBendRight)) - && _currentTrackSlopeEnd == TrackPitch::None && _currentTrackBankEnd == TrackBank::None) + && _currentTrackSlopeEnd == TrackPitch::None && _currentTrackRollEnd == TrackRoll::None) { widgets[WIDX_BANKING_GROUPBOX].text = STR_RIDE_CONSTRUCTION_TRACK_STYLE; widgets[WIDX_U_TRACK].type = WindowWidgetType::FlatBtn; @@ -2063,12 +2063,12 @@ public: pressed_widgets |= (1uLL << WIDX_U_TRACK); } } - switch (_currentTrackBankEnd) + switch (_currentTrackRollEnd) { - case TrackBank::Left: + case TrackRoll::Left: widgetIndex = WIDX_BANK_LEFT; break; - case TrackBank::None: + case TrackRoll::None: widgetIndex = WIDX_BANK_STRAIGHT; break; default: @@ -2093,7 +2093,7 @@ public: return; } _specialElementDropdownState = BuildSpecialElementsList( - *currentRide, _currentTrackPieceDirection, _previousTrackSlopeEnd, _previousTrackBankEnd, _rideConstructionState); + *currentRide, _currentTrackPieceDirection, _previousTrackSlopeEnd, _previousTrackRollEnd, _rideConstructionState); _currentlyShowingBrakeOrBoosterSpeed = false; } @@ -3596,8 +3596,8 @@ void RideConstructionTooldownConstruct(const ScreenCoordsXY& screenCoords) auto saveCurrentTrackCurve = _currentTrackCurve; auto savePreviousTrackSlopeEnd = _previousTrackSlopeEnd; auto saveCurrentTrackSlopeEnd = _currentTrackSlopeEnd; - auto savePreviousTrackBankEnd = _previousTrackBankEnd; - auto saveCurrentTrackBankEnd = _currentTrackBankEnd; + auto savePreviousTrackRollEnd = _previousTrackRollEnd; + auto saveCurrentTrackRollEnd = _currentTrackRollEnd; int32_t saveCurrentTrackAlternative = _currentTrackAlternative; int32_t saveCurrentTrackLiftHill = _currentTrackLiftHill; @@ -3607,8 +3607,8 @@ void RideConstructionTooldownConstruct(const ScreenCoordsXY& screenCoords) _currentTrackCurve = saveCurrentTrackCurve; _previousTrackSlopeEnd = savePreviousTrackSlopeEnd; _currentTrackSlopeEnd = saveCurrentTrackSlopeEnd; - _previousTrackBankEnd = savePreviousTrackBankEnd; - _currentTrackBankEnd = saveCurrentTrackBankEnd; + _previousTrackRollEnd = savePreviousTrackRollEnd; + _currentTrackRollEnd = saveCurrentTrackRollEnd; _currentTrackAlternative = saveCurrentTrackAlternative; _currentTrackLiftHill = saveCurrentTrackLiftHill; @@ -4383,15 +4383,15 @@ void WindowRideConstructionKeyboardShortcutBankLeft() return; } - switch (_currentTrackBankEnd) + switch (_currentTrackRollEnd) { - case TrackBank::None: + case TrackRoll::None: if (!WidgetIsDisabled(*w, WIDX_BANK_LEFT) && w->widgets[WIDX_BANK_LEFT].type != WindowWidgetType::Empty) { WindowEventMouseDownCall(w, WIDX_BANK_LEFT); } break; - case TrackBank::Right: + case TrackRoll::Right: if (!WidgetIsDisabled(*w, WIDX_BANK_STRAIGHT) && w->widgets[WIDX_BANK_STRAIGHT].type != WindowWidgetType::Empty) { WindowEventMouseDownCall(w, WIDX_BANK_STRAIGHT); @@ -4419,15 +4419,15 @@ void WindowRideConstructionKeyboardShortcutBankRight() return; } - switch (_currentTrackBankEnd) + switch (_currentTrackRollEnd) { - case TrackBank::None: + case TrackRoll::None: if (!WidgetIsDisabled(*w, WIDX_BANK_RIGHT) && w->widgets[WIDX_BANK_RIGHT].type != WindowWidgetType::Empty) { WindowEventMouseDownCall(w, WIDX_BANK_RIGHT); } break; - case TrackBank::Left: + case TrackRoll::Left: if (!WidgetIsDisabled(*w, WIDX_BANK_STRAIGHT) && w->widgets[WIDX_BANK_STRAIGHT].type != WindowWidgetType::Empty) { WindowEventMouseDownCall(w, WIDX_BANK_STRAIGHT); @@ -4503,8 +4503,8 @@ static void WindowRideConstructionMouseUpDemolishNextPiece(const CoordsXYZD& pie auto savedCurrentTrackCurve = _currentTrackCurve; auto savedPreviousTrackSlopeEnd = _previousTrackSlopeEnd; auto savedCurrentTrackSlopeEnd = _currentTrackSlopeEnd; - auto savedPreviousTrackBankEnd = _previousTrackBankEnd; - auto savedCurrentTrackBankEnd = _currentTrackBankEnd; + auto savedPreviousTrackRollEnd = _previousTrackRollEnd; + auto savedCurrentTrackRollEnd = _currentTrackRollEnd; int32_t savedCurrentTrackAlternative = _currentTrackAlternative; int32_t savedCurrentTrackLiftHill = _currentTrackLiftHill; RideConstructionSetDefaultNextPiece(); @@ -4519,8 +4519,8 @@ static void WindowRideConstructionMouseUpDemolishNextPiece(const CoordsXYZD& pie _currentTrackCurve = savedCurrentTrackCurve; _previousTrackSlopeEnd = savedPreviousTrackSlopeEnd; _currentTrackSlopeEnd = savedCurrentTrackSlopeEnd; - _previousTrackBankEnd = savedPreviousTrackBankEnd; - _currentTrackBankEnd = savedCurrentTrackBankEnd; + _previousTrackRollEnd = savedPreviousTrackRollEnd; + _currentTrackRollEnd = savedCurrentTrackRollEnd; _currentTrackAlternative = savedCurrentTrackAlternative; _currentTrackLiftHill = savedCurrentTrackLiftHill; WindowRideConstructionUpdateActiveElements(); diff --git a/src/openrct2/actions/WallPlaceAction.cpp b/src/openrct2/actions/WallPlaceAction.cpp index af11c6d0c0..3d64b52c05 100644 --- a/src/openrct2/actions/WallPlaceAction.cpp +++ b/src/openrct2/actions/WallPlaceAction.cpp @@ -442,7 +442,7 @@ bool WallPlaceAction::WallCheckObstructionWithTrack( return false; } - if (ted.Definition.RollStart == TrackBank::None) + if (ted.Definition.RollStart == TrackRoll::None) { if (!(ted.Coordinates.rotation_begin & 4)) { @@ -467,7 +467,7 @@ bool WallPlaceAction::WallCheckObstructionWithTrack( return false; } - if (ted.Definition.RollEnd != TrackBank::None) + if (ted.Definition.RollEnd != TrackRoll::None) { return false; } diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index 4cdf9dd148..07aa83e19b 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -65,12 +65,12 @@ track_type_t _currentTrackPieceType; uint8_t _currentTrackSelectionFlags; uint32_t _rideConstructionNextArrowPulse = 0; TrackPitch _currentTrackSlopeEnd; -TrackBank _currentTrackBankEnd; +TrackRoll _currentTrackRollEnd; uint8_t _currentTrackLiftHill; uint8_t _currentTrackAlternative; track_type_t _selectedTrackType; -TrackBank _previousTrackBankEnd; +TrackRoll _previousTrackRollEnd; TrackPitch _previousTrackSlopeEnd; CoordsXYZ _previousTrackPiece; @@ -607,7 +607,7 @@ static void ride_construction_reset_current_piece() { _currentTrackCurve = rtd.StartTrackPiece | RideConstructionSpecialPieceSelected; _currentTrackSlopeEnd = TrackPitch::None; - _currentTrackBankEnd = TrackBank::None; + _currentTrackRollEnd = TrackRoll::None; _currentTrackLiftHill = 0; _currentTrackAlternative = RIDE_TYPE_NO_ALTERNATIVES; if (rtd.HasFlag(RIDE_TYPE_FLAG_START_CONSTRUCTION_INVERTED)) @@ -615,7 +615,7 @@ static void ride_construction_reset_current_piece() _currentTrackAlternative |= RIDE_TYPE_ALTERNATIVE_TRACK_TYPE; } _previousTrackSlopeEnd = TrackPitch::None; - _previousTrackBankEnd = TrackBank::None; + _previousTrackRollEnd = TrackRoll::None; } else { @@ -684,14 +684,14 @@ void RideConstructionSetDefaultNextPiece() // Set track banking if (rtd.HasFlag(RIDE_TYPE_FLAG_HAS_ALTERNATIVE_TRACK_TYPE)) { - if (bank == TrackBank::UpsideDown) + if (bank == TrackRoll::UpsideDown) { - bank = TrackBank::None; + bank = TrackRoll::None; _currentTrackAlternative ^= RIDE_TYPE_ALTERNATIVE_TRACK_TYPE; } } - _currentTrackBankEnd = bank; - _previousTrackBankEnd = bank; + _currentTrackRollEnd = bank; + _previousTrackRollEnd = bank; // Set track slope and lift hill _currentTrackSlopeEnd = slope; @@ -732,14 +732,14 @@ void RideConstructionSetDefaultNextPiece() // Set track banking if (rtd.HasFlag(RIDE_TYPE_FLAG_HAS_ALTERNATIVE_TRACK_TYPE)) { - if (bank == TrackBank::UpsideDown) + if (bank == TrackRoll::UpsideDown) { - bank = TrackBank::None; + bank = TrackRoll::None; _currentTrackAlternative ^= RIDE_TYPE_ALTERNATIVE_TRACK_TYPE; } } - _currentTrackBankEnd = bank; - _previousTrackBankEnd = bank; + _currentTrackRollEnd = bank; + _previousTrackRollEnd = bank; // Set track slope and lift hill _currentTrackSlopeEnd = slope; @@ -1124,14 +1124,14 @@ int32_t RideInitialiseConstructionWindow(Ride& ride) _currentTrackCurve = ride.GetRideTypeDescriptor().StartTrackPiece | RideConstructionSpecialPieceSelected; _currentTrackSlopeEnd = TrackPitch::None; - _currentTrackBankEnd = TrackBank::None; + _currentTrackRollEnd = TrackRoll::None; _currentTrackLiftHill = 0; _currentTrackAlternative = RIDE_TYPE_NO_ALTERNATIVES; if (ride.GetRideTypeDescriptor().HasFlag(RIDE_TYPE_FLAG_START_CONSTRUCTION_INVERTED)) _currentTrackAlternative |= RIDE_TYPE_ALTERNATIVE_TRACK_TYPE; - _previousTrackBankEnd = TrackBank::None; + _previousTrackRollEnd = TrackRoll::None; _previousTrackSlopeEnd = TrackPitch::None; _currentTrackPieceDirection = 0; diff --git a/src/openrct2/ride/RideConstruction.h b/src/openrct2/ride/RideConstruction.h index ba6dcdcc9f..44c3c8e69d 100644 --- a/src/openrct2/ride/RideConstruction.h +++ b/src/openrct2/ride/RideConstruction.h @@ -49,12 +49,12 @@ extern track_type_t _currentTrackPieceType; extern uint8_t _currentTrackSelectionFlags; extern uint32_t _rideConstructionNextArrowPulse; extern TrackPitch _currentTrackSlopeEnd; -extern TrackBank _currentTrackBankEnd; +extern TrackRoll _currentTrackRollEnd; extern uint8_t _currentTrackLiftHill; extern uint8_t _currentTrackAlternative; extern track_type_t _selectedTrackType; -extern TrackBank _previousTrackBankEnd; +extern TrackRoll _previousTrackRollEnd; extern TrackPitch _previousTrackSlopeEnd; extern CoordsXYZ _previousTrackPiece; diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index 33b6f9cc35..81dacc60ac 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -562,7 +562,7 @@ bool TrackElement::IsBlockStart() const return false; } -TrackBank TrackGetActualBank(TileElement* tileElement, TrackBank bank) +TrackRoll TrackGetActualBank(TileElement* tileElement, TrackRoll bank) { auto ride = GetRide(tileElement->AsTrack()->GetRideIndex()); if (ride != nullptr) @@ -573,26 +573,26 @@ TrackBank TrackGetActualBank(TileElement* tileElement, TrackBank bank) return bank; } -TrackBank TrackGetActualBank2(int32_t rideType, bool isInverted, TrackBank bank) +TrackRoll TrackGetActualBank2(int32_t rideType, bool isInverted, TrackRoll bank) { if (GetRideTypeDescriptor(rideType).HasFlag(RIDE_TYPE_FLAG_HAS_ALTERNATIVE_TRACK_TYPE)) { if (isInverted) { - if (bank == TrackBank::None) + if (bank == TrackRoll::None) { - bank = TrackBank::UpsideDown; + bank = TrackRoll::UpsideDown; } - else if (bank == TrackBank::UpsideDown) + else if (bank == TrackRoll::UpsideDown) { - bank = TrackBank::None; + bank = TrackRoll::None; } } } return bank; } -TrackBank TrackGetActualBank3(bool useInvertedSprites, TileElement* tileElement) +TrackRoll TrackGetActualBank3(bool useInvertedSprites, TileElement* tileElement) { auto trackType = tileElement->AsTrack()->GetTrackType(); const auto& ted = GetTrackElementDescriptor(trackType); diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 4f8886426f..3020e6e258 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -26,7 +26,7 @@ using track_type_t = uint16_t; struct ResultWithMessage; -enum class TrackBank : uint8_t +enum class TrackRoll : uint8_t { None = 0, Left = 2, @@ -53,15 +53,15 @@ struct TrackDefinition track_type_t Type; TrackPitch PitchEnd; TrackPitch PitchStart; - TrackBank RollEnd; - TrackBank RollStart; + TrackRoll RollEnd; + TrackRoll RollStart; int8_t PreviewZOffset; }; struct PitchAndRoll { TrackPitch Pitch; - TrackBank Roll; + TrackRoll Roll; }; constexpr bool operator==(const PitchAndRoll& vb1, const PitchAndRoll& vb2) { @@ -686,9 +686,9 @@ bool TrackTypeIsBooster(track_type_t trackType); std::optional GetTrackElementOriginAndApplyChanges( const CoordsXYZD& location, track_type_t type, uint16_t extra_params, TileElement** output_element, uint16_t flags); -TrackBank TrackGetActualBank(TileElement* tileElement, TrackBank bank); -TrackBank TrackGetActualBank2(int32_t rideType, bool isInverted, TrackBank bank); -TrackBank TrackGetActualBank3(bool useInvertedSprites, TileElement* tileElement); +TrackRoll TrackGetActualBank(TileElement* tileElement, TrackRoll bank); +TrackRoll TrackGetActualBank2(int32_t rideType, bool isInverted, TrackRoll bank); +TrackRoll TrackGetActualBank3(bool useInvertedSprites, TileElement* tileElement); ResultWithMessage TrackAddStationElement(CoordsXYZD loc, RideId rideIndex, int32_t flags, bool fromTrackDesign); ResultWithMessage TrackRemoveStationElement(const CoordsXYZD& loc, RideId rideIndex, int32_t flags); diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index ac6a5ded1e..cd0bc5c00b 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -4040,192 +4040,192 @@ static constexpr TrackCurveChain gTrackCurveChain[] = { static_assert(std::size(gTrackCurveChain) == TrackElemType::Count); const TrackDescriptor gTrackDescriptors[186] = { - { true, TrackPitch::Down60, TrackBank::None, TrackCurve::None, TrackPitch::Down60, TrackBank::None, TrackElemType::DiagDown60 }, - { true, TrackPitch::Down60, TrackBank::None, TrackCurve::None, TrackPitch::Down25, TrackBank::None, TrackElemType::DiagDown60ToDown25 }, - { true, TrackPitch::Down60, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::DiagDown60ToFlat }, - { true, TrackPitch::Down25, TrackBank::None, TrackCurve::None, TrackPitch::Down60, TrackBank::None, TrackElemType::DiagDown25ToDown60 }, - { true, TrackPitch::Down25, TrackBank::None, TrackCurve::None, TrackPitch::Down25, TrackBank::None, TrackElemType::DiagDown25 }, - { true, TrackPitch::Down25, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::Left, TrackElemType::DiagDown25ToLeftBank }, - { true, TrackPitch::Down25, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::DiagDown25ToFlat }, - { true, TrackPitch::Down25, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::Right, TrackElemType::DiagDown25ToRightBank }, - { true, TrackPitch::None, TrackBank::Left, TrackCurve::LeftLarge, TrackPitch::None, TrackBank::Left, TrackElemType::LeftEighthBankToOrthogonal }, - { true, TrackPitch::None, TrackBank::Left, TrackCurve::None, TrackPitch::Down25, TrackBank::None, TrackElemType::DiagLeftBankToDown25 }, - { true, TrackPitch::None, TrackBank::Left, TrackCurve::None, TrackPitch::None, TrackBank::Left, TrackElemType::DiagLeftBank }, - { true, TrackPitch::None, TrackBank::Left, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::DiagLeftBankToFlat }, - { true, TrackPitch::None, TrackBank::Left, TrackCurve::None, TrackPitch::Up25, TrackBank::None, TrackElemType::DiagLeftBankToUp25 }, - { true, TrackPitch::None, TrackBank::None, TrackCurve::LeftLarge, TrackPitch::None, TrackBank::None, TrackElemType::LeftEighthToOrthogonal }, - { true, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::Down60, TrackBank::None, TrackElemType::DiagFlatToDown60 }, - { true, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::Down25, TrackBank::None, TrackElemType::DiagFlatToDown25 }, - { true, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::Left, TrackElemType::DiagFlatToLeftBank }, - { true, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::DiagFlat }, - { true, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::Right, TrackElemType::DiagFlatToRightBank }, - { true, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::Up25, TrackBank::None, TrackElemType::DiagFlatToUp25 }, - { true, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::Up60, TrackBank::None, TrackElemType::DiagFlatToUp60 }, - { true, TrackPitch::None, TrackBank::None, TrackCurve::RightLarge, TrackPitch::None, TrackBank::None, TrackElemType::RightEighthToOrthogonal }, - { true, TrackPitch::None, TrackBank::Right, TrackCurve::None, TrackPitch::Down25, TrackBank::None, TrackElemType::DiagRightBankToDown25 }, - { true, TrackPitch::None, TrackBank::Right, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::DiagRightBankToFlat }, - { true, TrackPitch::None, TrackBank::Right, TrackCurve::None, TrackPitch::None, TrackBank::Right, TrackElemType::DiagRightBank }, - { true, TrackPitch::None, TrackBank::Right, TrackCurve::None, TrackPitch::Up25, TrackBank::None, TrackElemType::DiagRightBankToUp25 }, - { true, TrackPitch::None, TrackBank::Right, TrackCurve::RightLarge, TrackPitch::None, TrackBank::Right, TrackElemType::RightEighthBankToOrthogonal }, - { true, TrackPitch::Up25, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::Left, TrackElemType::DiagUp25ToLeftBank }, - { true, TrackPitch::Up25, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::DiagUp25ToFlat }, - { true, TrackPitch::Up25, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::Right, TrackElemType::DiagUp25ToRightBank }, - { true, TrackPitch::Up25, TrackBank::None, TrackCurve::None, TrackPitch::Up25, TrackBank::None, TrackElemType::DiagUp25 }, - { true, TrackPitch::Up25, TrackBank::None, TrackCurve::None, TrackPitch::Up60, TrackBank::None, TrackElemType::DiagUp25ToUp60 }, - { true, TrackPitch::Up60, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::DiagUp60ToFlat }, - { true, TrackPitch::Up60, TrackBank::None, TrackCurve::None, TrackPitch::Up25, TrackBank::None, TrackElemType::DiagUp60ToUp25 }, - { true, TrackPitch::Up60, TrackBank::None, TrackCurve::None, TrackPitch::Up60, TrackBank::None, TrackElemType::DiagUp60 }, - { false, TrackPitch::Down90, TrackBank::None, TrackCurve::LeftSmall, TrackPitch::Down90, TrackBank::None, TrackElemType::LeftQuarterTurn1TileDown90 }, - { false, TrackPitch::Down90, TrackBank::None, TrackCurve::None, TrackPitch::Down90, TrackBank::None, TrackElemType::Down90 }, - { false, TrackPitch::Down90, TrackBank::None, TrackCurve::None, TrackPitch::Down60, TrackBank::None, TrackElemType::Down90ToDown60 }, - { false, TrackPitch::Down90, TrackBank::None, TrackCurve::RightSmall, TrackPitch::Down90, TrackBank::None, TrackElemType::RightQuarterTurn1TileDown90 }, - { false, TrackPitch::Down60, TrackBank::None, TrackCurve::LeftSmall, TrackPitch::Down60, TrackBank::None, TrackElemType::LeftQuarterTurn1TileDown60 }, - { false, TrackPitch::Down60, TrackBank::None, TrackCurve::None, TrackPitch::Down90, TrackBank::None, TrackElemType::Down60ToDown90 }, - { false, TrackPitch::Down60, TrackBank::None, TrackCurve::None, TrackPitch::Down60, TrackBank::None, TrackElemType::Down60 }, - { false, TrackPitch::Down60, TrackBank::None, TrackCurve::None, TrackPitch::Down25, TrackBank::None, TrackElemType::Down60ToDown25 }, - { false, TrackPitch::Down60, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::Down60ToFlat }, - { false, TrackPitch::Down60, TrackBank::None, TrackCurve::RightSmall, TrackPitch::Down60, TrackBank::None, TrackElemType::RightQuarterTurn1TileDown60 }, - { false, TrackPitch::Down25, TrackBank::Left, TrackCurve::LeftSmall, TrackPitch::Down25, TrackBank::Left, TrackElemType::LeftBankedQuarterTurn3TileDown25 }, - { false, TrackPitch::Down25, TrackBank::Left, TrackCurve::Left, TrackPitch::Down25, TrackBank::Left, TrackElemType::LeftBankedQuarterTurn5TileDown25 }, - { false, TrackPitch::Down25, TrackBank::Left, TrackCurve::None, TrackPitch::Down25, TrackBank::Left, TrackElemType::Down25LeftBanked }, - { false, TrackPitch::Down25, TrackBank::Left, TrackCurve::None, TrackPitch::Down25, TrackBank::None, TrackElemType::LeftBankedDown25ToDown25 }, - { false, TrackPitch::Down25, TrackBank::Left, TrackCurve::None, TrackPitch::None, TrackBank::Left, TrackElemType::LeftBankedDown25ToLeftBankedFlat }, - { false, TrackPitch::Down25, TrackBank::Left, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::LeftBankedDown25ToFlat }, - { false, TrackPitch::Down25, TrackBank::None, TrackCurve::LeftSmall, TrackPitch::Down25, TrackBank::None, TrackElemType::LeftQuarterTurn3TilesDown25 }, - { false, TrackPitch::Down25, TrackBank::None, TrackCurve::LeftSmall, TrackPitch::None, TrackBank::Left, TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank }, - { false, TrackPitch::Down25, TrackBank::None, TrackCurve::Left, TrackPitch::Down25, TrackBank::None, TrackElemType::LeftQuarterTurn5TilesDown25 }, - { false, TrackPitch::Down25, TrackBank::None, TrackCurve::None, TrackPitch::Down60, TrackBank::None, TrackElemType::Down25ToDown60 }, - { false, TrackPitch::Down25, TrackBank::None, TrackCurve::None, TrackPitch::Down25, TrackBank::Left, TrackElemType::Down25ToLeftBankedDown25 }, - { false, TrackPitch::Down25, TrackBank::None, TrackCurve::None, TrackPitch::Down25, TrackBank::None, TrackElemType::Down25 }, - { false, TrackPitch::Down25, TrackBank::None, TrackCurve::None, TrackPitch::Down25, TrackBank::Right, TrackElemType::Down25ToRightBankedDown25 }, - { false, TrackPitch::Down25, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::Left, TrackElemType::Down25ToLeftBank }, - { false, TrackPitch::Down25, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::Down25ToFlat }, - { false, TrackPitch::Down25, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::Right, TrackElemType::Down25ToRightBank }, - { false, TrackPitch::Down25, TrackBank::None, TrackCurve::Right, TrackPitch::Down25, TrackBank::None, TrackElemType::RightQuarterTurn5TilesDown25 }, - { false, TrackPitch::Down25, TrackBank::None, TrackCurve::RightSmall, TrackPitch::None, TrackBank::Right, TrackElemType::RightQuarterTurn3TilesDown25ToRightBank }, - { false, TrackPitch::Down25, TrackBank::None, TrackCurve::RightSmall, TrackPitch::Down25, TrackBank::None, TrackElemType::RightQuarterTurn3TilesDown25 }, - { false, TrackPitch::Down25, TrackBank::Right, TrackCurve::None, TrackPitch::Down25, TrackBank::None, TrackElemType::RightBankedDown25ToDown25 }, - { false, TrackPitch::Down25, TrackBank::Right, TrackCurve::None, TrackPitch::Down25, TrackBank::Right, TrackElemType::Down25RightBanked }, - { false, TrackPitch::Down25, TrackBank::Right, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::RightBankedDown25ToFlat }, - { false, TrackPitch::Down25, TrackBank::Right, TrackCurve::None, TrackPitch::None, TrackBank::Right, TrackElemType::RightBankedDown25ToRightBankedFlat }, - { false, TrackPitch::Down25, TrackBank::Right, TrackCurve::Right, TrackPitch::Down25, TrackBank::Right, TrackElemType::RightBankedQuarterTurn5TileDown25 }, - { false, TrackPitch::Down25, TrackBank::Right, TrackCurve::RightSmall, TrackPitch::Down25, TrackBank::Right, TrackElemType::RightBankedQuarterTurn3TileDown25 }, - { false, TrackPitch::None, TrackBank::Left, TrackCurve::LeftSmall, TrackPitch::None, TrackBank::Left, TrackElemType::LeftBankedQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackBank::Left, TrackCurve::LeftSmall, TrackPitch::Up25, TrackBank::None, TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 }, - { false, TrackPitch::None, TrackBank::Left, TrackCurve::Left, TrackPitch::None, TrackBank::Left, TrackElemType::BankedLeftQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackBank::Left, TrackCurve::LeftLarge, TrackPitch::None, TrackBank::Left, TrackElemType::LeftEighthBankToDiag }, - { false, TrackPitch::None, TrackBank::Left, TrackCurve::None, TrackPitch::Down25, TrackBank::Left, TrackElemType::LeftBankedFlatToLeftBankedDown25 }, - { false, TrackPitch::None, TrackBank::Left, TrackCurve::None, TrackPitch::Down25, TrackBank::None, TrackElemType::LeftBankToDown25 }, - { false, TrackPitch::None, TrackBank::Left, TrackCurve::None, TrackPitch::None, TrackBank::Left, TrackElemType::LeftBank }, - { false, TrackPitch::None, TrackBank::Left, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::LeftBankToFlat }, - { false, TrackPitch::None, TrackBank::Left, TrackCurve::None, TrackPitch::Up25, TrackBank::Left, TrackElemType::LeftBankedFlatToLeftBankedUp25 }, - { false, TrackPitch::None, TrackBank::Left, TrackCurve::None, TrackPitch::Up25, TrackBank::None, TrackElemType::LeftBankToUp25 }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::LeftSmall, TrackPitch::None, TrackBank::None, TrackElemType::LeftQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::Left, TrackPitch::None, TrackBank::None, TrackElemType::LeftQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::LeftLarge, TrackPitch::None, TrackBank::None, TrackElemType::LeftEighthToDiag }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::Down60, TrackBank::None, TrackElemType::FlatToDown60 }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::Down25, TrackBank::Left, TrackElemType::FlatToLeftBankedDown25 }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::Down25, TrackBank::None, TrackElemType::FlatToDown25 }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::Down25, TrackBank::Right, TrackElemType::FlatToRightBankedDown25 }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::Left, TrackElemType::FlatToLeftBank }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::Flat }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::LeftVerySmall, TrackPitch::None, TrackBank::None, TrackElemType::LeftQuarterTurn1Tile }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::RightVerySmall, TrackPitch::None, TrackBank::None, TrackElemType::RightQuarterTurn1Tile }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::Right, TrackElemType::FlatToRightBank }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::Up25, TrackBank::Left, TrackElemType::FlatToLeftBankedUp25 }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::Up25, TrackBank::None, TrackElemType::FlatToUp25 }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::Up25, TrackBank::Right, TrackElemType::FlatToRightBankedUp25 }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::Up60, TrackBank::None, TrackElemType::FlatToUp60 }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::RightLarge, TrackPitch::None, TrackBank::None, TrackElemType::RightEighthToDiag }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::Right, TrackPitch::None, TrackBank::None, TrackElemType::RightQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackBank::None, TrackCurve::RightSmall, TrackPitch::None, TrackBank::None, TrackElemType::RightQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackBank::Right, TrackCurve::None, TrackPitch::Down25, TrackBank::None, TrackElemType::RightBankToDown25 }, - { false, TrackPitch::None, TrackBank::Right, TrackCurve::None, TrackPitch::Down25, TrackBank::Right, TrackElemType::RightBankedFlatToRightBankedDown25 }, - { false, TrackPitch::None, TrackBank::Right, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::RightBankToFlat }, - { false, TrackPitch::None, TrackBank::Right, TrackCurve::None, TrackPitch::None, TrackBank::Right, TrackElemType::RightBank }, - { false, TrackPitch::None, TrackBank::Right, TrackCurve::None, TrackPitch::Up25, TrackBank::None, TrackElemType::RightBankToUp25 }, - { false, TrackPitch::None, TrackBank::Right, TrackCurve::None, TrackPitch::Up25, TrackBank::Right, TrackElemType::RightBankedFlatToRightBankedUp25 }, - { false, TrackPitch::None, TrackBank::Right, TrackCurve::RightLarge, TrackPitch::None, TrackBank::Right, TrackElemType::RightEighthBankToDiag }, - { false, TrackPitch::None, TrackBank::Right, TrackCurve::Right, TrackPitch::None, TrackBank::Right, TrackElemType::BankedRightQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackBank::Right, TrackCurve::RightSmall, TrackPitch::None, TrackBank::Right, TrackElemType::RightBankedQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackBank::Right, TrackCurve::RightSmall, TrackPitch::Up25, TrackBank::None, TrackElemType::RightBankToRightQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackBank::Left, TrackCurve::LeftSmall, TrackPitch::Up25, TrackBank::Left, TrackElemType::LeftBankedQuarterTurn3TileUp25 }, - { false, TrackPitch::Up25, TrackBank::Left, TrackCurve::Left, TrackPitch::Up25, TrackBank::Left, TrackElemType::LeftBankedQuarterTurn5TileUp25 }, - { false, TrackPitch::Up25, TrackBank::Left, TrackCurve::None, TrackPitch::None, TrackBank::Left, TrackElemType::LeftBankedUp25ToLeftBankedFlat }, - { false, TrackPitch::Up25, TrackBank::Left, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::LeftBankedUp25ToFlat }, - { false, TrackPitch::Up25, TrackBank::Left, TrackCurve::None, TrackPitch::Up25, TrackBank::Left, TrackElemType::Up25LeftBanked }, - { false, TrackPitch::Up25, TrackBank::Left, TrackCurve::None, TrackPitch::Up25, TrackBank::None, TrackElemType::LeftBankedUp25ToUp25 }, - { false, TrackPitch::Up25, TrackBank::None, TrackCurve::LeftSmall, TrackPitch::Up25, TrackBank::None, TrackElemType::LeftQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackBank::None, TrackCurve::Left, TrackPitch::Up25, TrackBank::None, TrackElemType::LeftQuarterTurn5TilesUp25 }, - { false, TrackPitch::Up25, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::Left, TrackElemType::Up25ToLeftBank }, - { false, TrackPitch::Up25, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::Up25ToFlat }, - { false, TrackPitch::Up25, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::Right, TrackElemType::Up25ToRightBank }, - { false, TrackPitch::Up25, TrackBank::None, TrackCurve::None, TrackPitch::Up25, TrackBank::Left, TrackElemType::Up25ToLeftBankedUp25 }, - { false, TrackPitch::Up25, TrackBank::None, TrackCurve::None, TrackPitch::Up25, TrackBank::None, TrackElemType::Up25 }, - { false, TrackPitch::Up25, TrackBank::None, TrackCurve::None, TrackPitch::Up25, TrackBank::Right, TrackElemType::Up25ToRightBankedUp25 }, - { false, TrackPitch::Up25, TrackBank::None, TrackCurve::None, TrackPitch::Up60, TrackBank::None, TrackElemType::Up25ToUp60 }, - { false, TrackPitch::Up25, TrackBank::None, TrackCurve::Right, TrackPitch::Up25, TrackBank::None, TrackElemType::RightQuarterTurn5TilesUp25 }, - { false, TrackPitch::Up25, TrackBank::None, TrackCurve::RightSmall, TrackPitch::Up25, TrackBank::None, TrackElemType::RightQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackBank::Right, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::RightBankedUp25ToFlat }, - { false, TrackPitch::Up25, TrackBank::Right, TrackCurve::None, TrackPitch::None, TrackBank::Right, TrackElemType::RightBankedUp25ToRightBankedFlat }, - { false, TrackPitch::Up25, TrackBank::Right, TrackCurve::None, TrackPitch::Up25, TrackBank::None, TrackElemType::RightBankedUp25ToUp25 }, - { false, TrackPitch::Up25, TrackBank::Right, TrackCurve::None, TrackPitch::Up25, TrackBank::Right, TrackElemType::Up25RightBanked }, - { false, TrackPitch::Up25, TrackBank::Right, TrackCurve::Right, TrackPitch::Up25, TrackBank::Right, TrackElemType::RightBankedQuarterTurn5TileUp25 }, - { false, TrackPitch::Up25, TrackBank::Right, TrackCurve::RightSmall, TrackPitch::Up25, TrackBank::Right, TrackElemType::RightBankedQuarterTurn3TileUp25 }, - { false, TrackPitch::Up60, TrackBank::None, TrackCurve::LeftSmall, TrackPitch::Up60, TrackBank::None, TrackElemType::LeftQuarterTurn1TileUp60 }, - { false, TrackPitch::Up60, TrackBank::None, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::Up60ToFlat }, - { false, TrackPitch::Up60, TrackBank::None, TrackCurve::None, TrackPitch::Up25, TrackBank::None, TrackElemType::Up60ToUp25 }, - { false, TrackPitch::Up60, TrackBank::None, TrackCurve::None, TrackPitch::Up60, TrackBank::None, TrackElemType::Up60 }, - { false, TrackPitch::Up60, TrackBank::None, TrackCurve::None, TrackPitch::Up90, TrackBank::None, TrackElemType::Up60ToUp90 }, - { false, TrackPitch::Up60, TrackBank::None, TrackCurve::RightSmall, TrackPitch::Up60, TrackBank::None, TrackElemType::RightQuarterTurn1TileUp60 }, - { false, TrackPitch::Up90, TrackBank::None, TrackCurve::LeftSmall, TrackPitch::Up90, TrackBank::None, TrackElemType::LeftQuarterTurn1TileUp90 }, - { false, TrackPitch::Up90, TrackBank::None, TrackCurve::None, TrackPitch::Up60, TrackBank::None, TrackElemType::Up90ToUp60 }, - { false, TrackPitch::Up90, TrackBank::None, TrackCurve::None, TrackPitch::Up90, TrackBank::None, TrackElemType::Up90 }, - { false, TrackPitch::Up90, TrackBank::None, TrackCurve::RightSmall, TrackPitch::Up90, TrackBank::None, TrackElemType::RightQuarterTurn1TileUp90 }, - { false, TrackPitch::Up25, TrackBank::None, TrackCurve::LeftLarge, TrackPitch::Up25, TrackBank::None, TrackElemType::LeftEighthToDiagUp25 }, // TrackElemType::LeftEighthToDiagUp25 - { false, TrackPitch::Up25, TrackBank::None, TrackCurve::RightLarge, TrackPitch::Up25, TrackBank::None, TrackElemType::RightEighthToDiagUp25 }, // TrackElemType::RightEighthToDiagUp25 - { false, TrackPitch::Down25, TrackBank::None, TrackCurve::LeftLarge, TrackPitch::Down25, TrackBank::None, TrackElemType::LeftEighthToDiagDown25 }, // TrackElemType::LeftEighthToDiagDown25 - { false, TrackPitch::Down25, TrackBank::None, TrackCurve::RightLarge, TrackPitch::Down25, TrackBank::None, TrackElemType::RightEighthToDiagDown25 }, // TrackElemType::RightEighthToDiagDown25 - { true, TrackPitch::Up25, TrackBank::None, TrackCurve::LeftLarge, TrackPitch::Up25, TrackBank::None, TrackElemType::LeftEighthToOrthogonalUp25 }, // TrackElemType::LeftEighthToOrthogonalUp25 - { true, TrackPitch::Up25, TrackBank::None, TrackCurve::RightLarge, TrackPitch::Up25, TrackBank::None, TrackElemType::RightEighthToOrthogonalUp25 }, // TrackElemType::RightEighthToOrthogonalUp25 - { true, TrackPitch::Down25, TrackBank::None, TrackCurve::LeftLarge, TrackPitch::Down25, TrackBank::None, TrackElemType::LeftEighthToOrthogonalDown25 }, // TrackElemType::LeftEighthToOrthogonalDown25 - { true, TrackPitch::Down25, TrackBank::None, TrackCurve::RightLarge, TrackPitch::Down25, TrackBank::None, TrackElemType::RightEighthToOrthogonalDown25 }, // TrackElemType::RightEighthToOrthogonalDown25 - { true, TrackPitch::Up25, TrackBank::None, TrackCurve::None, TrackPitch::Up25, TrackBank::Left, TrackElemType::DiagUp25ToLeftBankedUp25 }, // TrackElemType::DiagUp25ToLeftBankedUp25 - { true, TrackPitch::Up25, TrackBank::None, TrackCurve::None, TrackPitch::Up25, TrackBank::Right, TrackElemType::DiagUp25ToRightBankedUp25 }, // TrackElemType::DiagUp25ToRightBankedUp25 - { true, TrackPitch::Up25, TrackBank::Left, TrackCurve::None, TrackPitch::Up25, TrackBank::None, TrackElemType::DiagLeftBankedUp25ToUp25 }, // TrackElemType::DiagLeftBankedUp25ToUp25 - { true, TrackPitch::Up25, TrackBank::Right, TrackCurve::None, TrackPitch::Up25, TrackBank::None, TrackElemType::DiagRightBankedUp25ToUp25 }, // TrackElemType::DiagRightBankedUp25ToUp25 - { true, TrackPitch::Down25, TrackBank::None, TrackCurve::None, TrackPitch::Down25, TrackBank::Left, TrackElemType::DiagDown25ToLeftBankedDown25 }, // TrackElemType::DiagDown25ToLeftBankedDown25 - { true, TrackPitch::Down25, TrackBank::None, TrackCurve::None, TrackPitch::Down25, TrackBank::Right, TrackElemType::DiagDown25ToRightBankedDown25 }, // TrackElemType::DiagDown25ToRightBankedDown25 - { true, TrackPitch::Down25, TrackBank::Left, TrackCurve::None, TrackPitch::Down25, TrackBank::None, TrackElemType::DiagLeftBankedDown25ToDown25 }, // TrackElemType::DiagLeftBankedDown25ToDown25 - { true, TrackPitch::Down25, TrackBank::Right, TrackCurve::None, TrackPitch::Down25, TrackBank::None, TrackElemType::DiagRightBankedDown25ToDown25 }, // TrackElemType::DiagRightBankedDown25ToDown25 - { true, TrackPitch::None, TrackBank::Left, TrackCurve::None, TrackPitch::Up25, TrackBank::Left, TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - { true, TrackPitch::None, TrackBank::Right, TrackCurve::None, TrackPitch::Up25, TrackBank::Right, TrackElemType::DiagRightBankedFlatToRightBankedUp25 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - { true, TrackPitch::Up25, TrackBank::Left, TrackCurve::None, TrackPitch::None, TrackBank::Left, TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - { true, TrackPitch::Up25, TrackBank::Right, TrackCurve::None, TrackPitch::None, TrackBank::Right, TrackElemType::DiagRightBankedUp25ToRightBankedFlat }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - { true, TrackPitch::None, TrackBank::Left, TrackCurve::None, TrackPitch::Down25, TrackBank::Left, TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - { true, TrackPitch::None, TrackBank::Right, TrackCurve::None, TrackPitch::Down25, TrackBank::Right, TrackElemType::DiagRightBankedFlatToRightBankedDown25 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - { true, TrackPitch::Down25, TrackBank::Left, TrackCurve::None, TrackPitch::None, TrackBank::Left, TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - { true, TrackPitch::Down25, TrackBank::Right, TrackCurve::None, TrackPitch::None, TrackBank::Right, TrackElemType::DiagRightBankedDown25ToRightBankedFlat }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - { true, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::Up25, TrackBank::Left, TrackElemType::DiagFlatToLeftBankedUp25 }, // TrackElemType::DiagFlatToLeftBankedUp25 - { true, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::Up25, TrackBank::Right, TrackElemType::DiagFlatToRightBankedUp25 }, // TrackElemType::DiagFlatToRightBankedUp25 - { true, TrackPitch::Up25, TrackBank::Left, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::DiagLeftBankedUp25ToFlat }, // TrackElemType::DiagLeftBankedUp25ToFlat - { true, TrackPitch::Up25, TrackBank::Right, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::DiagRightBankedUp25ToFlat }, // TrackElemType::DiagRightBankedUp25ToFlat - { true, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::Down25, TrackBank::Left, TrackElemType::DiagFlatToLeftBankedDown25 }, // TrackElemType::DiagFlatToLeftBankedDown25 - { true, TrackPitch::None, TrackBank::None, TrackCurve::None, TrackPitch::Down25, TrackBank::Right, TrackElemType::DiagFlatToRightBankedDown25 }, // TrackElemType::DiagFlatToRightBankedDown25 - { true, TrackPitch::Down25, TrackBank::Left, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::DiagLeftBankedDown25ToFlat }, // TrackElemType::DiagLeftBankedDown25ToFlat - { true, TrackPitch::Down25, TrackBank::Right, TrackCurve::None, TrackPitch::None, TrackBank::None, TrackElemType::DiagRightBankedDown25ToFlat }, // TrackElemType::DiagRightBankedDown25ToFlat - { true, TrackPitch::Up25, TrackBank::Left, TrackCurve::None, TrackPitch::Up25, TrackBank::Left, TrackElemType::DiagUp25LeftBanked }, // TrackElemType::Up25LeftBanked - { true, TrackPitch::Up25, TrackBank::Right, TrackCurve::None, TrackPitch::Up25, TrackBank::Right, TrackElemType::DiagUp25RightBanked }, // TrackElemType::Up25RightBanked - { true, TrackPitch::Down25, TrackBank::Left, TrackCurve::None, TrackPitch::Down25, TrackBank::Left, TrackElemType::DiagDown25LeftBanked }, // TrackElemType::Down25LeftBanked - { true, TrackPitch::Down25, TrackBank::Right, TrackCurve::None, TrackPitch::Down25, TrackBank::Right, TrackElemType::DiagDown25RightBanked }, // TrackElemType::Down25RightBanked - { false, TrackPitch::Up25, TrackBank::Left, TrackCurve::LeftLarge, TrackPitch::Up25, TrackBank::Left, TrackElemType::LeftEighthBankToDiagUp25 }, // TrackElemType::LeftEighthBankToDiagUp25 - { false, TrackPitch::Up25, TrackBank::Right, TrackCurve::RightLarge, TrackPitch::Up25, TrackBank::Right, TrackElemType::RightEighthBankToDiagUp25 }, // TrackElemType::RightEighthBankToDiagUp25 - { false, TrackPitch::Down25, TrackBank::Left, TrackCurve::LeftLarge, TrackPitch::Down25, TrackBank::Left, TrackElemType::LeftEighthBankToDiagDown25 }, // TrackElemType::LeftEighthBankToDiagDown25 - { false, TrackPitch::Down25, TrackBank::Right, TrackCurve::RightLarge, TrackPitch::Down25, TrackBank::Right, TrackElemType::RightEighthBankToDiagDown25 }, // TrackElemType::RightEighthBankToDiagDown25 - { true, TrackPitch::Up25, TrackBank::Left, TrackCurve::LeftLarge, TrackPitch::Up25, TrackBank::Left, TrackElemType::LeftEighthBankToOrthogonalUp25 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 - { true, TrackPitch::Up25, TrackBank::Right, TrackCurve::RightLarge, TrackPitch::Up25, TrackBank::Right, TrackElemType::RightEighthBankToOrthogonalUp25 }, // TrackElemType::RightEighthBankToOrthogonalUp25 - { true, TrackPitch::Down25, TrackBank::Left, TrackCurve::LeftLarge, TrackPitch::Down25, TrackBank::Left, TrackElemType::LeftEighthBankToOrthogonalDown25 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 - { true, TrackPitch::Down25, TrackBank::Right, TrackCurve::RightLarge, TrackPitch::Down25, TrackBank::Right, TrackElemType::RightEighthBankToOrthogonalDown25 }, // TrackElemType::RightEighthBankToOrthogonalDown25 + { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::DiagDown60 }, + { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagDown60ToDown25 }, + { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagDown60ToFlat }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::DiagDown25ToDown60 }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagDown25 }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagDown25ToLeftBank }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagDown25ToFlat }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagDown25ToRightBank }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftEighthBankToOrthogonal }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagLeftBankToDown25 }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagLeftBank }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagLeftBankToFlat }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagLeftBankToUp25 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::None, TrackElemType::LeftEighthToOrthogonal }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::DiagFlatToDown60 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagFlatToDown25 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagFlatToLeftBank }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagFlat }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagFlatToRightBank }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagFlatToUp25 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::DiagFlatToUp60 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::None, TrackElemType::RightEighthToOrthogonal }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagRightBankToDown25 }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagRightBankToFlat }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagRightBank }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagRightBankToUp25 }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::Right, TrackElemType::RightEighthBankToOrthogonal }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagUp25ToLeftBank }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagUp25ToFlat }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagUp25ToRightBank }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagUp25 }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::DiagUp25ToUp60 }, + { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagUp60ToFlat }, + { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagUp60ToUp25 }, + { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::DiagUp60 }, + { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down90, TrackRoll::None, TrackElemType::LeftQuarterTurn1TileDown90 }, + { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::None, TrackPitch::Down90, TrackRoll::None, TrackElemType::Down90 }, + { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::Down90ToDown60 }, + { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down90, TrackRoll::None, TrackElemType::RightQuarterTurn1TileDown90 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down60, TrackRoll::None, TrackElemType::LeftQuarterTurn1TileDown60 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down90, TrackRoll::None, TrackElemType::Down60ToDown90 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::Down60 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::Down60ToDown25 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Down60ToFlat }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down60, TrackRoll::None, TrackElemType::RightQuarterTurn1TileDown60 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn3TileDown25 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::Left, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn5TileDown25 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::Down25LeftBanked }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftBankedDown25ToDown25 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftBankedDown25ToLeftBankedFlat }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::LeftBankedDown25ToFlat }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftQuarterTurn3TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::Left, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftQuarterTurn5TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::Down25ToDown60 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::Down25ToLeftBankedDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::Down25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::Down25ToRightBankedDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::Down25ToLeftBank }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Down25ToFlat }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::Down25ToRightBank }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::Right, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightQuarterTurn5TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::Right, TrackElemType::RightQuarterTurn3TilesDown25ToRightBank }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightQuarterTurn3TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightBankedDown25ToDown25 }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::Down25RightBanked }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::RightBankedDown25ToFlat }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::RightBankedDown25ToRightBankedFlat }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::Right, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn5TileDown25 }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn3TileDown25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::Left, TrackPitch::None, TrackRoll::Left, TrackElemType::BankedLeftQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftEighthBankToDiag }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftBankedFlatToLeftBankedDown25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftBankToDown25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftBank }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::LeftBankToFlat }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftBankedFlatToLeftBankedUp25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftBankToUp25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::None, TrackElemType::LeftQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::Left, TrackPitch::None, TrackRoll::None, TrackElemType::LeftQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::None, TrackElemType::LeftEighthToDiag }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::FlatToDown60 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::FlatToLeftBankedDown25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::FlatToDown25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::FlatToRightBankedDown25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::FlatToLeftBank }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Flat }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftVerySmall, TrackPitch::None, TrackRoll::None, TrackElemType::LeftQuarterTurn1Tile }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightVerySmall, TrackPitch::None, TrackRoll::None, TrackElemType::RightQuarterTurn1Tile }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::FlatToRightBank }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::FlatToLeftBankedUp25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::FlatToUp25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::FlatToRightBankedUp25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::FlatToUp60 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::None, TrackElemType::RightEighthToDiag }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::Right, TrackPitch::None, TrackRoll::None, TrackElemType::RightQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::None, TrackElemType::RightQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightBankToDown25 }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightBankedFlatToRightBankedDown25 }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::RightBankToFlat }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::RightBank }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightBankToUp25 }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightBankedFlatToRightBankedUp25 }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::Right, TrackElemType::RightEighthBankToDiag }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::Right, TrackPitch::None, TrackRoll::Right, TrackElemType::BankedRightQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightBankToRightQuarterTurn3TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn3TileUp25 }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::Left, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn5TileUp25 }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftBankedUp25ToLeftBankedFlat }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::LeftBankedUp25ToFlat }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::Up25LeftBanked }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftBankedUp25ToUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftQuarterTurn3TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::Left, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftQuarterTurn5TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::Up25ToLeftBank }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Up25ToFlat }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::Up25ToRightBank }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::Up25ToLeftBankedUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::Up25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::Up25ToRightBankedUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::Up25ToUp60 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::Right, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightQuarterTurn5TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightQuarterTurn3TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::RightBankedUp25ToFlat }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::RightBankedUp25ToRightBankedFlat }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightBankedUp25ToUp25 }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::Up25RightBanked }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::Right, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn5TileUp25 }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn3TileUp25 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up60, TrackRoll::None, TrackElemType::LeftQuarterTurn1TileUp60 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Up60ToFlat }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::Up60ToUp25 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::Up60 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up90, TrackRoll::None, TrackElemType::Up60ToUp90 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up60, TrackRoll::None, TrackElemType::RightQuarterTurn1TileUp60 }, + { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up90, TrackRoll::None, TrackElemType::LeftQuarterTurn1TileUp90 }, + { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::Up90ToUp60 }, + { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::None, TrackPitch::Up90, TrackRoll::None, TrackElemType::Up90 }, + { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up90, TrackRoll::None, TrackElemType::RightQuarterTurn1TileUp90 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftEighthToDiagUp25 }, // TrackElemType::LeftEighthToDiagUp25 + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightEighthToDiagUp25 }, // TrackElemType::RightEighthToDiagUp25 + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftEighthToDiagDown25 }, // TrackElemType::LeftEighthToDiagDown25 + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightEighthToDiagDown25 }, // TrackElemType::RightEighthToDiagDown25 + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftEighthToOrthogonalUp25 }, // TrackElemType::LeftEighthToOrthogonalUp25 + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightEighthToOrthogonalUp25 }, // TrackElemType::RightEighthToOrthogonalUp25 + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftEighthToOrthogonalDown25 }, // TrackElemType::LeftEighthToOrthogonalDown25 + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightEighthToOrthogonalDown25 }, // TrackElemType::RightEighthToOrthogonalDown25 + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::DiagUp25ToLeftBankedUp25 }, // TrackElemType::DiagUp25ToLeftBankedUp25 + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::DiagUp25ToRightBankedUp25 }, // TrackElemType::DiagUp25ToRightBankedUp25 + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagLeftBankedUp25ToUp25 }, // TrackElemType::DiagLeftBankedUp25ToUp25 + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagRightBankedUp25ToUp25 }, // TrackElemType::DiagRightBankedUp25ToUp25 + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::DiagDown25ToLeftBankedDown25 }, // TrackElemType::DiagDown25ToLeftBankedDown25 + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::DiagDown25ToRightBankedDown25 }, // TrackElemType::DiagDown25ToRightBankedDown25 + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagLeftBankedDown25ToDown25 }, // TrackElemType::DiagLeftBankedDown25ToDown25 + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagRightBankedDown25ToDown25 }, // TrackElemType::DiagRightBankedDown25ToDown25 + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::DiagRightBankedFlatToRightBankedUp25 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagRightBankedUp25ToRightBankedFlat }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::DiagRightBankedFlatToRightBankedDown25 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagRightBankedDown25ToRightBankedFlat }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::DiagFlatToLeftBankedUp25 }, // TrackElemType::DiagFlatToLeftBankedUp25 + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::DiagFlatToRightBankedUp25 }, // TrackElemType::DiagFlatToRightBankedUp25 + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagLeftBankedUp25ToFlat }, // TrackElemType::DiagLeftBankedUp25ToFlat + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagRightBankedUp25ToFlat }, // TrackElemType::DiagRightBankedUp25ToFlat + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::DiagFlatToLeftBankedDown25 }, // TrackElemType::DiagFlatToLeftBankedDown25 + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::DiagFlatToRightBankedDown25 }, // TrackElemType::DiagFlatToRightBankedDown25 + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagLeftBankedDown25ToFlat }, // TrackElemType::DiagLeftBankedDown25ToFlat + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagRightBankedDown25ToFlat }, // TrackElemType::DiagRightBankedDown25ToFlat + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::DiagUp25LeftBanked }, // TrackElemType::Up25LeftBanked + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::DiagUp25RightBanked }, // TrackElemType::Up25RightBanked + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::DiagDown25LeftBanked }, // TrackElemType::Down25LeftBanked + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::DiagDown25RightBanked }, // TrackElemType::Down25RightBanked + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftEighthBankToDiagUp25 }, // TrackElemType::LeftEighthBankToDiagUp25 + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightEighthBankToDiagUp25 }, // TrackElemType::RightEighthBankToDiagUp25 + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftEighthBankToDiagDown25 }, // TrackElemType::LeftEighthBankToDiagDown25 + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightEighthBankToDiagDown25 }, // TrackElemType::RightEighthBankToDiagDown25 + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftEighthBankToOrthogonalUp25 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightEighthBankToOrthogonalUp25 }, // TrackElemType::RightEighthBankToOrthogonalUp25 + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftEighthBankToOrthogonalDown25 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightEighthBankToOrthogonalDown25 }, // TrackElemType::RightEighthBankToOrthogonalDown25 }; /** rct2: 0x00993D1C */ @@ -6305,345 +6305,345 @@ static_assert(std::size(TrackFlags) == TrackElemType::Count); static constexpr TrackDefinition TrackDefinitions[] = { // TYPE VANGLE END VANGLE START BANK END BANK START PREVIEW Z OFFSET - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_FLAT - { TRACK_STATION_END, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_END_STATION - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_BEGIN_STATION - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_MIDDLE_STATION - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::None, TrackBank::None, 0 }, // ELEM_25_DEG_UP - { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up60, TrackBank::None, TrackBank::None, 0 }, // ELEM_60_DEG_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_FLAT_TO_25_DEG_UP - { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up25, TrackBank::None, TrackBank::None, 0 }, // ELEM_25_DEG_UP_TO_60_DEG_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up60, TrackBank::None, TrackBank::None, 0 }, // ELEM_60_DEG_UP_TO_25_DEG_UP - { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackBank::None, TrackBank::None, 0 }, // ELEM_25_DEG_UP_TO_FLAT - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::None, TrackBank::None, 0 }, // ELEM_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down60, TrackBank::None, TrackBank::None, 0 }, // ELEM_60_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down25, TrackBank::None, TrackBank::None, 0 }, // ELEM_25_DEG_DOWN_TO_60_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down60, TrackBank::None, TrackBank::None, 0 }, // ELEM_60_DEG_DOWN_TO_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackBank::None, TrackBank::None, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::Left, TrackBank::None, 0 }, // ELEM_FLAT_TO_LEFT_BANK - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::Right, TrackBank::None, 0 }, // ELEM_FLAT_TO_RIGHT_BANK - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::Left, 0 }, // ELEM_LEFT_BANK_TO_FLAT - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::Right, 0 }, // ELEM_RIGHT_BANK_TO_FLAT - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackBank::None, TrackBank::Left, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackBank::None, TrackBank::Right, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_UP - { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackBank::Left, TrackBank::None, 0 }, // ELEM_25_DEG_UP_TO_LEFT_BANK - { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackBank::Right, TrackBank::None, 0 }, // ELEM_25_DEG_UP_TO_RIGHT_BANK - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackBank::None, TrackBank::Left, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackBank::None, TrackBank::Right, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackBank::Left, TrackBank::None, 0 }, // ELEM_25_DEG_DOWN_TO_LEFT_BANK - { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackBank::Right, TrackBank::None, 0 }, // ELEM_25_DEG_DOWN_TO_RIGHT_BANK - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_BANK - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_BANK - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN - { TRACK_S_BEND, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_S_BEND_LEFT - { TRACK_S_BEND, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_S_BEND_RIGHT - { TRACK_VERTICAL_LOOP, TrackPitch::Down25, TrackPitch::Up25, TrackBank::None, TrackBank::None, -48 }, // ELEM_LEFT_VERTICAL_LOOP - { TRACK_VERTICAL_LOOP, TrackPitch::Down25, TrackPitch::Up25, TrackBank::None, TrackBank::None, -48 }, // ELEM_RIGHT_VERTICAL_LOOP - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_BANK - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE - { TRACK_TWIST, TrackPitch::None, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_LEFT_TWIST_DOWN_TO_UP - { TRACK_TWIST, TrackPitch::None, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_RIGHT_TWIST_DOWN_TO_UP - { TRACK_TWIST, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, 0 }, // ELEM_LEFT_TWIST_UP_TO_DOWN - { TRACK_TWIST, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, 0 }, // ELEM_RIGHT_TWIST_UP_TO_DOWN - { TRACK_HALF_LOOP, TrackPitch::None, TrackPitch::Up25, TrackBank::UpsideDown, TrackBank::None, 64 }, // ELEM_HALF_LOOP_UP - { TRACK_HALF_LOOP, TrackPitch::Down25, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, -64 }, // ELEM_HALF_LOOP_DOWN - { TRACK_CORKSCREW, TrackPitch::None, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_LEFT_CORKSCREW_UP - { TRACK_CORKSCREW, TrackPitch::None, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_RIGHT_CORKSCREW_UP - { TRACK_CORKSCREW, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, -32 }, // ELEM_LEFT_CORKSCREW_DOWN - { TRACK_CORKSCREW, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, -32 }, // ELEM_RIGHT_CORKSCREW_DOWN - { TRACK_FLAT, TrackPitch::Up60, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_FLAT_TO_60_DEG_UP - { TRACK_FLAT, TrackPitch::None, TrackPitch::Up60, TrackBank::None, TrackBank::None, 0 }, // ELEM_60_DEG_UP_TO_FLAT - { TRACK_FLAT, TrackPitch::Down60, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN - { TRACK_FLAT, TrackPitch::None, TrackPitch::Down60, TrackBank::None, TrackBank::None, 0 }, // ELEM_60_DEG_DOWN_TO_FLAT - { TRACK_TOWER_BASE, TrackPitch::Tower, TrackPitch::Tower, TrackBank::None, TrackBank::None, 0 }, // ELEM_TOWER_BASE - { TRACK_TOWER_BASE, TrackPitch::Tower, TrackPitch::Tower, TrackBank::None, TrackBank::None, 0 }, // ELEM_TOWER_SECTION - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_FLAT_COVERED - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::None, TrackBank::None, 0 }, // ELEM_25_DEG_UP_COVERED - { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up60, TrackBank::None, TrackBank::None, 0 }, // ELEM_60_DEG_UP_COVERED - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_FLAT_TO_25_DEG_UP_COVERED - { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up25, TrackBank::None, TrackBank::None, 0 }, // ELEM_25_DEG_UP_TO_60_DEG_UP_COVERED - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up60, TrackBank::None, TrackBank::None, 0 }, // ELEM_60_DEG_UP_TO_25_DEG_UP_COVERED - { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackBank::None, TrackBank::None, 0 }, // ELEM_25_DEG_UP_TO_FLAT_COVERED - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::None, TrackBank::None, 0 }, // ELEM_25_DEG_DOWN_COVERED - { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down60, TrackBank::None, TrackBank::None, 0 }, // ELEM_60_DEG_DOWN_COVERED - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN_COVERED - { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down25, TrackBank::None, TrackBank::None, 0 }, // ELEM_25_DEG_DOWN_TO_60_DEG_DOWN_COVERED - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down60, TrackBank::None, TrackBank::None, 0 }, // ELEM_60_DEG_DOWN_TO_25_DEG_DOWN_COVERED - { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackBank::None, TrackBank::None, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT_COVERED - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_S_BEND_LEFT_COVERED - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_S_BEND_RIGHT_COVERED - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_COVERED - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_COVERED - { TRACK_HELIX_UP_BANKED_HALF, TrackPitch::None, TrackPitch::None, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL - { TRACK_HELIX_UP_BANKED_HALF, TrackPitch::None, TrackPitch::None, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL - { TRACK_HELIX_DOWN_BANKED_HALF, TrackPitch::None, TrackPitch::None, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL - { TRACK_HELIX_DOWN_BANKED_HALF, TrackPitch::None, TrackPitch::None, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL - { TRACK_HELIX_UP_BANKED_HALF, TrackPitch::None, TrackPitch::None, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE - { TRACK_HELIX_UP_BANKED_HALF, TrackPitch::None, TrackPitch::None, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE - { TRACK_HELIX_DOWN_BANKED_HALF, TrackPitch::None, TrackPitch::None, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE - { TRACK_HELIX_DOWN_BANKED_HALF, TrackPitch::None, TrackPitch::None, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE - { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up60, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_UP - { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up60, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_UP - { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down60, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down60, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_DOWN - { TRACK_BRAKES, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_BRAKES - { TRACK_BOOSTER, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_BOOSTER - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // TrackElemType::Maze - { TRACK_HELIX_UP_BANKED_QUARTER, TrackPitch::None, TrackPitch::None, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP - { TRACK_HELIX_UP_BANKED_QUARTER, TrackPitch::None, TrackPitch::None, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP - { TRACK_HELIX_DOWN_BANKED_QUARTER, TrackPitch::None, TrackPitch::None, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN - { TRACK_HELIX_DOWN_BANKED_QUARTER, TrackPitch::None, TrackPitch::None, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_DOWN - { TRACK_HELIX_UP_UNBANKED_QUARTER, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_UP - { TRACK_HELIX_UP_UNBANKED_QUARTER, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_UP - { TRACK_HELIX_DOWN_UNBANKED_QUARTER, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN - { TRACK_HELIX_DOWN_UNBANKED_QUARTER, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_25_DEG_UP_LEFT_BANKED - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_25_DEG_UP_RIGHT_BANKED - { TRACK_WATERFALL, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_WATERFALL - { TRACK_RAPIDS, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_RAPIDS - { TRACK_ON_RIDE_PHOTO, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_ON_RIDE_PHOTO - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_25_DEG_DOWN_LEFT_BANKED - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_25_DEG_DOWN_RIGHT_BANKED - { TRACK_WATER_SPLASH, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_WATER_SPLASH - { TRACK_FLAT, TrackPitch::Up60, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_FLAT_TO_60_DEG_UP_LONG_BASE - { TRACK_FLAT, TrackPitch::None, TrackPitch::Up60, TrackBank::None, TrackBank::None, 0 }, // ELEM_60_DEG_UP_TO_FLAT_LONG_BASE - { TRACK_WHIRLPOOL, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_WHIRLPOOL - { TRACK_FLAT, TrackPitch::None, TrackPitch::Down60, TrackBank::None, TrackBank::None, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN_LONG_BASE - { TRACK_FLAT, TrackPitch::Down60, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_60_DEG_UP_TO_FLAT_LONG_BASE_122 - { TRACK_LIFT_HILL_CABLE, TrackPitch::Down60, TrackPitch::Up25, TrackBank::None, TrackBank::None, 0 }, // ELEM_CABLE_LIFT_HILL - { TRACK_REVERSE_FREEFALL, TrackPitch::ReverseFreefall, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_REVERSE_FREEFALL_SLOPE - { TRACK_REVERSE_FREEFALL, TrackPitch::ReverseFreefall, TrackPitch::ReverseFreefall, TrackBank::None,TrackBank::None, 0 }, // ELEM_REVERSE_FREEFALL_VERTICAL - { TRACK_FLAT, TrackPitch::Up90, TrackPitch::Up90, TrackBank::None, TrackBank::None, 0 }, // ELEM_90_DEG_UP - { TRACK_FLAT, TrackPitch::Down90, TrackPitch::Down90, TrackBank::None, TrackBank::None, 0 }, // ELEM_90_DEG_DOWN - { TRACK_FLAT, TrackPitch::Up90, TrackPitch::Up60, TrackBank::None, TrackBank::None, 0 }, // ELEM_60_DEG_UP_TO_90_DEG_UP - { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down90, TrackBank::None, TrackBank::None, 0 }, // ELEM_90_DEG_DOWN_TO_60_DEG_DOWN - { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up90, TrackBank::None, TrackBank::None, 0 }, // ELEM_90_DEG_UP_TO_60_DEG_UP - { TRACK_FLAT, TrackPitch::Down90, TrackPitch::Down60, TrackBank::None, TrackBank::None, 0 }, // ELEM_60_DEG_DOWN_TO_90_DEG_DOWN - { TRACK_BRAKE_FOR_DROP, TrackPitch::Down60, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_BRAKE_FOR_DROP - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_EIGHTH_TO_DIAG - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_EIGHTH_TO_DIAG - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_EIGHTH_TO_ORTHOGONAL - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_EIGHTH_BANK_TO_DIAG - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_EIGHTH_BANK_TO_DIAG - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_FLAT - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_25_DEG_UP - { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up60, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_60_DEG_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_FLAT_TO_25_DEG_UP - { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up25, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_25_DEG_UP_TO_60_DEG_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up60, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_60_DEG_UP_TO_25_DEG_UP - { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_25_DEG_UP_TO_FLAT - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down60, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_60_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_FLAT_TO_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down25, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_60_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down60, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_60_DEG_DOWN_TO_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_FLAT - { TRACK_FLAT, TrackPitch::Up60, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_FLAT_TO_60_DEG_UP - { TRACK_FLAT, TrackPitch::None, TrackPitch::Up60, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_60_DEG_UP_TO_FLAT - { TRACK_FLAT, TrackPitch::Down60, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_FLAT_TO_60_DEG_DOWN - { TRACK_FLAT, TrackPitch::None, TrackPitch::Down60, TrackBank::None, TrackBank::None, 0 }, // ELEM_DIAG_60_DEG_DOWN_TO_FLAT - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::Left, TrackBank::None, 0 }, // ELEM_DIAG_FLAT_TO_LEFT_BANK - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::Right, TrackBank::None, 0 }, // ELEM_DIAG_FLAT_TO_RIGHT_BANK - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::Left, 0 }, // ELEM_DIAG_LEFT_BANK_TO_FLAT - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::Right, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_FLAT - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackBank::None, TrackBank::Left, 0 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackBank::None, TrackBank::Right, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP - { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackBank::Left, TrackBank::None, 0 }, // ELEM_DIAG_25_DEG_UP_TO_LEFT_BANK - { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackBank::Right, TrackBank::None, 0 }, // ELEM_DIAG_25_DEG_UP_TO_RIGHT_BANK - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackBank::None, TrackBank::Left, 0 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackBank::None, TrackBank::Right, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackBank::Left, TrackBank::None, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK - { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackBank::Right, TrackBank::None, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_DIAG_LEFT_BANK - { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_DIAG_RIGHT_BANK - { TRACK_LOG_FLUME_REVERSER, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_LOG_FLUME_REVERSER - { TRACK_SPINNING_TUNNEL, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_SPINNING_TUNNEL - { TRACK_BARREL_ROLL, TrackPitch::None, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_LEFT_BARREL_ROLL_UP_TO_DOWN - { TRACK_BARREL_ROLL, TrackPitch::None, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_RIGHT_BARREL_ROLL_UP_TO_DOWN - { TRACK_BARREL_ROLL, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, 0 }, // ELEM_LEFT_BARREL_ROLL_DOWN_TO_UP - { TRACK_BARREL_ROLL, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, 0 }, // ELEM_RIGHT_BARREL_ROLL_DOWN_TO_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackBank::None, TrackBank::Left, 0 }, // ELEM_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackBank::None, TrackBank::Right, 0 }, // ELEM_RIGHT_BANK_TO_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP - { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackBank::Left, TrackBank::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_LEFT_BANK - { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackBank::Right, TrackBank::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_RIGHT_BANK - { TRACK_POWERED_LIFT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::None, TrackBank::None, 0 }, // ELEM_POWERED_LIFT - {TRACK_HALF_LOOP_LARGE, TrackPitch::None, TrackPitch::Up25, TrackBank::UpsideDown, TrackBank::None, 64 }, // ELEM_LEFT_LARGE_HALF_LOOP_UP - {TRACK_HALF_LOOP_LARGE, TrackPitch::None, TrackPitch::Up25, TrackBank::UpsideDown, TrackBank::None, 64 }, // ELEM_RIGHT_LARGE_HALF_LOOP_UP - {TRACK_HALF_LOOP_LARGE, TrackPitch::Down25, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, -64 }, // ELEM_RIGHT_LARGE_HALF_LOOP_DOWN - {TRACK_HALF_LOOP_LARGE, TrackPitch::Down25, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, -64 }, // ELEM_LEFT_LARGE_HALF_LOOP_DOWN - {TRACK_INLINE_TWIST_UNINVERTED, TrackPitch::None, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_LEFT_FLYER_TWIST_UP - {TRACK_INLINE_TWIST_UNINVERTED, TrackPitch::None, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_RIGHT_FLYER_TWIST_UP - {TRACK_INLINE_TWIST_INVERTED, TrackPitch::None, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_LEFT_FLYER_TWIST_DOWN - {TRACK_INLINE_TWIST_INVERTED, TrackPitch::None, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_RIGHT_FLYER_TWIST_DOWN - {TRACK_FLYING_HALF_LOOP_UNINVERTED_UP, TrackPitch::None, TrackPitch::Up25, TrackBank::UpsideDown, TrackBank::None, 64 }, // ELEM_FLYER_HALF_LOOP_UP - {TRACK_FLYING_HALF_LOOP_INVERTED_DOWN, TrackPitch::Down25, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, -64 }, // ELEM_FLYER_HALF_LOOP_DOWN - {TRACK_CORKSCREW_UNINVERTED, TrackPitch::None, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_LEFT_FLYER_CORKSCREW_UP - {TRACK_CORKSCREW_UNINVERTED, TrackPitch::None, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_RIGHT_FLYER_CORKSCREW_UP - {TRACK_CORKSCREW_INVERTED, TrackPitch::None, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, -32 }, // ELEM_LEFT_FLYER_CORKSCREW_DOWN - {TRACK_CORKSCREW_INVERTED, TrackPitch::None, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, -32 }, // ELEM_RIGHT_FLYER_CORKSCREW_DOWN - {TRACK_HEARTLINE_TRANSFER, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_HEARTLINE_TRANSFER_UP - {TRACK_HEARTLINE_TRANSFER, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_HEARTLINE_TRANSFER_DOWN - {TRACK_HEARTLINE_ROLL, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_HEARTLINE_ROLL - {TRACK_HEARTLINE_ROLL, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_HEARTLINE_ROLL - {TRACK_MINI_GOLF_HOLE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_MINI_GOLF_HOLE_A - {TRACK_MINI_GOLF_HOLE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_MINI_GOLF_HOLE_B - {TRACK_MINI_GOLF_HOLE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_MINI_GOLF_HOLE_C - {TRACK_MINI_GOLF_HOLE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_MINI_GOLF_HOLE_D - {TRACK_MINI_GOLF_HOLE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_MINI_GOLF_HOLE_E - { TRACK_QUARTER_LOOP_INVERTED_DOWN, TrackPitch::Down90, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_MULTIDIM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN - { TRACK_QUARTER_LOOP, TrackPitch::None, TrackPitch::Up90, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_90_DEG_TO_INVERTED_FLAT_QUARTER_LOOP_UP - { TRACK_QUARTER_LOOP, TrackPitch::Down90, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, 0 }, // ELEM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN - { TRACK_LIFT_HILL_CURVED, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_CURVED_LIFT_HILL - { TRACK_LIFT_HILL_CURVED, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_CURVED_LIFT_HILL - { TRACK_REVERSER, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_REVERSER - { TRACK_REVERSER, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_REVERSER - { TRACK_SLOPE_TO_FLAT, TrackPitch::Down90, TrackPitch::Up90, TrackBank::None, TrackBank::None, 0 }, // ELEM_AIR_THRUST_TOP_CAP - { TRACK_SLOPE_TO_FLAT, TrackPitch::Down90, TrackPitch::Down90, TrackBank::None, TrackBank::None, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN - { TRACK_SLOPE_TO_FLAT, TrackPitch::None, TrackPitch::Down90, TrackBank::None, TrackBank::None, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN_TO_LEVEL - { TRACK_BLOCK_BRAKES, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_BLOCK_BRAKES - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::Left, TrackBank::None, 0 }, // ELEM_25_DEG_UP_TO_LEFT_BANKED_25_DEG_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::Right, TrackBank::None, 0 }, // ELEM_25_DEG_UP_TO_RIGHT_BANKED_25_DEG_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::None, TrackBank::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_UP_TO_25_DEG_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackBank::None, TrackBank::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_UP_TO_25_DEG_UP - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::Left, TrackBank::None, 0 }, // ELEM_25_DEG_DOWN_TO_LEFT_BANKED_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::Right, TrackBank::None, 0 }, // ELEM_25_DEG_DOWN_TO_RIGHT_BANKED_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::None, TrackBank::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackBank::None, TrackBank::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_UP - { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_UP_TO_LEFT_BANKED_FLAT - { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_UP_TO_RIGHT_BANKED_FLAT - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackBank::Left, TrackBank::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_DOWN_TO_LEFT_BANKED_FLAT - { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackBank::Right, TrackBank::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_RIGHT_BANKED_FLAT - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackBank::Left, TrackBank::None, 0 }, // ELEM_FLAT_TO_LEFT_BANKED_25_DEG_UP - { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackBank::Right, TrackBank::None, 0 }, // ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_UP - { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackBank::None, TrackBank::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_UP_TO_FLAT - { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackBank::None, TrackBank::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_UP_TO_FLAT - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackBank::Left, TrackBank::None, 0 }, // ELEM_FLAT_TO_LEFT_BANKED_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackBank::Right, TrackBank::None, 0 }, // ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN - { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackBank::None, TrackBank::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_DOWN_TO_FLAT - { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackBank::None, TrackBank::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_FLAT - { TRACK_FLAT, TrackPitch::Up90, TrackPitch::Up90, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_UP - { TRACK_FLAT, TrackPitch::Up90, TrackPitch::Up90, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_UP - { TRACK_FLAT, TrackPitch::Down90, TrackPitch::Down90, TrackBank::None, TrackBank::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_DOWN - { TRACK_FLAT, TrackPitch::Down90, TrackPitch::Down90, TrackBank::None, TrackBank::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_DOWN - { TRACK_QUARTER_LOOP_UNINVERTED_UP, TrackPitch::None, TrackPitch::Up90, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_MULTIDIM_90_DEG_UP_TO_INVERTED_FLAT_QUARTER_LOOP - { TRACK_QUARTER_LOOP_UNINVERTED_DOWN, TrackPitch::Down90, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_MULTIDIM_FLAT_TO_90_DEG_DOWN_QUARTER_LOOP - { TRACK_QUARTER_LOOP_INVERTED_UP, TrackPitch::None, TrackPitch::Up90, TrackBank::UpsideDown, TrackBank::None, 0 }, // ELEM_MULTIDIM_INVERTED_FLAT_TO_90_DEG_UP_QUARTER_LOOP - { TRACK_ROTATION_CONTROL_TOGGLE,TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // ELEM_ROTATION_CONTROL_TOGGLE - { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // TrackElemType::FlatTrack1x4A - { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // TrackElemType::FlatTrack2x2 - { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // TrackElemType::FlatTrack4x4 - { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // TrackElemType::FlatTrack2x4 - { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // TrackElemType::FlatTrack1x5 - { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // TrackElemType::FlatTrack1x1A - { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // TrackElemType::FlatTrack1x4B - { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // TrackElemType::FlatTrack1x1B - { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, -40 }, // TrackElemType::FlatTrack1x4C - { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // TrackElemType::FlatTrack3x3 - { TRACK_CORKSCREW_LARGE, TrackPitch::None, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, 32 }, // TrackElemType::LeftLargeCorkscrewUp - { TRACK_CORKSCREW_LARGE, TrackPitch::None, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, 32 }, // TrackElemType::RightLargeCorkscrewUp - { TRACK_CORKSCREW_LARGE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, -32 }, // TrackElemType::LeftLargeCorkscrewDown - { TRACK_CORKSCREW_LARGE, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, -32 }, // TrackElemType::RightLargeCorkscrewDown - { TRACK_HALF_LOOP_MEDIUM, TrackPitch::None, TrackPitch::Up25, TrackBank::UpsideDown, TrackBank::None, 64 }, // TrackElemType::LeftMediumHalfLoopUp - { TRACK_HALF_LOOP_MEDIUM, TrackPitch::None, TrackPitch::Up25, TrackBank::UpsideDown, TrackBank::None, 64 }, // TrackElemType::RightMediumHalfLoopUp - { TRACK_HALF_LOOP_MEDIUM, TrackPitch::Down25, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, -64 }, // TrackElemType::LeftMediumHalfLoopDown - { TRACK_HALF_LOOP_MEDIUM, TrackPitch::Down25, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, -64 }, // TrackElemType::RightMediumHalfLoopDown - { TRACK_ZERO_G_ROLL, TrackPitch::None, TrackPitch::Up25, TrackBank::UpsideDown, TrackBank::None, 0 }, // TrackElemType::LeftZeroGRollUp - { TRACK_ZERO_G_ROLL, TrackPitch::None, TrackPitch::Up25, TrackBank::UpsideDown, TrackBank::None, 0 }, // TrackElemType::RightZeroGRollUp - { TRACK_ZERO_G_ROLL, TrackPitch::Down25, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, 0 }, // TrackElemType::LeftZeroGRollDown - { TRACK_ZERO_G_ROLL, TrackPitch::Down25, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, 0 }, // TrackElemType::RightZeroGRollDown - { TRACK_ZERO_G_ROLL_LARGE, TrackPitch::None, TrackPitch::Up60, TrackBank::UpsideDown, TrackBank::None, 64 }, // TrackElemType::LeftLargeZeroGRollUp - { TRACK_ZERO_G_ROLL_LARGE, TrackPitch::None, TrackPitch::Up60, TrackBank::UpsideDown, TrackBank::None, 64 }, // TrackElemType::RightLargeZeroGRollUp - { TRACK_ZERO_G_ROLL_LARGE, TrackPitch::Down60, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, -64 }, // TrackElemType::LeftLargeZeroGRollDown - { TRACK_ZERO_G_ROLL_LARGE, TrackPitch::Down60, TrackPitch::None, TrackBank::None, TrackBank::UpsideDown, -64 }, // TrackElemType::RightLargeZeroGRollDown - { TRACK_FLYING_LARGE_HALF_LOOP_UNINVERTED_UP, TrackPitch::None, TrackPitch::Up25, TrackBank::UpsideDown, TrackBank::None, 64 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp - { TRACK_FLYING_LARGE_HALF_LOOP_UNINVERTED_UP, TrackPitch::None, TrackPitch::Up25, TrackBank::UpsideDown, TrackBank::None, 64 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp - { TRACK_FLYING_LARGE_HALF_LOOP_INVERTED_DOWN, TrackPitch::Down25, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, -64 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown - { TRACK_FLYING_LARGE_HALF_LOOP_INVERTED_DOWN, TrackPitch::Down25, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, -64 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown - { TRACK_FLYING_LARGE_HALF_LOOP_INVERTED_UP, TrackPitch::None, TrackPitch::Up25, TrackBank::UpsideDown, TrackBank::None, 64 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp - { TRACK_FLYING_LARGE_HALF_LOOP_INVERTED_UP, TrackPitch::None, TrackPitch::Up25, TrackBank::UpsideDown, TrackBank::None, 64 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp - { TRACK_FLYING_LARGE_HALF_LOOP_UNINVERTED_DOWN, TrackPitch::Down25, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, -64 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown - { TRACK_FLYING_LARGE_HALF_LOOP_UNINVERTED_DOWN, TrackPitch::Down25, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, -64 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown - { TRACK_FLYING_HALF_LOOP_INVERTED_UP, TrackPitch::None, TrackPitch::Up25, TrackBank::UpsideDown, TrackBank::None, 64 }, // TrackElemType::FlyerHalfLoopInvertedUp - { TRACK_FLYING_HALF_LOOP_UNINVERTED_DOWN, TrackPitch::Down25, TrackPitch::None, TrackBank::UpsideDown, TrackBank::None, -64 }, // TrackElemType::FlyerHalfLoopUninvertedDown - { TRACK_SLOPE_CURVE_LARGE, TrackPitch::Up25, TrackPitch::Up25, TrackBank::None, TrackBank::None, 16 }, // TrackElemType::LeftEighthToDiagUp25 - { TRACK_SLOPE_CURVE_LARGE, TrackPitch::Up25, TrackPitch::Up25, TrackBank::None, TrackBank::None, 16 }, // TrackElemType::RightEighthToDiagUp25 - { TRACK_SLOPE_CURVE_LARGE, TrackPitch::Down25, TrackPitch::Down25, TrackBank::None, TrackBank::None, -16 }, // TrackElemType::LeftEighthToDiagDown25 - { TRACK_SLOPE_CURVE_LARGE, TrackPitch::Down25, TrackPitch::Down25, TrackBank::None, TrackBank::None, -16 }, // TrackElemType::RightEighthToDiagDown25 - { TRACK_SLOPE_CURVE_LARGE, TrackPitch::Up25, TrackPitch::Up25, TrackBank::None, TrackBank::None, 16 }, // TrackElemType::LeftEighthToOrthogonalUp25 - { TRACK_SLOPE_CURVE_LARGE, TrackPitch::Up25, TrackPitch::Up25, TrackBank::None, TrackBank::None, 16 }, // TrackElemType::RightEighthToOrthogonalUp25 - { TRACK_SLOPE_CURVE_LARGE, TrackPitch::Down25, TrackPitch::Down25, TrackBank::None, TrackBank::None, -16 }, // TrackElemType::LeftEighthToOrthogonalDown25 - { TRACK_SLOPE_CURVE_LARGE, TrackPitch::Down25, TrackPitch::Down25, TrackBank::None, TrackBank::None, -16 }, // TrackElemType::RightEighthToOrthogonalDown25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackBank::Left, TrackBank::None, 0 }, // TrackElemType::DiagUp25ToLeftBankedUp25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackBank::Right, TrackBank::None, 0 }, // TrackElemType::DiagUp25ToRightBankedUp25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackBank::None, TrackBank::Left, 0 }, // TrackElemType::DiagLeftBankedUp25ToUp25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackBank::None, TrackBank::Right, 0 }, // TrackElemType::DiagRightBankedUp25ToUp25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackBank::Left, TrackBank::None, 0 }, // TrackElemType::DiagDown25ToLeftBankedDown25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackBank::Right, TrackBank::None, 0 }, // TrackElemType::DiagDown25ToRightBankedDown25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackBank::None, TrackBank::Left, 0 }, // TrackElemType::DiagLeftBankedDown25ToDown25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackBank::None, TrackBank::Right, 0 }, // TrackElemType::DiagRightBankedDown25ToDown25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::None, TrackBank::Left, TrackBank::Left, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::None, TrackBank::Right, TrackBank::Right, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::None, TrackPitch::Up25, TrackBank::Left, TrackBank::Left, 0 }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::None, TrackPitch::Up25, TrackBank::Right, TrackBank::Right, 0 }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::None, TrackBank::Left, TrackBank::Left, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::None, TrackBank::Right, TrackBank::Right, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::None, TrackPitch::Down25, TrackBank::Left, TrackBank::Left, 0 }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::None, TrackPitch::Down25, TrackBank::Right, TrackBank::Right, 0 }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::None, TrackBank::Left, TrackBank::None, 0 }, // TrackElemType::DiagFlatToLeftBankedUp25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::None, TrackBank::Right, TrackBank::None, 0 }, // TrackElemType::DiagFlatToRightBankedUp25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::None, TrackPitch::Up25, TrackBank::None, TrackBank::Left, 0 }, // TrackElemType::DiagLeftBankedUp25ToFlat - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::None, TrackPitch::Up25, TrackBank::None, TrackBank::Right, 0 }, // TrackElemType::DiagRightBankedUp25ToFlat - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::None, TrackBank::Left, TrackBank::None, 0 }, // TrackElemType::DiagFlatToLeftBankedDown25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::None, TrackBank::Right, TrackBank::None, 0 }, // TrackElemType::DiagFlatToRightBankedDown25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::None, TrackPitch::Down25, TrackBank::None, TrackBank::Left, 0 }, // TrackElemType::DiagLeftBankedDown25ToFlat - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::None, TrackPitch::Down25, TrackBank::None, TrackBank::Right, 0 }, // TrackElemType::DiagRightBankedDown25ToFlat - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackBank::Left, TrackBank::Left, 0 }, // TrackElemType::Up25LeftBanked - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackBank::Right, TrackBank::Right, 0 }, // TrackElemType::Up25RightBanked - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackBank::Left, TrackBank::Left, 0 }, // TrackElemType::Down25LeftBanked - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackBank::Right, TrackBank::Right, 0 }, // TrackElemType::Down25RightBanked - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackBank::Left, TrackBank::Left, 16 }, // TrackElemType::LeftEighthBankToDiagUp25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackBank::Right, TrackBank::Right, 16 }, // TrackElemType::RightEighthBankToDiagUp25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackBank::Left, TrackBank::Left, -16 }, // TrackElemType::LeftEighthBankToDiagDown25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackBank::Right, TrackBank::Right, -16 }, // TrackElemType::RightEighthBankToDiagDown25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackBank::Left, TrackBank::Left, 16 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackBank::Right, TrackBank::Right, 16 }, // TrackElemType::RightEighthBankToOrthogonalUp25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackBank::Left, TrackBank::Left, -16 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 - { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackBank::Right, TrackBank::Right, -16 }, // TrackElemType::RightEighthBankToOrthogonalDown25 - { TRACK_DIAG_BRAKES, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // TrackElemType::DiagBrakes - { TRACK_DIAG_BLOCK_BRAKES, TrackPitch::None, TrackPitch::None, TrackBank::None, TrackBank::None, 0 }, // TrackElemType::DiagBlockBrakes + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT + { TRACK_STATION_END, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_END_STATION + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_BEGIN_STATION + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MIDDLE_STATION + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP + { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_25_DEG_UP + { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_60_DEG_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_25_DEG_UP + { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_FLAT + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_60_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN_TO_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_FLAT_TO_LEFT_BANK + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_FLAT_TO_RIGHT_BANK + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANK_TO_FLAT + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANK_TO_FLAT + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_UP + { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_LEFT_BANK + { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_RIGHT_BANK + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_LEFT_BANK + { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_RIGHT_BANK + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANK + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANK + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN + { TRACK_S_BEND, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_S_BEND_LEFT + { TRACK_S_BEND, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_S_BEND_RIGHT + { TRACK_VERTICAL_LOOP, TrackPitch::Down25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, -48 }, // ELEM_LEFT_VERTICAL_LOOP + { TRACK_VERTICAL_LOOP, TrackPitch::Down25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, -48 }, // ELEM_RIGHT_VERTICAL_LOOP + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_BANK + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE + { TRACK_TWIST, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_TWIST_DOWN_TO_UP + { TRACK_TWIST, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_TWIST_DOWN_TO_UP + { TRACK_TWIST, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // ELEM_LEFT_TWIST_UP_TO_DOWN + { TRACK_TWIST, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // ELEM_RIGHT_TWIST_UP_TO_DOWN + { TRACK_HALF_LOOP, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // ELEM_HALF_LOOP_UP + { TRACK_HALF_LOOP, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // ELEM_HALF_LOOP_DOWN + { TRACK_CORKSCREW, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_CORKSCREW_UP + { TRACK_CORKSCREW, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_CORKSCREW_UP + { TRACK_CORKSCREW, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // ELEM_LEFT_CORKSCREW_DOWN + { TRACK_CORKSCREW, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // ELEM_RIGHT_CORKSCREW_DOWN + { TRACK_FLAT, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_60_DEG_UP + { TRACK_FLAT, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_FLAT + { TRACK_FLAT, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN + { TRACK_FLAT, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN_TO_FLAT + { TRACK_TOWER_BASE, TrackPitch::Tower, TrackPitch::Tower, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_TOWER_BASE + { TRACK_TOWER_BASE, TrackPitch::Tower, TrackPitch::Tower, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_TOWER_SECTION + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_COVERED + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_COVERED + { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_COVERED + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_25_DEG_UP_COVERED + { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_60_DEG_UP_COVERED + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_25_DEG_UP_COVERED + { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_FLAT_COVERED + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_COVERED + { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN_COVERED + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN_COVERED + { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_60_DEG_DOWN_COVERED + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN_TO_25_DEG_DOWN_COVERED + { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT_COVERED + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_S_BEND_LEFT_COVERED + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_S_BEND_RIGHT_COVERED + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_COVERED + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_COVERED + { TRACK_HELIX_UP_BANKED_HALF, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL + { TRACK_HELIX_UP_BANKED_HALF, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL + { TRACK_HELIX_DOWN_BANKED_HALF, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL + { TRACK_HELIX_DOWN_BANKED_HALF, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL + { TRACK_HELIX_UP_BANKED_HALF, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE + { TRACK_HELIX_UP_BANKED_HALF, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE + { TRACK_HELIX_DOWN_BANKED_HALF, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE + { TRACK_HELIX_DOWN_BANKED_HALF, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE + { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_UP + { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_UP + { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_DOWN + { TRACK_BRAKES, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_BRAKES + { TRACK_BOOSTER, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_BOOSTER + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Maze + { TRACK_HELIX_UP_BANKED_QUARTER, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP + { TRACK_HELIX_UP_BANKED_QUARTER, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP + { TRACK_HELIX_DOWN_BANKED_QUARTER, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN + { TRACK_HELIX_DOWN_BANKED_QUARTER, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_DOWN + { TRACK_HELIX_UP_UNBANKED_QUARTER, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_UP + { TRACK_HELIX_UP_UNBANKED_QUARTER, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_UP + { TRACK_HELIX_DOWN_UNBANKED_QUARTER, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN + { TRACK_HELIX_DOWN_UNBANKED_QUARTER, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_25_DEG_UP_LEFT_BANKED + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_25_DEG_UP_RIGHT_BANKED + { TRACK_WATERFALL, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_WATERFALL + { TRACK_RAPIDS, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RAPIDS + { TRACK_ON_RIDE_PHOTO, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_ON_RIDE_PHOTO + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_25_DEG_DOWN_LEFT_BANKED + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_25_DEG_DOWN_RIGHT_BANKED + { TRACK_WATER_SPLASH, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_WATER_SPLASH + { TRACK_FLAT, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_60_DEG_UP_LONG_BASE + { TRACK_FLAT, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_FLAT_LONG_BASE + { TRACK_WHIRLPOOL, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_WHIRLPOOL + { TRACK_FLAT, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN_LONG_BASE + { TRACK_FLAT, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_FLAT_LONG_BASE_122 + { TRACK_LIFT_HILL_CABLE, TrackPitch::Down60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_CABLE_LIFT_HILL + { TRACK_REVERSE_FREEFALL, TrackPitch::ReverseFreefall, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_REVERSE_FREEFALL_SLOPE + { TRACK_REVERSE_FREEFALL, TrackPitch::ReverseFreefall, TrackPitch::ReverseFreefall, TrackRoll::None,TrackRoll::None, 0 }, // ELEM_REVERSE_FREEFALL_VERTICAL + { TRACK_FLAT, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_90_DEG_UP + { TRACK_FLAT, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_90_DEG_DOWN + { TRACK_FLAT, TrackPitch::Up90, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_90_DEG_UP + { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_90_DEG_DOWN_TO_60_DEG_DOWN + { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_90_DEG_UP_TO_60_DEG_UP + { TRACK_FLAT, TrackPitch::Down90, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN_TO_90_DEG_DOWN + { TRACK_BRAKE_FOR_DROP, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_BRAKE_FOR_DROP + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_EIGHTH_TO_DIAG + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_EIGHTH_TO_DIAG + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_EIGHTH_TO_ORTHOGONAL + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_EIGHTH_BANK_TO_DIAG + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_EIGHTH_BANK_TO_DIAG + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_UP + { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_25_DEG_UP + { TRACK_FLAT, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_UP_TO_60_DEG_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_UP_TO_25_DEG_UP + { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_UP_TO_FLAT + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_60_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_DOWN_TO_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_FLAT + { TRACK_FLAT, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_60_DEG_UP + { TRACK_FLAT, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_UP_TO_FLAT + { TRACK_FLAT, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_60_DEG_DOWN + { TRACK_FLAT, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_DOWN_TO_FLAT + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_LEFT_BANK + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_RIGHT_BANK + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_DIAG_LEFT_BANK_TO_FLAT + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_FLAT + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP + { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_UP_TO_LEFT_BANK + { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_UP_TO_RIGHT_BANK + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK + { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_DIAG_LEFT_BANK + { TRACK_FLAT, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_DIAG_RIGHT_BANK + { TRACK_LOG_FLUME_REVERSER, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LOG_FLUME_REVERSER + { TRACK_SPINNING_TUNNEL, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_SPINNING_TUNNEL + { TRACK_BARREL_ROLL, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_BARREL_ROLL_UP_TO_DOWN + { TRACK_BARREL_ROLL, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_BARREL_ROLL_UP_TO_DOWN + { TRACK_BARREL_ROLL, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // ELEM_LEFT_BARREL_ROLL_DOWN_TO_UP + { TRACK_BARREL_ROLL, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // ELEM_RIGHT_BARREL_ROLL_DOWN_TO_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANK_TO_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP + { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_LEFT_BANK + { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_RIGHT_BANK + { TRACK_POWERED_LIFT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_POWERED_LIFT + {TRACK_HALF_LOOP_LARGE, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // ELEM_LEFT_LARGE_HALF_LOOP_UP + {TRACK_HALF_LOOP_LARGE, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // ELEM_RIGHT_LARGE_HALF_LOOP_UP + {TRACK_HALF_LOOP_LARGE, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // ELEM_RIGHT_LARGE_HALF_LOOP_DOWN + {TRACK_HALF_LOOP_LARGE, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // ELEM_LEFT_LARGE_HALF_LOOP_DOWN + {TRACK_INLINE_TWIST_UNINVERTED, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_FLYER_TWIST_UP + {TRACK_INLINE_TWIST_UNINVERTED, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_FLYER_TWIST_UP + {TRACK_INLINE_TWIST_INVERTED, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_FLYER_TWIST_DOWN + {TRACK_INLINE_TWIST_INVERTED, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_FLYER_TWIST_DOWN + {TRACK_FLYING_HALF_LOOP_UNINVERTED_UP, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // ELEM_FLYER_HALF_LOOP_UP + {TRACK_FLYING_HALF_LOOP_INVERTED_DOWN, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // ELEM_FLYER_HALF_LOOP_DOWN + {TRACK_CORKSCREW_UNINVERTED, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_FLYER_CORKSCREW_UP + {TRACK_CORKSCREW_UNINVERTED, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_FLYER_CORKSCREW_UP + {TRACK_CORKSCREW_INVERTED, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -32 }, // ELEM_LEFT_FLYER_CORKSCREW_DOWN + {TRACK_CORKSCREW_INVERTED, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -32 }, // ELEM_RIGHT_FLYER_CORKSCREW_DOWN + {TRACK_HEARTLINE_TRANSFER, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_HEARTLINE_TRANSFER_UP + {TRACK_HEARTLINE_TRANSFER, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_HEARTLINE_TRANSFER_DOWN + {TRACK_HEARTLINE_ROLL, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_HEARTLINE_ROLL + {TRACK_HEARTLINE_ROLL, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_HEARTLINE_ROLL + {TRACK_MINI_GOLF_HOLE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MINI_GOLF_HOLE_A + {TRACK_MINI_GOLF_HOLE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MINI_GOLF_HOLE_B + {TRACK_MINI_GOLF_HOLE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MINI_GOLF_HOLE_C + {TRACK_MINI_GOLF_HOLE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MINI_GOLF_HOLE_D + {TRACK_MINI_GOLF_HOLE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MINI_GOLF_HOLE_E + { TRACK_QUARTER_LOOP_INVERTED_DOWN, TrackPitch::Down90, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_MULTIDIM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN + { TRACK_QUARTER_LOOP, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_90_DEG_TO_INVERTED_FLAT_QUARTER_LOOP_UP + { TRACK_QUARTER_LOOP, TrackPitch::Down90, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // ELEM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN + { TRACK_LIFT_HILL_CURVED, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_CURVED_LIFT_HILL + { TRACK_LIFT_HILL_CURVED, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_CURVED_LIFT_HILL + { TRACK_REVERSER, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_REVERSER + { TRACK_REVERSER, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_REVERSER + { TRACK_SLOPE_TO_FLAT, TrackPitch::Down90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_AIR_THRUST_TOP_CAP + { TRACK_SLOPE_TO_FLAT, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN + { TRACK_SLOPE_TO_FLAT, TrackPitch::None, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN_TO_LEVEL + { TRACK_BLOCK_BRAKES, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_BLOCK_BRAKES + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_LEFT_BANKED_25_DEG_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_RIGHT_BANKED_25_DEG_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_UP_TO_25_DEG_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_UP_TO_25_DEG_UP + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_LEFT_BANKED_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_RIGHT_BANKED_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_UP + { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_UP_TO_LEFT_BANKED_FLAT + { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_UP_TO_RIGHT_BANKED_FLAT + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_DOWN_TO_LEFT_BANKED_FLAT + { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_RIGHT_BANKED_FLAT + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_FLAT_TO_LEFT_BANKED_25_DEG_UP + { TRACK_FLAT, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_UP + { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_UP_TO_FLAT + { TRACK_FLAT, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_UP_TO_FLAT + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_FLAT_TO_LEFT_BANKED_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN + { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_DOWN_TO_FLAT + { TRACK_FLAT, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_FLAT + { TRACK_FLAT, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_UP + { TRACK_FLAT, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_UP + { TRACK_FLAT, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_DOWN + { TRACK_FLAT, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_DOWN + { TRACK_QUARTER_LOOP_UNINVERTED_UP, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_MULTIDIM_90_DEG_UP_TO_INVERTED_FLAT_QUARTER_LOOP + { TRACK_QUARTER_LOOP_UNINVERTED_DOWN, TrackPitch::Down90, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_MULTIDIM_FLAT_TO_90_DEG_DOWN_QUARTER_LOOP + { TRACK_QUARTER_LOOP_INVERTED_UP, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_MULTIDIM_INVERTED_FLAT_TO_90_DEG_UP_QUARTER_LOOP + { TRACK_ROTATION_CONTROL_TOGGLE,TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_ROTATION_CONTROL_TOGGLE + { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x4A + { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack2x2 + { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack4x4 + { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack2x4 + { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x5 + { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x1A + { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x4B + { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x1B + { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, -40 }, // TrackElemType::FlatTrack1x4C + { TRACK_FLAT_RIDE_BASE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack3x3 + { TRACK_CORKSCREW_LARGE, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 32 }, // TrackElemType::LeftLargeCorkscrewUp + { TRACK_CORKSCREW_LARGE, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 32 }, // TrackElemType::RightLargeCorkscrewUp + { TRACK_CORKSCREW_LARGE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::LeftLargeCorkscrewDown + { TRACK_CORKSCREW_LARGE, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::RightLargeCorkscrewDown + { TRACK_HALF_LOOP_MEDIUM, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftMediumHalfLoopUp + { TRACK_HALF_LOOP_MEDIUM, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightMediumHalfLoopUp + { TRACK_HALF_LOOP_MEDIUM, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::LeftMediumHalfLoopDown + { TRACK_HALF_LOOP_MEDIUM, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::RightMediumHalfLoopDown + { TRACK_ZERO_G_ROLL, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::LeftZeroGRollUp + { TRACK_ZERO_G_ROLL, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::RightZeroGRollUp + { TRACK_ZERO_G_ROLL, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::LeftZeroGRollDown + { TRACK_ZERO_G_ROLL, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::RightZeroGRollDown + { TRACK_ZERO_G_ROLL_LARGE, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftLargeZeroGRollUp + { TRACK_ZERO_G_ROLL_LARGE, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightLargeZeroGRollUp + { TRACK_ZERO_G_ROLL_LARGE, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::LeftLargeZeroGRollDown + { TRACK_ZERO_G_ROLL_LARGE, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::RightLargeZeroGRollDown + { TRACK_FLYING_LARGE_HALF_LOOP_UNINVERTED_UP, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp + { TRACK_FLYING_LARGE_HALF_LOOP_UNINVERTED_UP, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp + { TRACK_FLYING_LARGE_HALF_LOOP_INVERTED_DOWN, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown + { TRACK_FLYING_LARGE_HALF_LOOP_INVERTED_DOWN, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown + { TRACK_FLYING_LARGE_HALF_LOOP_INVERTED_UP, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp + { TRACK_FLYING_LARGE_HALF_LOOP_INVERTED_UP, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp + { TRACK_FLYING_LARGE_HALF_LOOP_UNINVERTED_DOWN, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown + { TRACK_FLYING_LARGE_HALF_LOOP_UNINVERTED_DOWN, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown + { TRACK_FLYING_HALF_LOOP_INVERTED_UP, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::FlyerHalfLoopInvertedUp + { TRACK_FLYING_HALF_LOOP_UNINVERTED_DOWN, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::FlyerHalfLoopUninvertedDown + { TRACK_SLOPE_CURVE_LARGE, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::LeftEighthToDiagUp25 + { TRACK_SLOPE_CURVE_LARGE, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::RightEighthToDiagUp25 + { TRACK_SLOPE_CURVE_LARGE, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::LeftEighthToDiagDown25 + { TRACK_SLOPE_CURVE_LARGE, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::RightEighthToDiagDown25 + { TRACK_SLOPE_CURVE_LARGE, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::LeftEighthToOrthogonalUp25 + { TRACK_SLOPE_CURVE_LARGE, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::RightEighthToOrthogonalUp25 + { TRACK_SLOPE_CURVE_LARGE, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::LeftEighthToOrthogonalDown25 + { TRACK_SLOPE_CURVE_LARGE, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::RightEighthToOrthogonalDown25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagUp25ToLeftBankedUp25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagUp25ToRightBankedUp25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedUp25ToUp25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedUp25ToUp25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagDown25ToLeftBankedDown25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagDown25ToRightBankedDown25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedDown25ToDown25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedDown25ToDown25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToLeftBankedUp25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToRightBankedUp25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedUp25ToFlat + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedUp25ToFlat + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToLeftBankedDown25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToRightBankedDown25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedDown25ToFlat + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedDown25ToFlat + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::Up25LeftBanked + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::Up25RightBanked + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::Down25LeftBanked + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::Down25RightBanked + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 16 }, // TrackElemType::LeftEighthBankToDiagUp25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 16 }, // TrackElemType::RightEighthBankToDiagUp25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, -16 }, // TrackElemType::LeftEighthBankToDiagDown25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, -16 }, // TrackElemType::RightEighthBankToDiagDown25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 16 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 16 }, // TrackElemType::RightEighthBankToOrthogonalUp25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, -16 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 + { TRACK_SLOPE_CURVE_LARGE_BANKED, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, -16 }, // TrackElemType::RightEighthBankToOrthogonalDown25 + { TRACK_DIAG_BRAKES, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagBrakes + { TRACK_DIAG_BLOCK_BRAKES, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagBlockBrakes }; static_assert(std::size(TrackDefinitions) == TrackElemType::Count); diff --git a/src/openrct2/ride/TrackData.h b/src/openrct2/ride/TrackData.h index bb0b5f361b..e9e796cd90 100644 --- a/src/openrct2/ride/TrackData.h +++ b/src/openrct2/ride/TrackData.h @@ -27,10 +27,10 @@ struct TrackDescriptor { bool starts_diagonal; TrackPitch slope_start; - TrackBank RollStart; + TrackRoll RollStart; TrackCurve track_curve; TrackPitch slope_end; - TrackBank RollEnd; + TrackRoll RollEnd; track_type_t track_element; }; diff --git a/src/openrct2/scripting/ScriptEngine.cpp b/src/openrct2/scripting/ScriptEngine.cpp index f3b2b7be26..c6ef8168be 100644 --- a/src/openrct2/scripting/ScriptEngine.cpp +++ b/src/openrct2/scripting/ScriptEngine.cpp @@ -526,10 +526,10 @@ void ScriptEngine::RegisterConstants() .Constant("Up90", EnumValue(TrackPitch::Up90)) .Constant("Down90", EnumValue(TrackPitch::Down90)); builder.Namespace("TrackBanking") - .Constant("None", EnumValue(TrackBank::None)) - .Constant("BankLeft", EnumValue(TrackBank::Left)) - .Constant("BankRight", EnumValue(TrackBank::Right)) - .Constant("UpsideDown", EnumValue(TrackBank::UpsideDown)); + .Constant("None", EnumValue(TrackRoll::None)) + .Constant("BankLeft", EnumValue(TrackRoll::Left)) + .Constant("BankRight", EnumValue(TrackRoll::Right)) + .Constant("UpsideDown", EnumValue(TrackRoll::UpsideDown)); } void ScriptEngine::RefreshPlugins() diff --git a/src/openrct2/windows/_legacy.cpp b/src/openrct2/windows/_legacy.cpp index 3157324743..daad6d5564 100644 --- a/src/openrct2/windows/_legacy.cpp +++ b/src/openrct2/windows/_legacy.cpp @@ -127,15 +127,15 @@ static std::tuple window_ride_construction_update_state_get_ auto startSlope = _previousTrackSlopeEnd; auto endSlope = _currentTrackSlopeEnd; - auto startBank = _previousTrackBankEnd; - auto endBank = _currentTrackBankEnd; + auto startBank = _previousTrackRollEnd; + auto endBank = _currentTrackRollEnd; if (_rideConstructionState == RideConstructionState::Back) { startSlope = _currentTrackSlopeEnd; endSlope = _previousTrackSlopeEnd; - startBank = _currentTrackBankEnd; - endBank = _previousTrackBankEnd; + startBank = _currentTrackRollEnd; + endBank = _previousTrackRollEnd; } auto curve = _currentTrackCurve; @@ -188,7 +188,7 @@ static std::tuple window_ride_construction_update_state_get_ return std::make_tuple(false, 0); } - if (startBank != TrackBank::None || endBank != TrackBank::None) + if (startBank != TrackRoll::None || endBank != TrackRoll::None) { return std::make_tuple(false, 0); } @@ -197,7 +197,7 @@ static std::tuple window_ride_construction_update_state_get_ case TrackElemType::LeftVerticalLoop: case TrackElemType::RightVerticalLoop: - if (startBank != TrackBank::None || endBank != TrackBank::None) + if (startBank != TrackRoll::None || endBank != TrackRoll::None) { return std::make_tuple(false, 0); }