Files
braf/source/braf_tracked/M41/physX.hpp

190 lines
5.3 KiB
C++

/// PhysX part
simulation = tankX;
enginePower = 433;
maxOmega = 300; //209;
peakTorque = 2254;
torqueCurve[] = {
{(700/2640), 0},
{(1600/2640), (2150/2850)},
{(1800/2640), (2800/2850)},
{(1900/2640), (2850/2850)},
{(2000/2640), (2800/2850)},
{(2200/2640), (2750/2850)},
{(2400/2640), (2600/2850)},
{(3640/2640),0}
};
/*
torqueCurve[] = {
{0 , 0},
{0.14 , 0.02},
{0.29 , 0.06},
{0.43 , 0.12},
{0.57 , 0.18},
{0.71 , 0.24},
{0.86 , 0.28},
{1 , 0.3},
};*/
thrustDelay = 0.1; /// how much time does it take to get the full thrust (default 1), used to reduce initial wheel slipping
clutchStrength = 180.0;
fuelCapacity = 520;
brakeIdleSpeed = 1.78; /// speed in m/s below which braking is applied
latency = 0.1;
tankTurnForce = 330000; /// Random magic number, expected to be something like 11 x mass of vehicle
//17000;//600000;
/// Gearbox and transmission
idleRpm = 500; // RPM at which the engine idles.
redRpm = 2000; // RPM at which the engine redlines.
engineLosses = 25; // power losses on the engine's crank-shaft (before the gearbox) in Nm. (Multiplied by the gear ratio)
transmissionLosses = 15; // power losses on wheel axis (in/after the gearbox) in Nm. (Constant)
//,"D6",1.425,"D7",1.25
changeGearMinEffectivity[]={0.5,0.15000001,0.94999999,0.97999999,0.94999999,0.95999999,0.96999998};
class complexGearbox {
GearboxRatios[] = {"R2",-8.9,"N",0,"D1",4.5,"D2",3.3,"D3",3.0,"D4",2.7,"D5",2.6};
TransmissionRatios[] = {"High",5};
gearBoxMode = "auto"; //gearbox can be of type: full-auto (only requires 'W' or 'S'), auto (requires shift between drive and reverse), semi-auto, manual
moveOffGear = 1; // defines what gear an automatic or semi-automatic gearbox will move off from stationary in. 1 by default.
driveString = "D"; // string to display in the HUD for forward gears.
neutralString = "N"; // string to display in the HUD for neutral gear.
reverseString = "R"; // string to display in the HUD for reverse gears.
transmissionDelay = 0.1;
};
/// end of gearbox
class Wheels {
class L2 {
boneName = "wheel_podkoloL1";
center = "wheel_1_2_axis";
boundary = "wheel_1_2_bound";
damping = 75.0;
// tanks do not have steerable wheels
steering = 0;
/// We need to distinguish the side to apply the right thrust value
side = "left";
/// weight of the wheel is defined per wheel, it reduces overall mass of vehicle
weight = 150;
mass = 150;
MOI = 25.1;
latStiffX = 25;
latStiffY = 280;
longitudinalStiffnessPerUnitGravity = 100000;
maxBrakeTorque = 40000;
sprungMass = 4000.0;
springStrength = 324000;
springDamperRate = 36000;
dampingRate = 1.0;
dampingRateInAir = 8030.0;
dampingRateDamaged = 10.0;
dampingRateDestroyed = 10000.0;
maxDroop = 0.15;
maxCompression = 0.15;
/*frictionVsSlipGraph[]=
{
{0,1.2},
{0.5,1.2},
{1,1.3}
};*/
};
class L3: L2 {
boneName = "wheel_podkolol2";
center = "wheel_1_3_axis";
boundary = "wheel_1_3_bound";
};
class L4: L2 {
boneName = "wheel_podkolol3";
center = "wheel_1_4_axis";
boundary = "wheel_1_4_bound";
};
class L5: L2 {
boneName = "wheel_podkolol4";
center = "wheel_1_5_axis";
boundary = "wheel_1_5_bound";
};
class L6: L2 {
boneName = "wheel_podkolol5";
center = "wheel_1_6_axis";
boundary = "wheel_1_6_bound";
};
// rear left wheel, usually Idler or Drive Sproket
// Note, this wheel may not always be touching the ground, but we need it anyway!
class L9: L2 {
boneName = "wheel_podkolol9";
center = "wheel_1_9_axis";
boundary = "wheel_1_9_bound";
sprungMass = 1500.0;
springStrength = 37500;
springDamperRate = 7500;
maxDroop = 0;
maxCompression = 0;
};
// front left wheel, usually Idler or Drive Sproket
// Note, this wheel may not always be touching the ground, but we need it anyway!
class L1: L2 {
boneName = "";
center = "wheel_1_1_axis";
boundary = "wheel_1_1_bound";
sprungMass = 1500.0;
springStrength = 37500;
springDamperRate = 7500;
maxDroop = 0;
maxCompression = 0;
};
class R2: L2 {
boneName = "wheel_podkolop1";
center = "wheel_2_2_axis";
boundary = "wheel_2_2_bound";
side = "right";
};
class R3: R2 {
boneName = "wheel_podkolop2";
center = "wheel_2_3_axis";
boundary = "wheel_2_3_bound";
};
class R4: R2 {
boneName = "wheel_podkolop3";
center = "wheel_2_4_axis";
boundary = "wheel_2_4_bound";
};
class R5: R2 {
boneName = "wheel_podkolop4";
center = "wheel_2_5_axis";
boundary = "wheel_2_5_bound";
};
class R6: R2 {
boneName = "wheel_podkolop5";
center = "wheel_2_6_axis";
boundary = "wheel_2_6_bound";
};
// rear right wheel, usually Idler or Drive Sproket
// Note, this wheel may not always be touching the ground, but we need it anyway!
class R9: R2 {
boneName = "wheel_podkolop9";
center = "wheel_2_9_axis";
boundary = "wheel_2_9_bound";
sprungMass = 1500.0;
springStrength = 37500;
springDamperRate = 7500;
maxDroop = 0;
maxCompression = 0;
};
// front right wheel, usually Idler or Drive Sproket
// Note, this wheel may not always be touching the ground, but we need it anyway!
class R1: R2 {
boneName = "";
center = "wheel_2_1_axis";
boundary = "wheel_2_1_bound";
sprungMass = 1500.0;
springStrength = 37500;
springDamperRate = 7500;
maxDroop = 0;
maxCompression = 0;
};
};
/// End of PhysX