{-# 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