initial CBike struct

This commit is contained in:
aap 2020-06-02 14:38:30 +02:00
parent 03d9525eb6
commit dbeaafbe99
4 changed files with 66 additions and 11 deletions

View file

@ -3041,22 +3041,22 @@ CAutomobile::ProcessControlInputs(uint8 pad)
// Steer left/right
if(CCamera::m_bUseMouse3rdPerson && !CVehicle::m_bDisableMouseSteering){
if(CPad::GetPad(pad)->GetMouseX() != 0.0f){
m_fSteerRatio += fMouseSteerSens*CPad::GetPad(pad)->GetMouseX();
m_fSteerInput += fMouseSteerSens*CPad::GetPad(pad)->GetMouseX();
nLastControlInput = 2;
if(Abs(m_fSteerRatio) < fMouseCentreRange)
m_fSteerRatio *= Pow(fMouseCentreMult, CTimer::GetTimeStep());
if(Abs(m_fSteerInput) < fMouseCentreRange)
m_fSteerInput *= Pow(fMouseCentreMult, CTimer::GetTimeStep());
}else if(CPad::GetPad(pad)->GetSteeringLeftRight() || nLastControlInput != 2){
// mouse hasn't move, steer with pad like below
m_fSteerRatio += (-CPad::GetPad(pad)->GetSteeringLeftRight()/128.0f - m_fSteerRatio)*
m_fSteerInput += (-CPad::GetPad(pad)->GetSteeringLeftRight()/128.0f - m_fSteerInput)*
0.2f*CTimer::GetTimeStep();
nLastControlInput = 0;
}
}else{
m_fSteerRatio += (-CPad::GetPad(pad)->GetSteeringLeftRight()/128.0f - m_fSteerRatio)*
m_fSteerInput += (-CPad::GetPad(pad)->GetSteeringLeftRight()/128.0f - m_fSteerInput)*
0.2f*CTimer::GetTimeStep();
nLastControlInput = 0;
}
m_fSteerRatio = clamp(m_fSteerRatio, -1.0f, 1.0f);
m_fSteerInput = clamp(m_fSteerInput, -1.0f, 1.0f);
// Accelerate/Brake
float acceleration = (CPad::GetPad(pad)->GetAccelerate() - CPad::GetPad(pad)->GetBrake())/255.0f;
@ -3113,10 +3113,10 @@ CAutomobile::ProcessControlInputs(uint8 pad)
// Actually turn wheels
static float fValue; // why static?
if(m_fSteerRatio < 0.0f)
fValue = -sq(m_fSteerRatio);
if(m_fSteerInput < 0.0f)
fValue = -sq(m_fSteerInput);
else
fValue = sq(m_fSteerRatio);
fValue = sq(m_fSteerInput);
m_fSteerAngle = DEGTORAD(pHandling->fSteeringLock) * fValue;
if(bComedyControls){

View file

@ -20,3 +20,58 @@ enum eBikePositions
BIKE_POS_BACKSEAT,
BIKE_POS_EXHAUST
};
class CBike : public CVehicle
{
public:
RwFrame *m_aBikeNodes[BIKE_NUM_NODES];
bool m_bLeanMatrixCalculated;
CMatrix m_leanMatrix;
CVector wheelieNormal;
CVector wheelieRight;
tBikeHandlingData *pBikeHandling;
int32 m_bikeAnimType;
uint8 m_wheelStatus[2];
CColPoint m_aWheelColPoints[4];
float m_aSuspensionSpringRatio[4];
float m_aSuspensionSpringRatioPrev[4];
float m_aWheelTimer[4];
float m_bike_unused1;
eSkidmarkType m_aWheelSkidmarkType[2];
bool m_aWheelSkidmarkBloody[2];
bool m_aWheelSkidmarkUnk[2];
float m_aWheelRotation[2];
float m_aWheelSpeed[2];
float m_aWheelPosition[2];
float m_aWheelBasePosition[2];
float m_aSuspensionSpringLength[4];
float m_aSuspensionLineLength[4];
float m_fHeightAboveRoad;
float m_fTraction;
float m_fRearForkLength;
float m_fFrontForkY;
float m_fFrontForkZ;
float m_fFrontForkSlope;
float m_fBikeSteerAngle;
float m_fLeanLRAngle;
float m_fLeanLRAngle2;
float m_fLeanInput;
uint32 field_478;
uint32 field_47C;
uint8 m_bike_unused2;
uint8 unused[3]; // looks like padding..but for what?
uint8 m_bike_flags;
int16 m_doingBurnout;
float m_fTireTemperature;
float someAngle;
uint32 field_490;
float m_fFireBlowUpTimer;
CPhysical *m_aGroundPhysical[4];
CVector m_aGroundOffset[4];
CEntity *m_pSetOnFireEntity;
uint8 m_nWheelsOnGround;
uint8 m_nDriveWheelsOnGround;
uint8 m_nDriveWheelsOnGroundPrev;
float m_fGasPedalAudio;
tWheelState m_aWheelState[2];
};

View file

@ -70,7 +70,7 @@ CVehicle::CVehicle(uint8 CreatedBy)
m_nCurrentGear = 1;
m_fChangeGearTime = 0.0f;
m_fSteerRatio = 0.0f;
m_fSteerInput = 0.0f;
m_type = ENTITY_TYPE_VEHICLE;
VehicleCreatedBy = CreatedBy;
m_nRouteSeed = 0;

View file

@ -242,7 +242,7 @@ public:
uint8 m_nCarHornDelay;
int8 m_comedyControlState;
CStoredCollPoly m_aCollPolys[2]; // poly which is under front/rear part of car
float m_fSteerRatio;
float m_fSteerInput;
eVehicleType m_vehType;
static void *operator new(size_t);