32 lines
1.3 KiB
Haskell
32 lines
1.3 KiB
Haskell
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)
|