/**
 * Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
 */
class UDKVehicleSimCar extends SVehicleSimCar
	native;

/** Torque vs Speed curve: This curve approximates a transmission as opposed to actually simulating one as in SVehicleSimTransmission
    In general you want to have a higher torque at low speed and a lower torque at high speed */
var()	InterpCurveFloat      TorqueVSpeedCurve;

/** Translates forward velocity into an EngineRPM that can be used for effects and sounds */
var()	InterpCurveFloat      EngineRPMCurve;

/** Limited slip differential: 0.60 would mean 60% of the power is routed through the LSD and 40% is divided evenly */
var()   float                 LSDFactor;

/** ThrottleSpeed is the speed at which the vehicle will increase its ActualThrottle to get to the desired Throttle */
var()   float                 ThrottleSpeed;

// Internal
var     float               MinRPM;
var     float               MaxRPM;
var     float               ActualThrottle;

/** flag when throttle was forced up to prevent back slipping */
var		bool				bForceThrottle;

/** flag set when bForceThrottle has been used, and throttle has not been zeroed again */
var		bool				bHasForcedThrottle;

/** flag to prevent braking to a stop with no driver */
var		bool				bDriverlessBraking;

/** steering reduction factor when have wheels in air (to make vehicles easier to control) */
var()	float				SteeringReductionFactor;

/** steering reduction ramp up rate (1/this = time to full steering reduction).  ramps down at half this rate */
var() float					SteeringReductionRampUpRate;

/** current steering reduction value (scales up and down over time */
var float					CurrentSteeringReduction;

/** how many wheels must be on ground in order to avoid steering reduction */
var()	int					NumWheelsForFullSteering;

/** speed at which steering reduction is in full effect */
var()	float				SteeringReductionSpeed;

/** speed at which steering reduction starts */
var()	float				SteeringReductionMinSpeed;

/** minimum speed before torque reduction sets in when turning hard */
var()	float				MinHardTurnSpeed;

/** motor torque applied during hard turns (don't want to accelerate through hard turns */
var()	float				HardTurnMotorTorque;

/** whether should auto-handbrake when wheels on one side are off the ground */
var()	bool				bAutoHandbrake;

/** How quickly the handbrake is turned off (it is turned on immediately) */
var()	float				HandbrakeSpeed;

/** Internal - current amount of handbrake applied. */
var		float				ActualHandbrake;

/** When driving into something, reduce friction on the wheels. */
var()	float				FrontalCollisionGripFactor;

/** When turning hard on console, reduce lateral grip to enhance sliding around. */
var()	float				ConsoleHardTurnGripFactor;

/** Damping on yaw based on vehicle speed. */
var()	float				SpeedBasedTurnDamping;

/** Torque to apply when vehicle is in ato allow some air control. */
var()	float				AirControlTurnTorque;

/** Torque applied when in the air to try and keep vehicle horizontal. */
var()	float				InAirUprightTorqueFactor;

/** Max torque that can be applied to try and */
var()	float				InAirUprightMaxTorque;

cpptext
{
	// SVehicleSimBase interface.
	virtual void UpdateVehicle(ASVehicle* Vehicle, FLOAT DeltaTime);
	virtual FLOAT GetEngineOutput(ASVehicle* Vehicle);
	virtual void ProcessCarInput(ASVehicle* Vehicle);
	virtual void UpdateHandbrake(ASVehicle* Vehicle);
}

defaultproperties
{
	ThrottleSpeed=0.2
	bDriverlessBraking=true
	NumWheelsForFullSteering=0
	SteeringReductionFactor=1.0
	SteeringReductionMinSpeed=2500.0
	SteeringReductionSpeed=2500.0
	CurrentSteeringReduction=1.0
	SteeringReductionRampUpRate=5.0
	MinHardTurnSpeed=250.0
	HardTurnMotorTorque=0.4
	FrontalCollisionGripFactor=1.0
	ConsoleHardTurnGripFactor=1.0
	HandbrakeSpeed=2.0
}
