| 118 | // Recursive subtree iteration. |
| 119 | template <typename ToDo> |
| 120 | void ForEachObjectInTree(ToDo && toDo, uint32_t const start) const |
| 121 | { |
| 122 | for (size_t i = 0; i < m_objs.size(); ++i) |
| 123 | { |
| 124 | uint32_t type = start; |
| 125 | |
| 126 | ftype::PushValue(type, static_cast<uint8_t>(i)); |
| 127 | |
| 128 | toDo(&m_objs[i], type); |
| 129 | |
| 130 | m_objs[i].ForEachObjectInTree(toDo, type); |
| 131 | } |
| 132 | } |
| 133 | |
| 134 | using VisibleMask = std::bitset<scales::UPPER_STYLE_SCALE + 1>; |
| 135 | void SetVisibilityOnScale(bool isVisible, int scale) { m_visibility.set(scale, isVisible); } |