BehaviorTreeViewModel.cs 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System.Collections.ObjectModel;
  2. using System.ComponentModel.Composition;
  3. namespace BehaviorTree
  4. {
  5. [Export(typeof(BehaviorTreeViewModel))]
  6. [PartCreationPolicy(CreationPolicy.NonShared)]
  7. class BehaviorTreeViewModel
  8. {
  9. private ObservableCollection<TreeNodeViewModel> treeNodes = new ObservableCollection<TreeNodeViewModel>();
  10. public ObservableCollection<TreeNodeViewModel> TreeNodes
  11. {
  12. get
  13. {
  14. return treeNodes;
  15. }
  16. set
  17. {
  18. treeNodes = value;
  19. }
  20. }
  21. public void Add(TreeNode treeNode, TreeNodeViewModel parent)
  22. {
  23. var treeNodeViewModel = new TreeNodeViewModel(treeNode, parent);
  24. treeNodes.Add(treeNodeViewModel);
  25. if (parent != null)
  26. {
  27. parent.Children.Add(treeNodeViewModel);
  28. }
  29. }
  30. public void Remove(TreeNodeViewModel treeNodeViewModel)
  31. {
  32. for (int i = treeNodeViewModel.Children.Count - 1; i >= 0; --i)
  33. {
  34. Remove(treeNodeViewModel.Children[i]);
  35. }
  36. treeNodeViewModel.Parent.Children.Remove(treeNodeViewModel);
  37. treeNodes.Remove(treeNodeViewModel);
  38. }
  39. }
  40. }