# | Line 42 | Line 42 | |
---|---|---|
42 | #ifndef SELECTION_SELECTIONMANAGER_HPP | |
43 | #define SELECTION_SELECTIONMANAGER_HPP | |
44 | ||
45 | < | #include "utils/BitSet.hpp" |
45 | > | #include "utils/OOPSEBitSet.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); |
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 | < | } |
58 | > | void addSelection(StuntDouble* sd) { |
59 | > | bsSelection_.setBitOn(sd->getGlobalIndex()); |
60 | > | } |
61 | ||
62 | < | void addSelectionSet(const BitSet& bs) { |
63 | < | bsSelection_ |= bs; |
64 | < | } |
62 | > | void addSelectionSet(const OOPSEBitSet& bs) { |
63 | > | bsSelection_ |= bs; |
64 | > | } |
65 | ||
66 | < | void setSelection(StuntDouble* sd) { |
67 | < | bsSelection_.clearAll(); |
68 | < | bsSelection_.setBitOn(sd->getGlobalIndex()); |
69 | < | } |
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 | < | } |
71 | > | void setSelectionSet(const OOPSEBitSet& bs) { |
72 | > | bsSelection_ = bs; |
73 | > | } |
74 | ||
75 | < | void toggleSelection(StuntDouble* sd) { |
76 | < | bsSelection_.flip(sd->getGlobalIndex()); |
77 | < | } |
75 | > | void toggleSelection(StuntDouble* sd) { |
76 | > | bsSelection_.flip(sd->getGlobalIndex()); |
77 | > | } |
78 | ||
79 | < | void toggleSelection() { |
80 | < | bsSelection_.flip(); |
81 | < | } |
79 | > | void toggleSelection() { |
80 | > | bsSelection_.flip(); |
81 | > | } |
82 | ||
83 | < | void selectAll() { |
84 | < | bsSelection_.setAll(); |
85 | < | } |
83 | > | void selectAll() { |
84 | > | bsSelection_.setAll(); |
85 | > | } |
86 | ||
87 | < | void clearSelection() { |
88 | < | bsSelection_.clearAll(); |
89 | < | } |
87 | > | void clearSelection() { |
88 | > | bsSelection_.clearAll(); |
89 | > | } |
90 | ||
91 | < | void clearSelection(StuntDouble* sd) { |
92 | < | bsSelection_.setBitOff(sd->getGlobalIndex()); |
93 | < | } |
91 | > | void clearSelection(StuntDouble* sd) { |
92 | > | bsSelection_.setBitOff(sd->getGlobalIndex()); |
93 | > | } |
94 | ||
95 | < | bool isSelected(StuntDouble* sd) { |
96 | < | return bsSelection_[sd->getGlobalIndex()]; |
97 | < | } |
95 | > | bool isSelected(StuntDouble* sd) { |
96 | > | return bsSelection_[sd->getGlobalIndex()]; |
97 | > | } |
98 | ||
99 | < | bool isEmpty() { |
100 | < | return bsSelection_.none(); |
101 | < | } |
99 | > | bool isEmpty() { |
100 | > | return bsSelection_.none(); |
101 | > | } |
102 | ||
103 | < | int getSelectionCount() { |
104 | < | return bsSelection_.countBits(); |
105 | < | } |
103 | > | int getSelectionCount() { |
104 | > | return bsSelection_.countBits(); |
105 | > | } |
106 | ||
107 | < | BitSet getSelectionSet() { |
108 | < | return bsSelection_; |
109 | < | } |
107 | > | OOPSEBitSet getSelectionSet() { |
108 | > | return bsSelection_; |
109 | > | } |
110 | ||
111 | ||
112 | < | StuntDouble* beginSelected(int& i); |
113 | < | StuntDouble* nextSelected(int& i); |
112 | > | StuntDouble* beginSelected(int& i); |
113 | > | StuntDouble* nextSelected(int& i); |
114 | ||
115 | < | StuntDouble* beginUnselected(int& i); |
116 | < | StuntDouble* nextUnSelected(int& i); |
115 | > | StuntDouble* beginUnselected(int& i); |
116 | > | StuntDouble* nextUnSelected(int& i); |
117 | > | |
118 | > | SelectionManager& operator&= (const SelectionManager &sman) { |
119 | > | bsSelection_ &= sman.bsSelection_; |
120 | > | return *this; |
121 | > | } |
122 | ||
123 | < | private: |
124 | < | SimInfo* info_; |
125 | < | BitSet bsSelection_; |
126 | < | std::vector<StuntDouble*> stuntdoubles_; |
127 | < | }; |
123 | > | SelectionManager& operator|= (const SelectionManager &sman) { |
124 | > | bsSelection_ |= sman.bsSelection_; |
125 | > | return *this; |
126 | > | } |
127 | > | |
128 | > | SelectionManager& operator^= (const SelectionManager &sman) { |
129 | > | bsSelection_ ^= sman.bsSelection_; |
130 | > | return *this; |
131 | > | } |
132 | ||
133 | + | SelectionManager& operator-= (const SelectionManager &sman) { |
134 | + | bsSelection_ -= sman.bsSelection_; |
135 | + | return *this; |
136 | + | } |
137 | + | |
138 | + | friend SelectionManager operator| (const SelectionManager& sman1, const SelectionManager& sman2); |
139 | + | friend SelectionManager operator& (const SelectionManager& sman1, const SelectionManager& sman2); |
140 | + | friend SelectionManager operator^ (const SelectionManager& sman1, const SelectionManager& sman2); |
141 | + | friend SelectionManager operator-(const SelectionManager& sman1, const SelectionManager& sman2); |
142 | + | |
143 | + | private: |
144 | + | SimInfo* info_; |
145 | + | OOPSEBitSet bsSelection_; |
146 | + | std::vector<StuntDouble*> stuntdoubles_; |
147 | + | }; |
148 | + | |
149 | } | |
150 | #endif |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |