{-# LANGUAGE AllowAmbiguousTypes #-} module Mischief.Render.Material.Instance where import Language.Haskell.TH (Extension (AllowAmbiguousTypes)) import Mischief.ECS import Mischief.ECS.World.Query.Queryable import Mischief.Render.Material.Definition import Mischief.Shader -- import Mischief.Render.Shader.State data FetchMaterialData m where FetchMaterialData :: (Queryable cam cam', Material m) => cam -> (cam' -> Query System (B m CPU)) -> FetchMaterialData m -- class FetchMaterialData a cam cam' | a -> cam cam' -- cameraData :: cam -- fetch :: cam' -> a