BehaviorTreeViewModel.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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 TreeNodeViewModel Root
  22. {
  23. get
  24. {
  25. return treeNodes.Count > 0? treeNodes[0] : null;
  26. }
  27. }
  28. public void Add(TreeNode treeNode, TreeNodeViewModel parent)
  29. {
  30. var treeNodeViewModel = new TreeNodeViewModel(treeNode, parent);
  31. treeNodes.Add(treeNodeViewModel);
  32. if (parent != null)
  33. {
  34. parent.Children.Add(treeNodeViewModel);
  35. }
  36. }
  37. public void Remove(TreeNodeViewModel treeNodeViewModel)
  38. {
  39. for (int i = treeNodeViewModel.Children.Count - 1; i >= 0; --i)
  40. {
  41. Remove(treeNodeViewModel.Children[i]);
  42. }
  43. treeNodeViewModel.Parent.Children.Remove(treeNodeViewModel);
  44. treeNodes.Remove(treeNodeViewModel);
  45. }
  46. }
  47. }