# | Line 42 | Line 42 | |
---|---|---|
42 | #ifndef SELECTION_SELECTIONMANAGER_HPP | |
43 | #define SELECTION_SELECTIONMANAGER_HPP | |
44 | ||
45 | + | #include "utils/BitSet.hpp" |
46 | + | #include "primitives/StuntDouble.hpp" |
47 | namespace oopse { | |
48 | ||
49 | + | class SimInfo; |
50 | /** | |
51 | * @class SelectionManager SelectionManager.hpp "selection/SelectionManager.hpp" | |
52 | * @brief | |
53 | */ | |
54 | class SelectionManager { | |
55 | + | public: |
56 | + | SelectionManager(SimInfo* info); |
57 | ||
58 | + | void addSelection(StuntDouble* sd) { |
59 | + | bsSelection_.setBitOn(sd->getGlobalIndex()); |
60 | + | } |
61 | + | |
62 | + | void addSelectionSet(const BitSet& bs) { |
63 | + | bsSelection_ |= bs; |
64 | + | } |
65 | + | |
66 | + | void setSelection(StuntDouble* sd) { |
67 | + | bsSelection_.clearAll(); |
68 | + | bsSelection_.setBitOn(sd->getGlobalIndex()); |
69 | + | } |
70 | + | |
71 | + | void setSelectionSet(const BitSet& bs) { |
72 | + | bsSelection_ = bs; |
73 | + | } |
74 | + | |
75 | + | void toggleSelection(StuntDouble* sd) { |
76 | + | bsSelection_.flip(sd->getGlobalIndex()); |
77 | + | } |
78 | + | |
79 | + | void toggleSelection() { |
80 | + | bsSelection_.flip(); |
81 | + | } |
82 | + | |
83 | + | void selectAll() { |
84 | + | bsSelection_.setAll(); |
85 | + | } |
86 | + | |
87 | + | void clearSelection() { |
88 | + | bsSelection_.clearAll(); |
89 | + | } |
90 | + | |
91 | + | void clearSelection(StuntDouble* sd) { |
92 | + | bsSelection_.setBitOff(sd->getGlobalIndex()); |
93 | + | } |
94 | + | |
95 | + | bool isSelected(StuntDouble* sd) { |
96 | + | return bsSelection_[sd->getGlobalIndex()]; |
97 | + | } |
98 | + | |
99 | + | bool isEmpty() { |
100 | + | return bsSelection_.none(); |
101 | + | } |
102 | + | |
103 | + | int getSelectionCount() { |
104 | + | return bsSelection_.countBits(); |
105 | + | } |
106 | + | |
107 | + | BitSet getSelectionSet() { |
108 | + | return bsSelection_; |
109 | + | } |
110 | + | |
111 | + | |
112 | + | StuntDouble* beginSelected(int& i); |
113 | + | StuntDouble* nextSelected(int& i); |
114 | + | |
115 | + | StuntDouble* beginUnselected(int& i); |
116 | + | StuntDouble* nextUnSelected(int& i); |
117 | + | |
118 | + | private: |
119 | + | SimInfo* info_; |
120 | + | BitSet bsSelection_; |
121 | + | std::vector<StuntDouble*> stuntdoubles_; |
122 | }; | |
123 | ||
124 | } |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |