module Dodge.Zoning.Common where import Dodge.Data.World import Control.Lens import Dodge.Zoning.Base import Geometry import qualified IntMapHelp as IM nearPoint :: Monoid m => Float -> (LWorld -> IM.IntMap (IM.IntMap m)) -> Point2 -> World -> m {-# INLINE nearPoint #-} nearPoint size f p w = zoneExtract (zoneOfPoint size p) (f $ w ^. cWorld . lWorld) nearPoint' :: Monoid m => Float -> (World -> IM.IntMap (IM.IntMap m)) -> Point2 -> World -> m {-# INLINE nearPoint' #-} nearPoint' size f p w = zoneExtract (zoneOfPoint size p) (f w) nearSeg :: Monoid m => Float -> (LWorld -> IM.IntMap (IM.IntMap m)) -> Point2 -> Point2 -> World -> m {-# INLINE nearSeg #-} nearSeg size f sp ep w = zonesExtract (f $ w ^. cWorld . lWorld) (zoneOfSeg size sp ep) nearSeg' :: Monoid m => Float -> (World -> IM.IntMap (IM.IntMap m)) -> Point2 -> Point2 -> World -> m {-# INLINE nearSeg' #-} nearSeg' size f sp ep w = zonesExtract (f w) (zoneOfSeg size sp ep) nearRect :: Monoid m => Float -> (LWorld -> IM.IntMap (IM.IntMap m)) -> Point2 -> Point2 -> World -> m {-# INLINE nearRect #-} nearRect size f sp ep w = zonesExtract (f $ w ^. cWorld . lWorld) (zoneOfRect size sp ep) nearRect' :: Monoid m => Float -> (World -> IM.IntMap (IM.IntMap m)) -> Point2 -> Point2 -> World -> m {-# INLINE nearRect' #-} nearRect' size f sp ep w = zonesExtract (f w) (zoneOfRect size sp ep)