rott/kf_sources/Engine/Classes/SVehicleWheel.uc
2026-07-14 20:27:09 +07:00

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
}