202 lines
6.2 KiB
JavaScript
202 lines
6.2 KiB
JavaScript
GameLib.D3.RaycastWheel = function(
|
|
engine,
|
|
chassisConnectionPointLocal,
|
|
chassisConnectionPointWorld,
|
|
directionLocal,
|
|
directionWorld,
|
|
axleLocal,
|
|
axleWorld,
|
|
suspensionRestLength,
|
|
suspensionMaxLength,
|
|
radius,
|
|
suspensionStiffness,
|
|
dampingCompression,
|
|
dampingRelaxation,
|
|
frictionSlip,
|
|
steering,
|
|
rotation,
|
|
deltaRotation,
|
|
rollInfluence,
|
|
maxSuspensionForce,
|
|
clippedInvContactDotSuspension,
|
|
suspensionRelativeVelocity,
|
|
suspensionForce,
|
|
skidInfo,
|
|
suspensionLength,
|
|
maxSuspensionTravel,
|
|
useCustomSlidingRotationalSpeed,
|
|
customSlidingRotationalSpeed
|
|
) {
|
|
this.engine = engine;
|
|
this.engine.isNotCannonThrow();
|
|
|
|
this.id = GameLib.Utils.RandomId();
|
|
|
|
if(typeof chassisConnectionPointLocal == 'undefined' || chassisConnectionPointLocal == null) {
|
|
chassisConnectionPointLocal = new this.engine.instance.Vec3();
|
|
}
|
|
this.chassisConnectionPointLocal = chassisConnectionPointLocal;
|
|
|
|
if(typeof chassisConnectionPointWorld == 'undefined' || chassisConnectionPointWorld == null) {
|
|
chassisConnectionPointWorld = new this.engine.instance.Vec3();
|
|
}
|
|
this.chassisConnectionPointWorld = chassisConnectionPointWorld;
|
|
|
|
if(typeof directionLocal == 'undefined' || directionLocal == null) {
|
|
directionLocal = new this.engine.instance.Vec3();
|
|
}
|
|
this.directionLocal = directionLocal;
|
|
|
|
if(typeof directionWorld == 'undefined' || directionWorld == null) {
|
|
directionWorld = new this.engine.instance.Vec3();
|
|
}
|
|
this.directionWorld = directionWorld;
|
|
|
|
if(typeof axleLocal == 'undefined' || axleLocal == null) {
|
|
axleLocal = new this.engine.instance.Vec3();
|
|
}
|
|
this.axleLocal = axleLocal;
|
|
|
|
if(typeof axleWorld == 'undefined' || axleWorld == null) {
|
|
axleWorld = new this.engine.instance.Vec3();
|
|
}
|
|
this.axleWorld = axleWorld;
|
|
|
|
if(typeof suspensionRestLength == 'undefined' || suspensionRestLength == null) {
|
|
suspensionRestLength = 1;
|
|
}
|
|
this.suspensionRestLength = suspensionRestLength;
|
|
|
|
if(typeof suspensionMaxLength == 'undefined' || suspensionMaxLength == null) {
|
|
suspensionMaxLength = 2;
|
|
}
|
|
this.suspensionMaxLength = suspensionMaxLength;
|
|
|
|
if(typeof radius == 'undefined' || radius == null) {
|
|
radius = 1;
|
|
}
|
|
this.radius = radius;
|
|
|
|
if(typeof suspensionStiffness == 'undefined' || suspensionStiffness == null) {
|
|
suspensionStiffness = 100;
|
|
}
|
|
this.suspensionStiffness = suspensionStiffness;
|
|
|
|
if(typeof dampingCompression == 'undefined' || dampingCompression == null) {
|
|
dampingCompression = 10;
|
|
}
|
|
this.dampingCompression = dampingCompression;
|
|
|
|
if(typeof dampingRelaxation == 'undefined' || dampingRelaxation == null) {
|
|
dampingRelaxation = 10;
|
|
}
|
|
this.dampingRelaxation = dampingRelaxation;
|
|
|
|
if(typeof frictionSlip == 'undefined' || frictionSlip == null) {
|
|
frictionSlip = 10000;
|
|
}
|
|
this.frictionSlip = frictionSlip;
|
|
|
|
if(typeof steering == 'undefined' || steering == null) {
|
|
steering = 0;
|
|
}
|
|
this.steering = steering;
|
|
|
|
if(typeof rotation == 'undefined' || rotation == null) {
|
|
rotation = 0;
|
|
}
|
|
this.rotation = rotation;
|
|
|
|
if(typeof deltaRotation == 'undefined' || deltaRotation == null) {
|
|
deltaRotation = 0;
|
|
}
|
|
this.deltaRotation = deltaRotation;
|
|
|
|
if(typeof rollInfluence == 'undefined' || rollInfluence == null) {
|
|
rollInfluence = 0.01;
|
|
}
|
|
this.rollInfluence = rollInfluence;
|
|
|
|
if(typeof maxSuspensionForce == 'undefined' || maxSuspensionForce == null) {
|
|
maxSuspensionForce = Number.MAX_VALUE;
|
|
}
|
|
this.maxSuspensionForce = maxSuspensionForce;
|
|
|
|
if(typeof clippedInvContactDotSuspension == 'undefined' || clippedInvContactDotSuspension == null) {
|
|
clippedInvContactDotSuspension = 1;
|
|
}
|
|
this.clippedInvContactDotSuspension = clippedInvContactDotSuspension;
|
|
|
|
if(typeof suspensionRelativeVelocity == 'undefined' || suspensionRelativeVelocity == null) {
|
|
suspensionRelativeVelocity = 0;
|
|
}
|
|
this.suspensionRelativeVelocity = suspensionRelativeVelocity;
|
|
|
|
if(typeof suspensionForce == 'undefined' || suspensionForce == null) {
|
|
suspensionForce = 0;
|
|
}
|
|
this.suspensionForce = suspensionForce;
|
|
|
|
if(typeof skidInfo == 'undefined' || skidInfo == null) {
|
|
skidInfo = 0;
|
|
}
|
|
this.skidInfo = skidInfo;
|
|
|
|
if(typeof suspensionLength == 'undefined' || suspensionLength == null) {
|
|
suspensionLength = 0;
|
|
}
|
|
this.suspensionLength = suspensionLength;
|
|
|
|
if(typeof maxSuspensionTravel == 'undefined' || maxSuspensionTravel == null) {
|
|
maxSuspensionTravel = 1;
|
|
}
|
|
this.maxSuspensionTravel = maxSuspensionTravel;
|
|
|
|
if(typeof useCustomSlidingRotationalSpeed == 'undefined' || useCustomSlidingRotationalSpeed == null) {
|
|
useCustomSlidingRotationalSpeed = false;
|
|
}
|
|
this.useCustomSlidingRotationalSpeed = useCustomSlidingRotationalSpeed;
|
|
|
|
if(typeof customSlidingRotationalSpeed == 'undefined' || customSlidingRotationalSpeed == null) {
|
|
customSlidingRotationalSpeed = -0.1;
|
|
}
|
|
this.customSlidingRotationalSpeed = customSlidingRotationalSpeed;
|
|
|
|
this.instance = this.createInstance();
|
|
|
|
// this gets assigned at runtime, when the wheel gets added to a vehicle
|
|
this.wheelIndex = -1;
|
|
};
|
|
|
|
GameLib.D3.RaycastWheel.prototype.createInstance = function() {
|
|
return {
|
|
chassisConnectionPointLocal : this.chassisConnectionPointLocal,
|
|
chassisConnectionPointWorld : this.chassisConnectionPointWorld,
|
|
directionLocal : this.directionLocal,
|
|
directionWorld : this.directionWorld,
|
|
axleLocal : this.axleLocal,
|
|
axleWorld : this.axleWorld,
|
|
suspensionRestLength : this.suspensionRestLength,
|
|
suspensionMaxLength : this.suspensionMaxLength,
|
|
radius : this.radius,
|
|
suspensionStiffness : this.suspensionStiffness,
|
|
dampingCompression : this.dampingCompression,
|
|
dampingRelaxation : this.dampingRelaxation,
|
|
frictionSlip : this.frictionSlip,
|
|
steering : this.steering,
|
|
rotation : this.rotation,
|
|
deltaRotation : this.deltaRotation,
|
|
rollInfluence : this.rollInfluence,
|
|
maxSuspensionForce : this.maxSuspensionForce,
|
|
clippedInvContactDotSuspension : this.clippedInvContactDotSuspension,
|
|
suspensionRelativeVelocity : this.suspensionRelativeVelocity,
|
|
suspensionForce : this.suspensionForce,
|
|
skidInfo : this.skidInfo,
|
|
suspensionLength : this.suspensionLength,
|
|
maxSuspensionTravel : this.maxSuspensionTravel,
|
|
useCustomSlidingRotationalSpeed : this.useCustomSlidingRotationalSpeed,
|
|
customSlidingRotationalSpeed : this.customSlidingRotationalSpeed
|
|
};
|
|
|
|
};
|