keid-core-0.1.0.0: src/Resource/Mesh/Utils.hs
module Resource.Mesh.Utils where
import RIO
import RIO.List.Partial (maximum)
import Geomancy (Transform, Vec4, vec4)
import Geomancy.Transform qualified as Transform
import Resource.Mesh.Types (AxisAligned(..), Measurements(..), middleAa, sizeAa)
aabbTranslate :: AxisAligned Measurements -> Transform
aabbTranslate measurements = Transform.translate aaX aaY aaZ
where
AxisAligned{..} = middleAa measurements
aabbScale :: AxisAligned Measurements -> Transform
aabbScale measurements = Transform.scale3 aaX aaY aaZ
where
AxisAligned{..} = sizeAa measurements
boundingSphere :: AxisAligned Measurements -> Vec4
boundingSphere measurements = vec4 aaX aaY aaZ radius
where
AxisAligned{..} = middleAa measurements
radius = maximum (fmap mMax measurements)