diff --git a/PlaneGcsSdk.Contract_Shared/Copters/ICopterActions.cs b/PlaneGcsSdk.Contract_Shared/Copters/ICopterActions.cs
index 43c88fc..c8dcdf4 100644
--- a/PlaneGcsSdk.Contract_Shared/Copters/ICopterActions.cs
+++ b/PlaneGcsSdk.Contract_Shared/Copters/ICopterActions.cs
@@ -153,5 +153,9 @@ namespace Plane.Copters
Task DoCommandAckAsync(ushort command, byte result);
+
+ //强制刷新位置
+ void RefreashLoc();
+
}
}
diff --git a/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.cs b/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.cs
index ef68b6e..3c52310 100644
--- a/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.cs
+++ b/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.cs
@@ -723,7 +723,11 @@ namespace Plane.Copters
public string LEDColor
{
get { return _LEDColor; }
- set { Set(nameof(LEDColor), ref _LEDColor, value); }
+ set {
+ if (Set(nameof(LEDColor), ref _LEDColor, value))
+ //强制刷新颜色--在刷新位置时才刷新颜色
+ RefreashLoc();
+ }
}
#if PRIVATE
@@ -1131,14 +1135,33 @@ namespace Plane.Copters
protected void RaiseLocationChanged() => LocationChanged?.Invoke(this, EventArgs.Empty);
- protected void RaiseLocationChangedIfNeeded()
+ public void RefreashLoc()
{
- if (_lastChangedLocation == null || this.CalcDistance(_lastChangedLocation) >= 0.5 || DateTime.Now.AddMilliseconds(-500) >= _lastRaiseLocationChangedTime)
+ RaiseLocationChangedIfNeeded(true);
+ }
+
+ protected void RaiseLocationChangedIfNeeded(bool forcemk=false)
+ {
+ //强制刷新位置
+ if (forcemk)
+ {
+ RaiseLocationChanged();
+ return;
+ }
+ //减少计算量,在模拟飞机很多时花时间
+ bool EnRaise = true;
+ if (_lastChangedLocation != null)
+ EnRaise = (Altitude != _lastChangedLocation.Altitude) ||
+ (Latitude != _lastChangedLocation.Latitude) ||
+ (Longitude != _lastChangedLocation.Longitude);
+ //if (_lastChangedLocation == null || this.CalcDistance(_lastChangedLocation) >= 0.5 || DateTime.Now.AddMilliseconds(-500) >= _lastRaiseLocationChangedTime)
+ if (EnRaise)
{
RaiseLocationChanged();
_lastChangedLocation = new PLLocation(this);
_lastRaiseLocationChangedTime = DateTime.Now;
}
+
}
protected void RaiseMissionItemReceived(MissionItemReceivedEventArgs e)
diff --git a/PlaneGcsSdk_Shared/Copters/FakeCopter.cs b/PlaneGcsSdk_Shared/Copters/FakeCopter.cs
index f953a14..63f853c 100644
--- a/PlaneGcsSdk_Shared/Copters/FakeCopter.cs
+++ b/PlaneGcsSdk_Shared/Copters/FakeCopter.cs
@@ -32,7 +32,7 @@ namespace Plane.Copters
///
/// 更新虚拟飞行器状态的时间间隔,单位为毫秒。
///
- private const int UPDATE_INTERVAL = 150; //150可以跑1000架 100可以跑500架
+ private const int UPDATE_INTERVAL = 50; //150可以跑1000架 100可以跑500架
///
/// 对飞行器的模拟是否正在运行。