BehaviorTreeViewModel.cs 1.2 KB

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