Переглянути джерело

修复一个递归remove导致多次算位置的bug,只需要删除完节点后计算一次位置即可

tanghai 14 роки тому
батько
коміт
ff8124a553
1 змінених файлів з 8 додано та 3 видалено
  1. 8 3
      CSharp/Modules/BehaviorTree/BehaviorTreeViewModel.cs

+ 8 - 3
CSharp/Modules/BehaviorTree/BehaviorTreeViewModel.cs

@@ -35,14 +35,19 @@ namespace BehaviorTree
 			BehaviorTreeLayout.ExcuteLayout(this.Root);
 		}
 
-		public void Remove(TreeNodeViewModel treeNodeViewModel)
+		public void RecursionRemove(TreeNodeViewModel treeNodeViewModel)
 		{
 			for (int i = treeNodeViewModel.Children.Count - 1; i >= 0; --i)
 			{
-				this.Remove(treeNodeViewModel.Children[i]);
+				RecursionRemove(treeNodeViewModel.Children[i]);
 			}
 			treeNodeViewModel.Parent.Children.Remove(treeNodeViewModel);
-			this.treeNodes.Remove(treeNodeViewModel);
+			treeNodes.Remove(treeNodeViewModel);
+		}
+
+		public void Remove(TreeNodeViewModel treeNodeViewModel)
+		{
+			RecursionRemove(treeNodeViewModel);
 			BehaviorTreeLayout.ExcuteLayout(this.Root);
 		}
 	}