| 5887 | } |
| 5888 | |
| 5889 | void PxVehicleUpdate::updateTank |
| 5890 | (const PxF32 timestep, |
| 5891 | const PxVec3& gravity, const PxF32 gravityMagnitude, const PxF32 recipGravityMagnitude, |
| 5892 | const PxVehicleDrivableSurfaceToTireFrictionPairs& drivableSurfaceToTireFrictionPairs, |
| 5893 | PxVehicleDriveTank* vehDriveTank, PxVehicleWheelQueryResult* vehWheelQueryResults, PxVehicleConcurrentUpdateData* vehConcurrentUpdates) |
| 5894 | { |
| 5895 | PX_SIMD_GUARD; // denorm exception in transformInertiaTensor() |
| 5896 | |
| 5897 | PX_CHECK_AND_RETURN( |
| 5898 | vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_ACCEL]>-0.01f && |
| 5899 | vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_ACCEL]<1.01f, |
| 5900 | "Illegal tank control value - accel must be in range (0,1)" ); |
| 5901 | PX_CHECK_AND_RETURN( |
| 5902 | vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_BRAKE_LEFT]>-0.01f && |
| 5903 | vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_BRAKE_LEFT]<1.01f, |
| 5904 | "Illegal tank control value - left brake must be in range (0,1)"); |
| 5905 | PX_CHECK_AND_RETURN( |
| 5906 | vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_BRAKE_RIGHT]>-0.01f && |
| 5907 | vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_BRAKE_RIGHT]<1.01f, |
| 5908 | "Illegal tank control right value - right brake must be in range (0,1)"); |
| 5909 | PX_CHECK_AND_RETURN( |
| 5910 | vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_THRUST_LEFT]>-1.01f && |
| 5911 | vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_THRUST_LEFT]<1.01f, |
| 5912 | "Illegal tank control value - left thrust must be in range (-1,1)"); |
| 5913 | PX_CHECK_AND_RETURN( |
| 5914 | vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_THRUST_RIGHT]>-1.01f && |
| 5915 | vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_THRUST_RIGHT]<1.01f, |
| 5916 | "Illegal tank control value - right thrust must be in range (-1,1)"); |
| 5917 | PX_CHECK_AND_RETURN( |
| 5918 | PxVehicleDriveTankControlModel::eSPECIAL==vehDriveTank->mDriveModel || |
| 5919 | (vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_THRUST_LEFT]>-0.01f && |
| 5920 | vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_THRUST_LEFT]<1.01f), |
| 5921 | "Illegal tank control value - left thrust must be in range (-1,1)"); |
| 5922 | PX_CHECK_AND_RETURN( |
| 5923 | PxVehicleDriveTankControlModel::eSPECIAL==vehDriveTank->mDriveModel || |
| 5924 | (vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_THRUST_RIGHT]>-0.01f && |
| 5925 | vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_THRUST_RIGHT]<1.01f), |
| 5926 | "Illegal tank control value - right thrust must be in range (-1,1)"); |
| 5927 | PX_CHECK_AND_RETURN( |
| 5928 | PxVehicleDriveTankControlModel::eSPECIAL==vehDriveTank->mDriveModel || |
| 5929 | 0.0f== |
| 5930 | vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_THRUST_LEFT]* |
| 5931 | vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_BRAKE_LEFT], |
| 5932 | "Illegal tank control value - thrust left and brake left simultaneously non-zero in standard drive mode"); |
| 5933 | PX_CHECK_AND_RETURN( |
| 5934 | PxVehicleDriveTankControlModel::eSPECIAL==vehDriveTank->mDriveModel || |
| 5935 | 0.0f== |
| 5936 | vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_THRUST_RIGHT]* |
| 5937 | vehDriveTank->mDriveDynData.mControlAnalogVals[PxVehicleDriveTankControl::eANALOG_INPUT_BRAKE_RIGHT], |
| 5938 | "Illegal tank control value - thrust right and brake right simultaneously non-zero in standard drive mode"); |
| 5939 | PX_CHECK_AND_RETURN( |
| 5940 | !(vehDriveTank->getRigidDynamicActor()->getRigidBodyFlags() & PxRigidBodyFlag::eKINEMATIC), |
| 5941 | "Attempting to update a tank with a kinematic actor - this isn't allowed"); |
| 5942 | PX_CHECK_AND_RETURN( |
| 5943 | NULL==vehWheelQueryResults || vehWheelQueryResults->nbWheelQueryResults >= vehDriveTank->mWheelsSimData.getNbWheels(), |
| 5944 | "nbWheelQueryResults must always be greater than or equal to number of wheels in corresponding vehicle"); |
| 5945 | |
| 5946 | #if PX_CHECKED |
nothing calls this directly
no test coverage detected