{-# OPTIONS_GHC -fplugin Foreign.Storable.Generic.Plugin #-}
module Resource.Mesh.Lit
( MaterialNodes
, MaterialNode(..)
) where
import RIO
import Foreign.Storable.Generic (GStorable)
import RIO.Vector.Storable qualified as Storable
import Render.Lit.Material (Material)
import Resource.Mesh.Types (HasRange(..), Node)
type MaterialNodes = Storable.Vector MaterialNode
data MaterialNode = MaterialNode
{ mnNode :: Node
, mnMaterialIx :: Int
, mnMaterial :: Material
}
deriving (Eq, Show, Generic)
instance GStorable MaterialNode
instance HasRange MaterialNode where
{-# INLINE getRange #-}
getRange = getRange . mnNode
{-# INLINE adjustRange #-}
adjustRange mn@MaterialNode{mnNode} newFirstIndex = mn
{ mnNode = adjustRange mnNode newFirstIndex
}