Merge PR #322: perf — responsive large copy/paste + point picking

External contributor sLuCHa (sLuCHaa). Gates O(k²) snap intersection
passes, O(1) handle lookups in preview, bbox paste anchor/ghost,
count-only properties panel for huge selections, incremental paste mesh.
This commit is contained in:
Hakan Seven 2026-07-08 23:38:37 +03:00
commit 17f46968d8
7 changed files with 143 additions and 35 deletions

View file

@ -26,7 +26,7 @@ impl Scene {
handles
.iter()
.flat_map(|h| {
match self.document.entities().find(|e| e.common().handle == *h) {
match self.document.get_entity(*h) {
// Hatches carry no outline in the normal wire set, but an
// edit preview (move / copy / array / grip-drag) needs to
// show the shape following the cursor. Build a live boundary
@ -54,7 +54,7 @@ impl Scene {
let mut plain: Vec<WireModel> = Vec::new();
let mut texts: Vec<(WireModel, glam::DVec3)> = Vec::new();
for h in handles {
let Some(e) = self.document.entities().find(|e| e.common().handle == *h) else {
let Some(e) = self.document.get_entity(*h) else {
continue;
};
if matches!(e, EntityType::Text(_)) {