Optimized eraser, now uses BVH

This commit is contained in:
Yousef Khadadeh 2025-07-23 16:04:16 +03:00
parent 7fa82d3fa4
commit 0a8add3df1
7 changed files with 212 additions and 48 deletions

View file

@ -10,10 +10,13 @@ class EraserTool {
EraserTool(DrawingProgram& initDrawP);
void gui_toolbox();
void tool_update();
void reset_tool();
void draw(SkCanvas* canvas, const DrawData& drawData);
private:
std::unordered_set<CollabList<std::shared_ptr<DrawComponent>, ServerClientID>::ObjectInfoPtr> erasedComponents;
std::unordered_set<std::shared_ptr<DrawingProgramCache::BVHNode>> erasedBVHNodes;
std::vector<std::pair<uint64_t, std::shared_ptr<DrawComponent>>> erasedComponents; // <placement order, object>
void move_erased_components_from_bvh_nodes_recursive(const std::shared_ptr<DrawingProgramCache::BVHNode>& bvhNode);
DrawingProgram& drawP;
};