project = {
let lastSelected
return async function(selected, distance){
if(distance > 4) { lastSelected = null; resetProjection(); return }
if(lastSelected == selected) return
const similars = (await getImageDistancesForId(selected.id)).slice(0,topNum)
projection.forEach((d,i) => {
const s = sprites.get(d.id)
s.zIndex = 0
s.position.x = d.x
s.position.y = d.y
s.alpha = 0.2
s.scale.set(scale)
})
similars.forEach((d,i) => {
const s = sprites.get(d.id)
const active = selected.id == d.id
s.zIndex = active ? 2 : 1
s.scale.set(active ? scale * 3 : scale * 1.7)
s.alpha = 1
})
renderer.render(container)
lastSelected = selected
}
}