Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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));
        }