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); }
public void Update() { UpdateTransformationMatrix(); UpdatePosition(); UpdateVelocity(); Destination = DPos.magnitude; UpdateAngles(); UpdateIsMoveToTarget(); DesiredVelocityMarker = UpdateVelocityMarker(DPos); CurrentVelocityMarker = UpdateVelocityMarker(Velocity); }
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); }