예제 #1
0
        public void Update()
        {
            UpdateTransformationMatrix();
            UpdatePosition();


            if (!HighLogic.CurrentGame.Parameters.CustomParams <KURSSettings_2>().altOverlay)
            {
                var velocity = UpdateSpeed();
                lastDestination = Destination;
                Destination     = (float)Math.Sqrt(Math.Pow(DX, 2) + Math.Pow(DY, 2) + Math.Pow(DZ, 2));
                closureRate     = velocity.magnitude;
                if (lastDestination < Destination)
                {
                    closureRate *= -1;
                }
            }
            else
            {
                UpdateVelocity();
                Destination = DPos.magnitude;
            }
            UpdateAngles();
            UpdateIsMoveToTarget();
            DesiredVelocityMarker = UpdateVelocityMarker(DPos);
            CurrentVelocityMarker = UpdateVelocityMarker(Velocity);
        }
예제 #2
0
 public void Update()
 {
     UpdateTransformationMatrix();
     UpdatePosition();
     UpdateVelocity();
     Destination = DPos.magnitude;
     UpdateAngles();
     UpdateIsMoveToTarget();
     DesiredVelocityMarker = UpdateVelocityMarker(DPos);
     CurrentVelocityMarker = UpdateVelocityMarker(Velocity);
 }
예제 #3
0
        private VelocityMarker UpdateVelocityMarker(Vector3 velocity)
        {
            const float    epsilon        = 0.000001f;
            VelocityMarker velocityMarker = new VelocityMarker();
            float          zOverX         = Mathf.Sign(velocity.x) * velocity.z / (Mathf.Abs(velocity.x) + epsilon);
            float          zOverY         = Mathf.Sign(velocity.y) * velocity.z / (Mathf.Abs(velocity.y) + epsilon);

            velocityMarker.X       = Mathf.Sign(velocity.z) * Mathf.Sign(zOverX) / (1 + Mathf.Abs(zOverX));
            velocityMarker.Y       = Mathf.Sign(velocity.z) * Mathf.Sign(zOverY) / (1 + Mathf.Abs(zOverY));
            velocityMarker.X       = (velocityMarker.X + 1) / 2;
            velocityMarker.Y       = (velocityMarker.Y + 1) / 2;
            velocityMarker.Forward = velocity.z > 0;
            return(velocityMarker);
        }