dropBlock :: [Block] -> Block -> [Block]
dropBlock resting block = resting ++ [over both (^-^ (V3 0 0 fallDistance)) block]
- where _2xy = alongside _xy _xy
- blockPlane = block ^. _2xy
- under = filter ((intersectsXY blockPlane) . (view _2xy)) resting
+ where -- _2xy = alongside _xy _xy
+ -- blockPlane = block ^. _2xy
+ blockPlane = over both (view _xy) block
+ -- under = filter ((intersectsXY blockPlane) . (view _2xy)) resting
+ under = filter ((intersectsXY blockPlane) . (over both (view _xy))) resting
highestUnder = maxZ under
fallDistance = block ^. _1 . _z - highestUnder - 1