92 lines
3.2 KiB
Ucode
92 lines
3.2 KiB
Ucode
class SVehicleWheel extends Object
|
|
native;
|
|
|
|
// INPUT
|
|
var() float Steer; // degrees
|
|
|
|
var() float DriveForce; // resultant linear driving force at wheel center
|
|
var() float LongFriction; // maximum linear longitudinal (roll) friction force
|
|
var() float LatFriction; // maximum linear longitudinal (roll) friction force
|
|
var() float LongSlip;
|
|
var() float LatSlip;
|
|
var() float ChassisTorque; // Torque applied back to the chassis (equal-and-opposite) from this wheel.
|
|
|
|
// PARAMS
|
|
var() bool bPoweredWheel;
|
|
var() bool bHandbrakeWheel;
|
|
var() bool bTrackWheel;
|
|
var() bool bLeftTrack;
|
|
var() enum EVehicleSteerType
|
|
{
|
|
VST_Fixed,
|
|
VST_Steered,
|
|
VST_Inverted
|
|
} SteerType; // How steering affects this wheel.
|
|
|
|
var() name BoneName;
|
|
var() EAxis BoneRollAxis; // Local axis to rotate the wheel around for normal rolling movement.
|
|
var() EAxis BoneSteerAxis; // Local axis to rotate the wheel around for steering.
|
|
var() vector BoneOffset; // Offset from wheel bone to line check point (middle of tyre). NB: Not affected by scale.
|
|
var() float WheelRadius; // Length of line check. Usually 2x wheel radius.
|
|
|
|
var() float Softness;
|
|
var() float PenScale;
|
|
var() float PenOffset;
|
|
var() float Restitution;
|
|
var() float Adhesion;
|
|
var() float WheelInertia;
|
|
var() float SuspensionTravel;
|
|
var() float SuspensionOffset;
|
|
var() float HandbrakeSlipFactor;
|
|
var() float HandbrakeFrictionFactor;
|
|
var() float SuspensionMaxRenderTravel;
|
|
|
|
var() name SupportBoneName; // Name of strut etc. that will be rotated around local X as wheel goes up and down.
|
|
var() EAxis SupportBoneAxis; // Local axis to rotate support bone around.
|
|
|
|
// Approximations to Pacejka's Magic Formula
|
|
var() InterpCurve LongFrictionFunc; // Function of SlipVel
|
|
var() InterpCurve LatSlipFunc; // Function of SpinVel
|
|
|
|
// OUTPUT
|
|
|
|
// Calculated on startup
|
|
var vector WheelPosition; // Wheel center in actor ref frame. Calculated using BoneOffset above.
|
|
var float SupportPivotDistance; // If a SupportBoneName is specified, this is the distance used to calculate the anglular displacement.
|
|
|
|
// Calculated each frame
|
|
var bool bWheelOnGround;
|
|
var float TireLoad; // Load on tire
|
|
var vector WheelDir; // Wheel 'forward' in world ref frame. Unit length.
|
|
var vector WheelAxle; // Wheel axle in world ref frame. Unit length.
|
|
|
|
var float SpinVel; // Radians per sec
|
|
var float TrackVel; // Radians per sec
|
|
|
|
var float SlipAngle; // Angle between wheel facing direction and wheel travelling direction. In degrees.
|
|
|
|
var float SlipVel; // Difference in linear velocity between ground and wheel at contact.
|
|
|
|
var float SuspensionPosition; // Output position of
|
|
var float CurrentRotation;
|
|
|
|
|
|
// Used internally for Karma stuff - DO NOT CHANGE!
|
|
var transient const pointer KContact;
|
|
|
|
defaultproperties
|
|
{
|
|
HandbrakeSlipFactor=1.0
|
|
HandbrakeFrictionFactor=1.0
|
|
Softness=0.05
|
|
PenScale=1.0
|
|
WheelInertia=1.0
|
|
SteerType=VST_Fixed
|
|
SuspensionTravel=50.0
|
|
SuspensionMaxRenderTravel=50.0
|
|
WheelRadius=35
|
|
BoneRollAxis=AXIS_X
|
|
BoneSteerAxis=AXIS_Z
|
|
SupportBoneAxis=AXIS_Y
|
|
}
|