module Dodge.CullBox ( updateBounds ) where import Dodge.Data import Dodge.Base.Window import Geometry import Dodge.Update.Camera import Data.Maybe import Control.Lens findBoundDists :: Configuration -> World -> (Float,Float,Float,Float) findBoundDists cfig w | debugOn Bound_box_screen cfig = (hh,-hh,hw,-hw) | otherwise = fromMaybe (0,0,0,0) $ farWallDistDirection (_cameraCenter w) w where hw = halfWidth cfig hh = halfHeight cfig updateBounds :: Configuration -> World -> World updateBounds cfig w = w & boundDist .~ bdists & boundBox .~ map ( (+.+ _cameraCenter w) . rotateV (_cameraRot w) ) (rectNSWE n s w' e) where bdists@(n,s,e,w') = findBoundDists cfig w