mirror of https://github.com/OpenRCT2/OpenRCT2.git
Integrate loc_6DB967
This commit is contained in:
parent
c200d7ab9c
commit
7e50d1bbc5
|
@ -8354,7 +8354,43 @@ loc_6DAEB9:
|
||||||
otherVehicleIndex = prev_vehicle_on_ride;
|
otherVehicleIndex = prev_vehicle_on_ride;
|
||||||
if (UpdateMotionCollisionDetection(loc, &otherVehicleIndex))
|
if (UpdateMotionCollisionDetection(loc, &otherVehicleIndex))
|
||||||
{
|
{
|
||||||
goto loc_6DB967;
|
_vehicleVelocityF64E0C -= remaining_distance + 1;
|
||||||
|
remaining_distance = -1;
|
||||||
|
|
||||||
|
// Might need to be bp rather than this, but hopefully not
|
||||||
|
auto otherVeh = GetEntity<Vehicle>(otherVehicleIndex);
|
||||||
|
if (otherVeh == nullptr)
|
||||||
|
{
|
||||||
|
// This can never happen as prev_vehicle_on_ride will always be set to a vehicle
|
||||||
|
log_error("Failed to get next vehicle during update!");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
auto head = otherVeh->TrainHead();
|
||||||
|
|
||||||
|
auto velocityDelta = abs(velocity - head->velocity);
|
||||||
|
if (!(rideEntry->flags & RIDE_ENTRY_FLAG_DISABLE_COLLISION_CRASHES))
|
||||||
|
{
|
||||||
|
if (velocityDelta > 0xE0000)
|
||||||
|
{
|
||||||
|
if (!(vehicleEntry->flags & VEHICLE_ENTRY_FLAG_BOAT_HIRE_COLLISION_DETECTION))
|
||||||
|
{
|
||||||
|
_vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_COLLISION;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (vehicleEntry->flags & VEHICLE_ENTRY_FLAG_GO_KART)
|
||||||
|
{
|
||||||
|
velocity -= velocity >> 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int32_t newHeadVelocity = velocity >> 1;
|
||||||
|
velocity = head->velocity >> 1;
|
||||||
|
head->velocity = newHeadVelocity;
|
||||||
|
}
|
||||||
|
_vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_1;
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8370,45 +8406,6 @@ loc_6DAEB9:
|
||||||
acceleration += regs.ebx;
|
acceleration += regs.ebx;
|
||||||
_vehicleUnkF64E10++;
|
_vehicleUnkF64E10++;
|
||||||
goto loc_6DAEB9;
|
goto loc_6DAEB9;
|
||||||
|
|
||||||
loc_6DB967:
|
|
||||||
_vehicleVelocityF64E0C -= remaining_distance + 1;
|
|
||||||
remaining_distance = -1;
|
|
||||||
|
|
||||||
// Might need to be bp rather than this, but hopefully not
|
|
||||||
auto otherVeh = GetEntity<Vehicle>(otherVehicleIndex);
|
|
||||||
if (otherVeh == nullptr)
|
|
||||||
{
|
|
||||||
// This can never happen as prev_vehicle_on_ride will always be set to a vehicle
|
|
||||||
log_error("Failed to get next vehicle during update!");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
auto head = otherVeh->TrainHead();
|
|
||||||
|
|
||||||
auto velocityDelta = abs(velocity - head->velocity);
|
|
||||||
if (!(rideEntry->flags & RIDE_ENTRY_FLAG_DISABLE_COLLISION_CRASHES))
|
|
||||||
{
|
|
||||||
if (velocityDelta > 0xE0000)
|
|
||||||
{
|
|
||||||
if (!(vehicleEntry->flags & VEHICLE_ENTRY_FLAG_BOAT_HIRE_COLLISION_DETECTION))
|
|
||||||
{
|
|
||||||
_vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_COLLISION;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (vehicleEntry->flags & VEHICLE_ENTRY_FLAG_GO_KART)
|
|
||||||
{
|
|
||||||
velocity -= velocity >> 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int32_t newHeadVelocity = velocity >> 1;
|
|
||||||
velocity = head->velocity >> 1;
|
|
||||||
head->velocity = newHeadVelocity;
|
|
||||||
}
|
|
||||||
_vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_1;
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static PitchAndRoll PitchAndRollEnd(Ride* curRide, bool useInvertedSprites, uint16_t trackType, TileElement* tileElement)
|
static PitchAndRoll PitchAndRollEnd(Ride* curRide, bool useInvertedSprites, uint16_t trackType, TileElement* tileElement)
|
||||||
|
|
Loading…
Reference in New Issue