mirror of
				https://github.com/halpz/re3.git
				synced 2025-10-31 02:07:05 +00:00 
			
		
		
		
	vehicle fixes
This commit is contained in:
		| @@ -737,7 +737,7 @@ CAutomobile::ProcessControl(void) | ||||
| 		float fwdSpeed = Abs(DotProduct(m_vecMoveSpeed, GetForward())); | ||||
| 		CVector contactPoints[4];	// relative to model | ||||
| 		CVector contactSpeeds[4];	// speed at contact points | ||||
| 		CVector springDirections[4];	// normalized, in model space | ||||
| 		CVector springDirections[4];	// normalized, in world space | ||||
|  | ||||
| 		for(i = 0; i < 4; i++){ | ||||
| 			// Set spring under certain circumstances | ||||
| @@ -925,10 +925,10 @@ CAutomobile::ProcessControl(void) | ||||
| 			CVector wheelFwd, wheelRight, tmp; | ||||
|  | ||||
| 			if(m_aWheelTimer[CARWHEEL_FRONT_LEFT] > 0.0f){ | ||||
| 				if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier)) | ||||
| 					fThrust = 0.0f; | ||||
| 				else | ||||
| 				if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier)) | ||||
| 					fThrust = acceleration; | ||||
| 				else | ||||
| 					fThrust = 0.0f; | ||||
|  | ||||
| 				wheelFwd = GetForward(); | ||||
| 				wheelFwd -= DotProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_FRONT_LEFT].normal)*m_aWheelColPoints[CARWHEEL_FRONT_LEFT].normal; | ||||
| @@ -968,10 +968,10 @@ CAutomobile::ProcessControl(void) | ||||
| 			} | ||||
|  | ||||
| 			if(m_aWheelTimer[CARWHEEL_FRONT_RIGHT] > 0.0f){ | ||||
| 				if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier)) | ||||
| 					fThrust = 0.0f; | ||||
| 				else | ||||
| 				if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier)) | ||||
| 					fThrust = acceleration; | ||||
| 				else | ||||
| 					fThrust = 0.0f; | ||||
|  | ||||
| 				wheelFwd = GetForward(); | ||||
| 				wheelFwd -= DotProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].normal)*m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].normal; | ||||
| @@ -1015,9 +1015,7 @@ CAutomobile::ProcessControl(void) | ||||
|  | ||||
| 		if(!IsRealHeli()){ | ||||
| 			if(m_aWheelTimer[CARWHEEL_FRONT_LEFT] <= 0.0f){ | ||||
| 				if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier) || acceleration == 0.0f) | ||||
| 					m_aWheelSpeed[CARWHEEL_FRONT_LEFT] *= 0.95f; | ||||
| 				else{ | ||||
| 				if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier) && acceleration != 0.0f){ | ||||
| 					if(acceleration > 0.0f){ | ||||
| 						if(m_aWheelSpeed[CARWHEEL_FRONT_LEFT] < 2.0f) | ||||
| 							m_aWheelSpeed[CARWHEEL_FRONT_LEFT] -= 0.2f; | ||||
| @@ -1025,13 +1023,13 @@ CAutomobile::ProcessControl(void) | ||||
| 						if(m_aWheelSpeed[CARWHEEL_FRONT_LEFT] > -2.0f) | ||||
| 							m_aWheelSpeed[CARWHEEL_FRONT_LEFT] += 0.1f; | ||||
| 					} | ||||
| 				}else{ | ||||
| 					m_aWheelSpeed[CARWHEEL_FRONT_LEFT] *= 0.95f; | ||||
| 				} | ||||
| 				m_aWheelRotation[CARWHEEL_FRONT_LEFT] += m_aWheelSpeed[CARWHEEL_FRONT_LEFT]; | ||||
| 			} | ||||
| 			if(m_aWheelTimer[CARWHEEL_FRONT_RIGHT] <= 0.0f){ | ||||
| 				if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier) || acceleration == 0.0f) | ||||
| 					m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] *= 0.95f; | ||||
| 				else{ | ||||
| 				if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier) && acceleration != 0.0f){ | ||||
| 					if(acceleration > 0.0f){ | ||||
| 						if(m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] < 2.0f) | ||||
| 							m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] -= 0.2f; | ||||
| @@ -1039,6 +1037,8 @@ CAutomobile::ProcessControl(void) | ||||
| 						if(m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] > -2.0f) | ||||
| 							m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] += 0.1f; | ||||
| 					} | ||||
| 				}else{ | ||||
| 					m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] *= 0.95f; | ||||
| 				} | ||||
| 				m_aWheelRotation[CARWHEEL_FRONT_RIGHT] += m_aWheelSpeed[CARWHEEL_FRONT_RIGHT]; | ||||
| 			} | ||||
| @@ -1065,7 +1065,7 @@ CAutomobile::ProcessControl(void) | ||||
| 					if(m_fTireTemperature > 2.0f) | ||||
| 						m_fTireTemperature = 2.0f; | ||||
| 				} | ||||
| 			}else if(m_doingBurnout && !mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier)){ | ||||
| 			}else if(m_doingBurnout && mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier)){ | ||||
| 				rearBrake = 0.0f; | ||||
| 				rearTraction = 0.0f; | ||||
| 				// BUG: missing timestep | ||||
| @@ -1075,10 +1075,10 @@ CAutomobile::ProcessControl(void) | ||||
| 			} | ||||
|  | ||||
| 			if(m_aWheelTimer[CARWHEEL_REAR_LEFT] > 0.0f){ | ||||
| 				if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier)) | ||||
| 					fThrust = 0.0f; | ||||
| 				else | ||||
| 				if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier)) | ||||
| 					fThrust = acceleration; | ||||
| 				else | ||||
| 					fThrust = 0.0f; | ||||
|  | ||||
| 				wheelFwd -= DotProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_REAR_LEFT].normal)*m_aWheelColPoints[CARWHEEL_REAR_LEFT].normal; | ||||
| 				wheelFwd.Normalise(); | ||||
| @@ -1120,10 +1120,10 @@ CAutomobile::ProcessControl(void) | ||||
| #endif | ||||
|  | ||||
| 			if(m_aWheelTimer[CARWHEEL_REAR_RIGHT] > 0.0f){ | ||||
| 				if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier)) | ||||
| 					fThrust = 0.0f; | ||||
| 				else | ||||
| 				if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier)) | ||||
| 					fThrust = acceleration; | ||||
| 				else | ||||
| 					fThrust = 0.0f; | ||||
|  | ||||
| 				wheelFwd -= DotProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_REAR_RIGHT].normal)*m_aWheelColPoints[CARWHEEL_REAR_RIGHT].normal; | ||||
| 				wheelFwd.Normalise(); | ||||
| @@ -1159,7 +1159,7 @@ CAutomobile::ProcessControl(void) | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		if(m_doingBurnout && !mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier) && | ||||
| 		if(m_doingBurnout && mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier) && | ||||
| 	           (m_aWheelState[CARWHEEL_REAR_LEFT] == WHEEL_STATE_SPINNING || m_aWheelState[CARWHEEL_REAR_RIGHT] == WHEEL_STATE_SPINNING)){ | ||||
| 			m_fTireTemperature += 0.001f*CTimer::GetTimeStep(); | ||||
| 			if(m_fTireTemperature > 3.0f) | ||||
| @@ -1174,9 +1174,7 @@ CAutomobile::ProcessControl(void) | ||||
| 			if(m_aWheelTimer[CARWHEEL_REAR_LEFT] <= 0.0f){ | ||||
| 				if(bIsHandbrakeOn) | ||||
| 					m_aWheelSpeed[CARWHEEL_REAR_LEFT] = 0.0f; | ||||
| 				else if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier) || acceleration == 0.0f) | ||||
| 					m_aWheelSpeed[CARWHEEL_REAR_LEFT] *= 0.95f; | ||||
| 				else{ | ||||
| 				else if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier) && acceleration != 0.0f){ | ||||
| 					if(acceleration > 0.0f){ | ||||
| 						if(m_aWheelSpeed[CARWHEEL_REAR_LEFT] < 2.0f) | ||||
| 							m_aWheelSpeed[CARWHEEL_REAR_LEFT] -= 0.2f; | ||||
| @@ -1184,15 +1182,15 @@ CAutomobile::ProcessControl(void) | ||||
| 						if(m_aWheelSpeed[CARWHEEL_REAR_LEFT] > -2.0f) | ||||
| 							m_aWheelSpeed[CARWHEEL_REAR_LEFT] += 0.1f; | ||||
| 					} | ||||
| 				}else{ | ||||
| 					m_aWheelSpeed[CARWHEEL_REAR_LEFT] *= 0.95f; | ||||
| 				} | ||||
| 				m_aWheelRotation[CARWHEEL_REAR_LEFT] += m_aWheelSpeed[CARWHEEL_REAR_LEFT]; | ||||
| 			} | ||||
| 			if(m_aWheelTimer[CARWHEEL_REAR_RIGHT] <= 0.0f){ | ||||
| 				if(bIsHandbrakeOn) | ||||
| 					m_aWheelSpeed[CARWHEEL_REAR_RIGHT] = 0.0f; | ||||
| 				else if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier) || acceleration == 0.0f) | ||||
| 					m_aWheelSpeed[CARWHEEL_REAR_RIGHT] *= 0.95f; | ||||
| 				else{ | ||||
| 				else if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier) && acceleration != 0.0f){ | ||||
| 					if(acceleration > 0.0f){ | ||||
| 						if(m_aWheelSpeed[CARWHEEL_REAR_RIGHT] < 2.0f) | ||||
| 							m_aWheelSpeed[CARWHEEL_REAR_RIGHT] -= 0.2f; | ||||
| @@ -1200,6 +1198,8 @@ CAutomobile::ProcessControl(void) | ||||
| 						if(m_aWheelSpeed[CARWHEEL_REAR_RIGHT] > -2.0f) | ||||
| 							m_aWheelSpeed[CARWHEEL_REAR_RIGHT] += 0.1f; | ||||
| 					} | ||||
| 				}else{ | ||||
| 					m_aWheelSpeed[CARWHEEL_REAR_RIGHT] *= 0.95f; | ||||
| 				} | ||||
| 				m_aWheelRotation[CARWHEEL_REAR_RIGHT] += m_aWheelSpeed[CARWHEEL_REAR_RIGHT]; | ||||
| 			} | ||||
| @@ -1215,10 +1215,10 @@ CAutomobile::ProcessControl(void) | ||||
| 			CVector wheelFwd, wheelRight, tmp; | ||||
|  | ||||
| 			if(m_aWheelTimer[CARWHEEL_FRONT_LEFT] > 0.0f){ | ||||
| 				if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier)) | ||||
| 					fThrust = 0.0f; | ||||
| 				else | ||||
| 				if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier)) | ||||
| 					fThrust = acceleration; | ||||
| 				else | ||||
| 					fThrust = 0.0f; | ||||
|  | ||||
| 				wheelFwd = GetForward(); | ||||
| 				wheelFwd -= DotProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_FRONT_LEFT].normal)*m_aWheelColPoints[CARWHEEL_FRONT_LEFT].normal; | ||||
| @@ -1258,10 +1258,10 @@ CAutomobile::ProcessControl(void) | ||||
| 			} | ||||
|  | ||||
| 			if(m_aWheelTimer[CARWHEEL_FRONT_RIGHT] > 0.0f){ | ||||
| 				if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier)) | ||||
| 					fThrust = 0.0f; | ||||
| 				else | ||||
| 				if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier)) | ||||
| 					fThrust = acceleration; | ||||
| 				else | ||||
| 					fThrust = 0.0f; | ||||
|  | ||||
| 				wheelFwd = GetForward(); | ||||
| 				wheelFwd -= DotProduct(wheelFwd, m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].normal)*m_aWheelColPoints[CARWHEEL_FRONT_RIGHT].normal; | ||||
| @@ -1305,9 +1305,7 @@ CAutomobile::ProcessControl(void) | ||||
|  | ||||
| 		if (!IsRealHeli()) { | ||||
| 			if(m_aWheelTimer[CARWHEEL_FRONT_LEFT] <= 0.0f){ | ||||
| 				if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier) || acceleration == 0.0f) | ||||
| 					m_aWheelSpeed[CARWHEEL_FRONT_LEFT] *= 0.95f; | ||||
| 				else{ | ||||
| 				if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier) && acceleration != 0.0f){ | ||||
| 					if(acceleration > 0.0f){ | ||||
| 						if(m_aWheelSpeed[CARWHEEL_FRONT_LEFT] < 2.0f) | ||||
| 							m_aWheelSpeed[CARWHEEL_FRONT_LEFT] -= 0.2f; | ||||
| @@ -1315,13 +1313,13 @@ CAutomobile::ProcessControl(void) | ||||
| 						if(m_aWheelSpeed[CARWHEEL_FRONT_LEFT] > -2.0f) | ||||
| 							m_aWheelSpeed[CARWHEEL_FRONT_LEFT] += 0.1f; | ||||
| 					} | ||||
| 				}else{ | ||||
| 					m_aWheelSpeed[CARWHEEL_FRONT_LEFT] *= 0.95f; | ||||
| 				} | ||||
| 				m_aWheelRotation[CARWHEEL_FRONT_LEFT] += m_aWheelSpeed[CARWHEEL_FRONT_LEFT]; | ||||
| 			} | ||||
| 			if(m_aWheelTimer[CARWHEEL_FRONT_RIGHT] <= 0.0f){ | ||||
| 				if(mod_HandlingManager.HasRearWheelDrive(pHandling->nIdentifier) || acceleration == 0.0f) | ||||
| 					m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] *= 0.95f; | ||||
| 				else{ | ||||
| 				if(mod_HandlingManager.HasFrontWheelDrive(pHandling->nIdentifier) && acceleration != 0.0f){ | ||||
| 					if(acceleration > 0.0f){ | ||||
| 						if(m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] < 2.0f) | ||||
| 							m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] -= 0.2f; | ||||
| @@ -1329,6 +1327,8 @@ CAutomobile::ProcessControl(void) | ||||
| 						if(m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] > -2.0f) | ||||
| 							m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] += 0.1f; | ||||
| 					} | ||||
| 				}else{ | ||||
| 					m_aWheelSpeed[CARWHEEL_FRONT_RIGHT] *= 0.95f; | ||||
| 				} | ||||
| 				m_aWheelRotation[CARWHEEL_FRONT_RIGHT] += m_aWheelSpeed[CARWHEEL_FRONT_RIGHT]; | ||||
| 			} | ||||
|   | ||||
| @@ -273,7 +273,7 @@ public: | ||||
| 	tBikeHandlingData *GetBikePointer(uint8 id) { return &BikeHandlingData[id-HANDLING_BIKE]; } | ||||
| 	tFlyingHandlingData *GetFlyingPointer(uint8 id); | ||||
| 	tBoatHandlingData *GetBoatPointer(uint8 id); | ||||
| 	bool HasRearWheelDrive(tVehicleType id) { return HandlingData[id].Transmission.nDriveType == 'R'; } | ||||
| 	bool HasFrontWheelDrive(tVehicleType id) { return HandlingData[id].Transmission.nDriveType == 'F'; } | ||||
| 	bool HasRearWheelDrive(tVehicleType id) { return HandlingData[id].Transmission.nDriveType != 'F'; } | ||||
| 	bool HasFrontWheelDrive(tVehicleType id) { return HandlingData[id].Transmission.nDriveType != 'R'; } | ||||
| }; | ||||
| extern cHandlingDataMgr mod_HandlingManager; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user