public unsafe override void SetInputData(InputDataTypes inputType, InputSmoothingSettings smoothingSettings, Pair <float, float>[] steerVsForwardSpeedTable, float accel, float brake, float steer, float handbrake) { if (steerVsForwardSpeedTable.Length > 8) { Log.Fatal("PhysXPhysicsVehicle: SetInputData: The amount of steer vs forward speed table item can't be more than 8."); } if (nativeVehicle != IntPtr.Zero) { float[] smoothingSettings2 = new float[] { smoothingSettings.RiseRateAccel, smoothingSettings.RiseRateBrake, smoothingSettings.RiseRateSteer, smoothingSettings.RiseRateHandbrake, smoothingSettings.FallRateAccel, smoothingSettings.FallRateBrake, smoothingSettings.FallRateSteer, smoothingSettings.FallRateHandbrake }; float[] steerVsForwardSpeedTable2 = new float[steerVsForwardSpeedTable.Length * 2]; for (int n = 0; n < steerVsForwardSpeedTable.Length; n++) { steerVsForwardSpeedTable2[n * 2 + 0] = steerVsForwardSpeedTable[n].First; steerVsForwardSpeedTable2[n * 2 + 1] = steerVsForwardSpeedTable[n].Second; } fixed(float *pSmoothingSettings = smoothingSettings2, pSteerVsForwardSpeedTable = steerVsForwardSpeedTable2) { PhysXNativeVehicle.SetInputData(nativeVehicle, inputType == InputDataTypes.Digital, pSmoothingSettings, steerVsForwardSpeedTable.Length, pSteerVsForwardSpeedTable, accel, brake, steer, handbrake); } } }
public unsafe override void SetInputData( InputDataTypes inputType, InputSmoothingSettings smoothingSettings, Pair<float, float>[] steerVsForwardSpeedTable, float accel, float brake, float steer, float handbrake ) { if( steerVsForwardSpeedTable.Length > 8 ) Log.Fatal( "PhysXPhysicsVehicle: SetInputData: The amount of steer vs forward speed table item can't be more than 8." ); if( nativeVehicle != IntPtr.Zero ) { float[] smoothingSettings2 = new float[] { smoothingSettings.RiseRateAccel, smoothingSettings.RiseRateBrake, smoothingSettings.RiseRateSteer, smoothingSettings.RiseRateHandbrake, smoothingSettings.FallRateAccel, smoothingSettings.FallRateBrake, smoothingSettings.FallRateSteer, smoothingSettings.FallRateHandbrake }; float[] steerVsForwardSpeedTable2 = new float[ steerVsForwardSpeedTable.Length * 2 ]; for( int n = 0; n < steerVsForwardSpeedTable.Length; n++ ) { steerVsForwardSpeedTable2[ n * 2 + 0 ] = steerVsForwardSpeedTable[ n ].First; steerVsForwardSpeedTable2[ n * 2 + 1 ] = steerVsForwardSpeedTable[ n ].Second; } fixed( float* pSmoothingSettings = smoothingSettings2, pSteerVsForwardSpeedTable = steerVsForwardSpeedTable2 ) { PhysXNativeVehicle.SetInputData( nativeVehicle, inputType == InputDataTypes.Digital, pSmoothingSettings, steerVsForwardSpeedTable.Length, pSteerVsForwardSpeedTable, accel, brake, steer, handbrake ); } } }