diff --git a/src/DrawingProgram/DrawingProgramSelection.cpp b/src/DrawingProgram/DrawingProgramSelection.cpp index 984a409..4fb9db1 100644 --- a/src/DrawingProgram/DrawingProgramSelection.cpp +++ b/src/DrawingProgram/DrawingProgramSelection.cpp @@ -35,23 +35,23 @@ void DrawingProgramSelection::erase_component(const CollabListType::ObjectInfoPt } } -std::function&, std::vector&)> DrawingProgramSelection::erase_select_objects_in_bvh_func(std::unordered_set& selectedComponents, const SCollision::ColliderCollection& cC, const SCollision::ColliderCollection& cCWorld) { - std::function&)> fullyCollidedFunc = [&](const std::shared_ptr& bvhNode) { - if(bvhNode) { - for(auto& c : bvhNode->components) - selectedComponents.emplace(c); - for(auto& p : bvhNode->children) - fullyCollidedFunc(p); - } - }; +void DrawingProgramSelection::fully_collided_erase_select_objects_func(std::unordered_set& selectedComponents, const std::shared_ptr& bvhNode) { + if(bvhNode) { + for(auto& c : bvhNode->components) + selectedComponents.emplace(c); + for(auto& p : bvhNode->children) + fully_collided_erase_select_objects_func(selectedComponents, p); + } +} +std::function&, std::vector&)> DrawingProgramSelection::erase_select_objects_in_bvh_func(std::unordered_set& selectedComponents, const SCollision::ColliderCollection& cC, const SCollision::ColliderCollection& cCWorld) { auto toRet = [&](const auto& bvhNode, auto& comps) { if(bvhNode && (bvhNode->coords.inverseScale << 9) < drawP.world.drawData.cam.c.inverseScale && SCollision::collide(cC, drawP.world.drawData.cam.c.to_space(bvhNode->bounds.min)) && SCollision::collide(cC, drawP.world.drawData.cam.c.to_space(bvhNode->bounds.max)) && SCollision::collide(cC, drawP.world.drawData.cam.c.to_space(bvhNode->bounds.top_right())) && SCollision::collide(cC, drawP.world.drawData.cam.c.to_space(bvhNode->bounds.bottom_left()))) { - fullyCollidedFunc(bvhNode); + fully_collided_erase_select_objects_func(selectedComponents, bvhNode); drawP.compCache.invalidate_cache_at_aabb_before_pos(bvhNode->bounds, 0); return true; } diff --git a/src/DrawingProgram/DrawingProgramSelection.hpp b/src/DrawingProgram/DrawingProgramSelection.hpp index 6075b8c..d5bedd5 100644 --- a/src/DrawingProgram/DrawingProgramSelection.hpp +++ b/src/DrawingProgram/DrawingProgramSelection.hpp @@ -26,6 +26,7 @@ class DrawingProgramSelection { void preupdate_component(const CollabListType::ObjectInfoPtr& objToCheck); private: std::function&, std::vector&)> erase_select_objects_in_bvh_func(std::unordered_set& selectedComponents, const SCollision::ColliderCollection& cC, const SCollision::ColliderCollection& cCWorld); + void fully_collided_erase_select_objects_func(std::unordered_set& selectedComponents, const std::shared_ptr& bvhNode); void delete_all(); bool mouse_collided_with_selection_aabb();