private float GetDesiredSpeedCoeff(Track track, ChassisComponent chassis) { float effectiveMoveAxis = chassis.EffectiveMoveAxis; float effectiveTurnAxis = chassis.EffectiveTurnAxis; return((effectiveMoveAxis != 0f) ? ((effectiveTurnAxis != 0f) ? ((effectiveMoveAxis * (3f + (track.side * effectiveTurnAxis))) / 4f) : effectiveMoveAxis) : ((track.side * effectiveTurnAxis) * 0.5f)); }
private void AnimateTrackWithContacts(Track track, AliveChassisAnimationNode node, float dt) { ChassisComponent chassis = node.chassis; float forwardTrackSpeed = this.GetForwardTrackSpeed(track, node.rigidbody.Rigidbody); if (this.RequiresSynchronizedAnimation(track, chassis, forwardTrackSpeed)) { track.animationSpeed = forwardTrackSpeed; } else { float targetValue = this.GetDesiredSpeedCoeff(track, chassis) * 0.05f; track.SetAnimationSpeed(targetValue, node.speed.Acceleration * dt); } }
private bool RequiresSynchronizedAnimation(Track track, ChassisComponent chassis, float trackSpeed) { float desiredSpeedCoeff = this.GetDesiredSpeedCoeff(track, chassis); return(((Mathf.Abs(trackSpeed) > 0.04f) || (desiredSpeedCoeff == 0f)) || ((MathUtil.SignEpsilon(trackSpeed, 0.01f) * MathUtil.Sign(desiredSpeedCoeff)) == -1f)); }