/** * Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. */ class SVehicleWheel extends Component native(Physics); enum EWheelSide { SIDE_None, SIDE_Left, SIDE_Right }; // INPUT TO CAR SIMULATION var() float Steer; // degrees var() float MotorTorque; // var() float BrakeTorque; // var() float ChassisTorque; // Torque applied back to the chassis (equal-and-opposite) from this wheel. var() float HandBrakeTorque; // PhysX 3 only // PARAMS var() bool bPoweredWheel; var() bool bHoverWheel; // Determines whether this wheel will collide with water /** If true, this wheel will collide with other vehicles (add RBCC_Vehicle to its RBCollideWithChannels). */ var() bool bCollidesVehicles; /** If true, this wheel will collide with pawns (add RBCC_Pawn to its RBCollideWithChannels). */ var() bool bCollidesPawns; /** How steering affects this wheel. 0.0 means it is not steered. 1.0 means steered fully normally. -1.0 means reversed steering. */ var() float SteerFactor; // Used to control the physics steering. It will be multiplied with HalfPi because the physics required range is (0,HalfPi) var() name SkelControlName; var SkelControlWheel WheelControl; var() name BoneName; 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 WheelWidth; // In PhysX 3 only var() float SuspensionTravel; // In PhysX 3, maximum elongation allowed by suspension spring, specified in m. var() float SuspensionSpeed; // Max speed at which rendered wheel will move up or down (0 = instant) var() ParticleSystem WheelParticleSystem; var() EWheelSide Side; // What side of the vehicle the wheel is on (optional). // Wheel slippyness factors - These factors scale the wheel slip curve defined in SVehicleSimBase var() float LongSlipFactor; var() float LatSlipFactor; var() float HandbrakeLongSlipFactor; var() float HandbrakeLatSlipFactor; var() float ParkedSlipFactor; // Internal sound variable var bool bIsSquealing; // OUTPUT FROM CAR SIMULATION // Calculated on startup var vector WheelPosition; // Wheel center in actor ref frame. Calculated using BoneOffset above. // Calculated each frame var bool bWheelOnGround; var float SpinVel; // Radians per sec var float LongSlipRatio; // Either the difference in linear velocity between ground and wheel or the slip ratio var float LatSlipAngle; // Either the difference in linear velocity between ground and wheel or the slip angle var vector ContactNormal; var vector LongDirection; var vector LatDirection; var float ContactForce; var float LongImpulse; var float LatImpulse; var float DesiredSuspensionPosition; // Desired vertical deflection position of suspension var float SuspensionPosition; // Output vertical deflection position of suspension var float CurrentRotation; // Output graphical rotation of the wheel. In degrees. // Used internally for physics stuff - DO NOT CHANGE! var transient const pointer WheelShape; var transient const int WheelMaterialIndex; /** the class to use for WheelParticleComp */ var class WheelPSCClass; var ParticleSystemComponent WheelParticleComp; /** parameter that should be set in WheelParticleComp to the wheel's slip velocity */ var name SlipParticleParamName; cpptext { #if WITH_NOVODEX class NxWheelShape* GetNxWheelShape() { return (NxWheelShape*)WheelShape; } #endif /** @return whether this wheel wants a particle component attached to it */ virtual UBOOL WantsParticleComponent(); } defaultproperties { HandBrakeTorque=4000 WheelRadius=35 WheelWidth=10 SuspensionTravel=30 LongSlipFactor=4000 LatSlipFactor=20000 HandbrakeLongSlipFactor=4000 HandbrakeLatSlipFactor=20000 ParkedSlipFactor=20000 WheelPSCClass=class'ParticleSystemComponent' SuspensionSpeed=50 SlipParticleParamName=WheelSlip bCollidesVehicles=TRUE }