I am currently working on The Exhaust emitters for my Dragracer. How do I get this to wotk for more than one joint? If only works on one of my exhaust pipes.
datablock ParticleData(DragTireParticle)
{
dragCoefficient = 10;
gravityCoefficient = -0.15;
inheritedVelFactor = 0.2;
constantAcceleration = 0.0;
lifetimeMS = 1250;
lifetimeVarianceMS = 150;
textureName = "base/data/particles/cloud";
spinSpeed = 50.0;
spinRandomMin = -500.0;
spinRandomMax = 500.0;
colors[0] = "5.0 5.0 5.0 0.2";
colors[1] = "5.0 5.0 5.0 0.0";
sizes[0] = 0.2;
sizes[1] = 3.9;
useInvAlpha = true;
};
datablock ParticleEmitterData(DragTireEmitter)
{
ejectionPeriodMS = 6;
periodVarianceMS = 0;
ejectionVelocity = 10;
velocityVariance = 5.0;
ejectionOffset = 0.0;
thetaMin = 0;
thetaMax = 95;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvance = false;
particles = DragTireParticle;
uiname = "Dragracer Tire Emitter";
};
datablock WheeledVehicleTire(DragBigTire)
{
shapeFile = "./DragBigTire.dts";
mass = 10;
radius = 1;
staticFriction = 5;
kineticFriction = 5;
restitution = 0.5;
// Spring that generates lateral tire forces
lateralForce = 18000;
lateralDamping = 4000;
lateralRelaxation = 0.01;
// Spring that generates longitudinal tire forces
longitudinalForce = 14000;
longitudinalDamping = 2000;
longitudinalRelaxation = 0.01;
};
datablock WheeledVehicleTire(DragSmallTire)
{
shapeFile = "./DragSmallTire.dts";
mass = 10;
radius = 1;
staticFriction = 5;
kineticFriction = 5;
restitution = 0.5;
// Spring that generates lateral tire forces
lateralForce = 20000;
lateralDamping = 6000;
lateralRelaxation = 0.01;
// Spring that generates longitudinal tire forces
longitudinalForce = 18000;
longitudinalDamping = 4000;
longitudinalRelaxation = 0.01;
};
datablock WheeledVehicleSpring(DragSmallSpring)
{
// Wheel suspension properties
length = 0.4; // Suspension travel
force = 2500; //2000; // Spring force
damping = 1500; //1500; // Spring damping
antiSwayForce = 1; //1; // Lateral anti-sway force
};
datablock WheeledVehicleSpring(DragBigSpring)
{
// Wheel suspension properties
length = 0.4; // Suspension travel
force = 1700; //1550; // Spring force
damping = 1000; //1000; // Spring damping
antiSwayForce = 1; //1; // Lateral anti-sway force
};
// Sounds //
////////////
datablock AudioProfile(fastImpactSound)
{
filename = "./fastimpact.WAV";
description = AudioDefault3d;
preload = true;
};
datablock AudioProfile(slowImpactSound)
{
filename = "./slowimpact.wav";
description = AudioDefault3d;
preload = true;
};
// Vehicle //
/////////////
datablock WheeledVehicleData(DragracerVehicle)
{
category = "Vehicles";
displayName = " ";
shapeFile = "./dragracer.dts";
emap = true;
minMountDist = 3;
numMountPoints = 1;
mountThread[0] = "sit";
maxDamage = 200.00;
destroyedLevel = 200.00;
speedDamageScale = 1.04;
collDamageThresholdVel = 20.0;
collDamageMultiplier = 0.02;
massCenter = "0 0 0";
//massBox = "2 5 1";
maxSteeringAngle = 0.6; // Maximum steering angle, should match animation
integration = 4; // Force integration time: TickSec/Rate
tireEmitter = DragTireEmitter; // All the tires use the same dust emitter
// 3rd person camera settings
cameraRoll = false; // Roll the camera with the vehicle
cameraMaxDist = 13; // Far distance from vehicle
cameraOffset = 7.5; // Vertical offset from camera mount point
cameraLag = 0.0; // Velocity lag of camera
cameraDecay = 0.75; // Decay per sec. rate of velocity lag
cameraTilt = 0.4;
collisionTol = 0.1; // Collision distance tolerance
contactTol = 0.1;
useEyePoint = false;
defaultTire = DragSmallTire;
defaultSpring = DragBigSpring;
flatTire = jeepflattire;
flatSpring = jeepflatspring;
numWheels = 4;
// Rigid Body
mass = 300;
density = 5.0;
drag = 3.0;
bodyFriction = 0.6;
bodyRestitution = 0.6;
minImpactSpeed = 10; // Impacts over this invoke the script callback
softImpactSpeed = 10; // Play SoftImpact Sound
hardImpactSpeed = 15; // Play HardImpact Sound
groundImpactMinSpeed = 10.0;
// Engine
engineTorque = 9000;
engineBrake = 2000;
brakeTorque = 8000;
maxWheelSpeed = 90;
rollForce = 300;
yawForce = 300;
pitchForce = 300;
rotationalDrag = 0.05;
// Advanced Steering
steeringAutoReturn = true;
steeringAutoReturnRate = 3.0;
steeringAutoReturnMaxSpeed = 4;
steeringUseStrafeSteering = true;
steeringStrafeSteeringRate = 0.1;
// Energy
maxEnergy = 100;
jetForce = 3000;
minJetEnergy = 30;
jetEnergyDrain = 2;
// Sounds
softImpactSound = slowImpactSound;
hardImpactSound = fastImpactSound;
//wheelImpactSound = slowImpactSound;
// explosion = VehicleExplosion;
justcollided = 0;
uiName = "Dragracer";
rideable = true;
lookUpLimit = 0.65;
lookDownLimit = 0.45;
paintable = true;
damageEmitter[0] = VehicleBurnEmitter;
damageEmitterOffset[0] = "0.0 0.0 0.0 ";
damageLevelTolerance[0] = 0.99;
damageEmitter[1] = VehicleBurnEmitter;
damageEmitterOffset[1] = "0.0 0.0 0.0 ";
damageLevelTolerance[1] = 1.0;
numDmgEmitterAreas = 1;
initialExplosionProjectile = DragracerExplosionProjectile;
initialExplosionOffset = 0; //offset only uses a z value for now
burnTime = 4000;
finalExplosionProjectile = DragracerFinalExplosionProjectile;
finalExplosionOffset = 0.5; //offset only uses a z value for now
minRunOverSpeed = 20; //how fast you need to be going to run someone over (do damage)
runOverDamageScale = 30; //when you run over someone, speed * runoverdamagescale = damage amt
runOverPushScale = 1000; //how hard a person you're running over gets pushed
};
function DragracerVehicle::onAdd(%this,%obj)
{
parent::onadd(%this,%obj);
%obj.mountable = true;
%obj.setWheelTire(0, DragSmallTire);
%obj.setWheelTire(1, DragSmallTire);
%obj.setWheelTire(2, DragBigTire);
%obj.setWheelTire(3, DragBigTire);
%obj.setWheelSpring(0, DragSmallSpring);
%obj.setWheelSpring(1, DragSmallSpring);
%obj.setWheelSpring(2, DragBigSpring);
%obj.setWheelSpring(3, DragBigSpring);
%obj.setWheelSteering(0,1);
%obj.setWheelSteering(1,1);
%obj.setWheelSteering(2,0);
%obj.setWheelSteering(3,0);
%obj.setWheelPowered(0,true);
%obj.setWheelPowered(1,true);
%obj.setWheelPowered(2,true);
%obj.setWheelPowered(3,true);
%obj.playthread(0,"propslow");
DragracerSmokeCheck(%obj);
}
datablock ParticleData(DragExhaustParticle)
{
textureName = "base/data/particles/cloud";
dragCoefficient = 0.0;
windCoefficient = 0.5;
gravityCoefficient = -0.5;
inheritedVelFactor = 0.2;
lifetimeMS = 300;
lifetimeVarianceMS = 0;
useInvAlpha = true;
spinRandomMin = 0.0;
spinRandomMax = 0.0;
colors[0] = "0.7 0.5 0.2 0.7";
colors[1] = "0.7 0.7 0.7 0.07";
colors[2] = "0.75 0.75 0.75 0.0";
sizes[0] = 0.20;
sizes[1] = 0.25;
sizes[2] = 3;
times[0] = 0;
times[1] = 0.1;
times[2] = 1;
};
datablock ParticleEmitterData(DragExhaustEmitter)
{
ejectionPeriodMS = 10;
periodVarianceMS = 0;
ejectionVelocity = 0.5;
velocityVariance = 0.0;
ejectionOffset = 0.1;
thetaMin = 0;
thetaMax = 180;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvance = false;
particles = "DragExhaustParticle";
};
datablock ShapeBaseImageData(DragExhaustImage1)
{
shapeFile = "base/data/shapes/empty.dts";
emap = false;
mountPoint = 6;
rotation = "1 0 0 -90";
stateName[0] = "Ready";
stateTransitionOnTimeout[0] = "FireA";
stateTimeoutValue[0] = 0.01;
stateName[1] = "FireA";
stateEmitter[1] = DragExhaustEmitter;
stateEmitterTime[1] = 10000;
};
function DragracerSmokeCheck(%obj)
{
%obj.mountImage(DragExhaustImage1,2);
}