diff --git a/BahaTurret/MissileLauncher.cs b/BahaTurret/MissileLauncher.cs index 2b739b753..5a0173a13 100644 --- a/BahaTurret/MissileLauncher.cs +++ b/BahaTurret/MissileLauncher.cs @@ -1660,6 +1660,8 @@ void ReceiveRadarPing(Vessel v, Vector3 source, RadarWarningReceiver.RWRThreatTy int snapshotTicker; int locksCount = 0; TargetSignatureData[] scannedTargets; + float radarFailTimer = 0; + float maxRadarFailTime = 1; void UpdateRadarTarget() { targetAcquired = false; @@ -1689,15 +1691,32 @@ void UpdateRadarTarget() targetPosition = radarTarget.predictedPosition; targetVelocity = radarTarget.velocity; targetAcceleration = radarTarget.acceleration; - //radarTarget.signalStrength = + radarFailTimer = 0; return; } else { - Debug.Log("Semi-Active Radar guidance failed. Parent radar lost target."); - radarTarget = TargetSignatureData.noTarget; - legacyTargetVessel = null; - return; + if(radarFailTimer > maxRadarFailTime) + { + Debug.Log("Semi-Active Radar guidance failed. Parent radar lost target."); + radarTarget = TargetSignatureData.noTarget; + legacyTargetVessel = null; + return; + } + else + { + if(radarFailTimer == 0) + { + Debug.Log("Semi-Active Radar guidance failed - waiting for data"); + } + radarFailTimer += Time.fixedDeltaTime; + radarTarget.timeAcquired = Time.time; + radarTarget.position = radarTarget.predictedPosition; + targetPosition = radarTarget.predictedPosition; + targetVelocity = radarTarget.velocity; + targetAcceleration = Vector3.zero; + targetAcquired = true; + } } } else @@ -1754,13 +1773,14 @@ void UpdateRadarTarget() targetPosition = radarTarget.predictedPosition + (radarTarget.velocity * Time.fixedDeltaTime); targetVelocity = radarTarget.velocity; targetAcceleration = radarTarget.acceleration; - + radarFailTimer = 0; if(!activeRadar && Time.time - timeFired > 1) { if(locksCount == 0) { RadarWarningReceiver.PingRWR(ray, lockedSensorFOV, RadarWarningReceiver.RWRThreatTypes.MissileLaunch, 2f); Debug.Log("Pitbull! Radar missile has gone active. Radar sig strength: " + radarTarget.signalStrength.ToString("0.0")); + } else if(locksCount > 2) { diff --git a/BahaTurret/TargetSignatureData.cs b/BahaTurret/TargetSignatureData.cs index 6144fd20d..a779be8f3 100644 --- a/BahaTurret/TargetSignatureData.cs +++ b/BahaTurret/TargetSignatureData.cs @@ -140,7 +140,10 @@ public Vector3 position //return FlightGlobals.currentMainBody.GetWorldSurfacePosition(geoPos.x, geoPos.y, geoPos.z); return VectorUtils.GetWorldSurfacePostion(geoPos, FlightGlobals.currentMainBody); } - + } + set + { + geoPos = VectorUtils.WorldPositionToGeoCoords(value, FlightGlobals.currentMainBody); } } diff --git a/BahaTurret/bin/Release/BahaTurret.dll b/BahaTurret/bin/Release/BahaTurret.dll index be4c40b61..4a64dbf09 100644 Binary files a/BahaTurret/bin/Release/BahaTurret.dll and b/BahaTurret/bin/Release/BahaTurret.dll differ diff --git a/BahaTurret/obj/x86/Release/BahaTurret.dll b/BahaTurret/obj/x86/Release/BahaTurret.dll index be4c40b61..4a64dbf09 100644 Binary files a/BahaTurret/obj/x86/Release/BahaTurret.dll and b/BahaTurret/obj/x86/Release/BahaTurret.dll differ