void UWheeledVehicleMovementComponent4W::UpdateAutoBoxSetup(const FVehicleAutoBoxData& NewAutoBoxSetup) { #if WITH_PHYSX if (PVehicleDrive) { PxVehicleAutoBoxData AutoBoxSetup; GetVehicleAutoBoxSetup(NewAutoBoxSetup, AutoBoxSetup); PxVehicleDrive4W* PVehicleDrive4W = (PxVehicleDrive4W*)PVehicleDrive; PVehicleDrive4W->mDriveSimData.setAutoBoxData(AutoBoxSetup); } #endif }
void UWheeledVehicleMovementComponent4W::UpdateTransmissionSetup(const FVehicleTransmissionData& NewTransmissionSetup) { #if WITH_VEHICLE if (PVehicleDrive) { PxVehicleGearsData GearData; GetVehicleGearSetup(NewTransmissionSetup, GearData); PxVehicleAutoBoxData AutoBoxData; GetVehicleAutoBoxSetup(NewTransmissionSetup, AutoBoxData); PxVehicleDrive4W* PVehicleDrive4W = (PxVehicleDrive4W*)PVehicleDrive; PVehicleDrive4W->mDriveSimData.setGearsData(GearData); PVehicleDrive4W->mDriveSimData.setAutoBoxData(AutoBoxData); } #endif }
void SetupDriveHelper(const UWheeledVehicleMovementComponent4W* VehicleData, const PxVehicleWheelsSimData* PWheelsSimData, PxVehicleDriveSimData4W& DriveData) { PxVehicleDifferential4WData DifferentialSetup; GetVehicleDifferential4WSetup(VehicleData->DifferentialSetup, DifferentialSetup); DriveData.setDiffData(DifferentialSetup); PxVehicleEngineData EngineSetup; GetVehicleEngineSetup(VehicleData->EngineSetup, EngineSetup); DriveData.setEngineData(EngineSetup); PxVehicleClutchData ClutchSetup; ClutchSetup.mStrength = VehicleData->ClutchStrength; DriveData.setClutchData(ClutchSetup); FVector WheelCentreOffsets[4]; WheelCentreOffsets[PxVehicleDrive4WWheelOrder::eFRONT_LEFT] = P2UVector(PWheelsSimData->getWheelCentreOffset(PxVehicleDrive4WWheelOrder::eFRONT_LEFT)); WheelCentreOffsets[PxVehicleDrive4WWheelOrder::eFRONT_RIGHT] = P2UVector(PWheelsSimData->getWheelCentreOffset(PxVehicleDrive4WWheelOrder::eFRONT_RIGHT)); WheelCentreOffsets[PxVehicleDrive4WWheelOrder::eREAR_LEFT] = P2UVector(PWheelsSimData->getWheelCentreOffset(PxVehicleDrive4WWheelOrder::eREAR_LEFT)); WheelCentreOffsets[PxVehicleDrive4WWheelOrder::eREAR_RIGHT] = P2UVector(PWheelsSimData->getWheelCentreOffset(PxVehicleDrive4WWheelOrder::eREAR_RIGHT)); PxVehicleAckermannGeometryData AckermannSetup; AckermannSetup.mAccuracy = VehicleData->AckermannAccuracy; AckermannSetup.mAxleSeparation = FMath::Abs(WheelCentreOffsets[PxVehicleDrive4WWheelOrder::eFRONT_LEFT].X - WheelCentreOffsets[PxVehicleDrive4WWheelOrder::eREAR_LEFT].X); AckermannSetup.mFrontWidth = FMath::Abs(WheelCentreOffsets[PxVehicleDrive4WWheelOrder::eFRONT_RIGHT].Y - WheelCentreOffsets[PxVehicleDrive4WWheelOrder::eFRONT_LEFT].Y); AckermannSetup.mRearWidth = FMath::Abs(WheelCentreOffsets[PxVehicleDrive4WWheelOrder::eREAR_RIGHT].Y - WheelCentreOffsets[PxVehicleDrive4WWheelOrder::eREAR_LEFT].Y); DriveData.setAckermannGeometryData(AckermannSetup); PxVehicleGearsData GearSetup; GetVehicleGearSetup(VehicleData->GearSetup, GearSetup); DriveData.setGearsData(GearSetup); PxVehicleAutoBoxData AutoBoxSetup; GetVehicleAutoBoxSetup(VehicleData->AutoBoxSetup, AutoBoxSetup); DriveData.setAutoBoxData(AutoBoxSetup); }