优化动画状态变化处理,清除碰撞高亮并检查ClashDetective结果

This commit is contained in:
tian 2026-01-08 15:32:45 +08:00
parent f500861179
commit a3bee9a0ba

View File

@ -1341,32 +1341,34 @@ namespace NavisworksTransport.UI.WPF.ViewModels
/// <summary>
/// 处理动画状态变化事件
/// </summary>
private void OnAnimationStateChanged(object sender, NavisworksTransport.Core.Animation.AnimationState state)
private void OnAnimationStateChanged(object sender, Core.Animation.AnimationState state)
{
System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
switch (state)
{
case NavisworksTransport.Core.Animation.AnimationState.Playing:
case Core.Animation.AnimationState.Playing:
CanStartAnimation = false;
CanPauseAnimation = true;
CanStopAnimation = true;
UpdateMainStatus("动画播放中");
UpdateMediaControlProperties(); // 更新媒体控制属性
break;
case NavisworksTransport.Core.Animation.AnimationState.Paused:
case Core.Animation.AnimationState.Paused:
CanStartAnimation = true; // 暂停状态下可以继续
CanPauseAnimation = false;
CanStopAnimation = true;
UpdateMainStatus("动画已暂停");
UpdateMediaControlProperties(); // 更新媒体控制属性
break;
case NavisworksTransport.Core.Animation.AnimationState.Finished:
case Core.Animation.AnimationState.Finished:
CanStartAnimation = true;
CanPauseAnimation = false;
CanStopAnimation = false;
UpdateMainStatus("动画已完成");
UpdateMediaControlProperties(); // 更新媒体控制属性
// 先清除所有碰撞高亮包括预计算和ClashDetective
ModelHighlightHelper.ClearCollisionHighlights();
// 检查并高亮ClashDetective结果
CheckAndHighlightClashDetectiveResults();
break;
@ -1376,6 +1378,8 @@ namespace NavisworksTransport.UI.WPF.ViewModels
CanStopAnimation = false;
UpdateMainStatus("动画已停止");
UpdateMediaControlProperties(); // 更新媒体控制属性
// 先清除所有碰撞高亮包括预计算和ClashDetective
ModelHighlightHelper.ClearCollisionHighlights();
// 检查并高亮ClashDetective结果
CheckAndHighlightClashDetectiveResults();
break;