29 lines
797 B
Haskell
29 lines
797 B
Haskell
module Dodge.Zoning.Cloud where
|
|
|
|
import Dodge.Data.World
|
|
import Dodge.Zoning.Base
|
|
import Geometry
|
|
import qualified IntMapHelp as IM
|
|
import Dodge.Zoning.Common
|
|
|
|
clsNearPoint :: Point2 -> World -> [Cloud]
|
|
clsNearPoint = nearPoint clZoneSize _clZoning
|
|
|
|
clsNearSeg :: Point2 -> Point2 -> World -> [Cloud]
|
|
clsNearSeg = nearSeg clZoneSize _clZoning
|
|
|
|
clsNearRect :: Point2 -> Point2 -> World -> [Cloud]
|
|
clsNearRect = nearRect clZoneSize _clZoning
|
|
|
|
clsNearCirc :: Point2 -> Float -> World -> [Cloud]
|
|
clsNearCirc p r = clsNearRect (p +.+ V2 r r) (p -.- V2 r r)
|
|
|
|
clZoneSize :: Float
|
|
clZoneSize = 20
|
|
|
|
zoneOfCl :: Cloud -> Int2
|
|
zoneOfCl = zoneOfPoint clZoneSize . xyV3 . _clPos
|
|
|
|
zoneCloud :: Cloud -> IM.IntMap (IM.IntMap [Cloud]) -> IM.IntMap (IM.IntMap [Cloud])
|
|
zoneCloud cl = zoneMonoid (zoneOfCl cl) [cl]
|