More weak_ptr and clipboard shenanigans :)
This commit is contained in:
+8
-4
@@ -9,14 +9,18 @@ namespace VISEQ::APP {
|
||||
|
||||
std::vector<GRAPH::NODES::VEC_SPTR_Node> clipboard;
|
||||
|
||||
GRAPH::NODES::VEC_SPTR_Node pullNodes(){
|
||||
GRAPH::NODES::VEC_SPTR_Node pasteNodes(){
|
||||
return clipboard.back();
|
||||
}
|
||||
|
||||
void pushNodes(GRAPH::NODES::VEC_SPTR_Node selected_nodes){
|
||||
void copyNodes(GRAPH::NODES::VEC_WPTR_Node selected_nodes){
|
||||
clipboard.emplace_back();
|
||||
std::ranges::copy(selected_nodes.begin(), selected_nodes.end(), std::back_inserter(clipboard.back()));
|
||||
std::ranges::for_each(selected_nodes.begin(), selected_nodes.end(), [](GRAPH::NODES::SPTR_Node n){n->selected = false;});
|
||||
for(auto n : selected_nodes){
|
||||
clipboard.back().push_back(n.lock());
|
||||
n.lock().deselect();
|
||||
}
|
||||
//std::ranges::copy(selected_nodes.begin(), selected_nodes.end(), std::back_inserter(clipboard.back()));
|
||||
//std::ranges::for_each(selected_nodes.begin(), selected_nodes.end(), [](GRAPH::NODES::SPTR_Node n){n->selected = false;});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@@ -67,11 +67,11 @@ namespace VISEQ::INTERACTION{
|
||||
void update(){
|
||||
if(KEYS_DOWN.ctrl && IsKeyPressed(KEY_C)){
|
||||
VEC_WPTR_Node selected_nodes = gm->getSelection();
|
||||
if(!selected_nodes.empty()) cb.pushNodes(selected_nodes);
|
||||
if(!selected_nodes.empty()) cb.copyNodes(selected_nodes);
|
||||
}
|
||||
|
||||
if(KEYS_DOWN.ctrl && IsKeyPressed(KEY_V)){
|
||||
VEC_SPTR_Node paste_nodes = cb.pullNodes();
|
||||
VEC_SPTR_Node paste_nodes = cb.pasteNodes();
|
||||
if(!paste_nodes.empty()) gm->pasteNodesAndEdges(paste_nodes, MOD_MOUSE);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user