Drag selection and snap to grid ok. Deselect not working though...

This commit is contained in:
Sebastian
2024-11-26 01:58:09 +01:00
parent 9c0aac8618
commit 813958002b
9 changed files with 231 additions and 180 deletions
+18 -3
View File
@@ -46,7 +46,7 @@ namespace VISEQ::GRAPH {
EDGES::VEC_SPTR_Edge remove_edges;
EDGES::VEC_SPTR_Edge split_edges;
//VEC_SPTR_Node selected_nodes;
VEC_SPTR_Node selected_nodes;
std::map<NODES::SPTR_Node, int> counter;
@@ -63,9 +63,24 @@ namespace VISEQ::GRAPH {
std::ranges::sample(edges, std::back_inserter(o), 1, std::mt19937{std::random_device{}()});
return std::dynamic_pointer_cast<VISEQ::GRAPH::EDGES::Edge>(o.front());
}
void select(){
auto temp_nodes = nodes | RANGE_FILTER([](SPTR_Node n){return n->select();}) | std::ranges::to<VEC_SPTR_Node>();
if(!KEYS_DOWN.shift) selected_nodes.clear();
selected_nodes.insert(selected_nodes.end(), temp_nodes.begin(), temp_nodes.end());
std::for_each(selected_nodes.begin(), selected_nodes.end(), [](SPTR_Node n){n->selected = true;});
}
void deselect(){
for(auto s : selected_nodes){
s->selected = false;
}
selected_nodes.clear();
}
VEC_SPTR_Node getSelection(){
return nodes | RANGE_FILTER([](SPTR_Node n){return n->selected;}) | std::ranges::to<VEC_SPTR_Node>();
return selected_nodes;
//return nodes | RANGE_FILTER([](SPTR_Node n){return n->selected;}) | std::ranges::to<VEC_SPTR_Node>();
}
void addNode(SPTR_Node node){