module Codec.GlTF.Root where

import Codec.GlTF.Prelude

import Codec.GlTF.Asset (Asset)
import Codec.GlTF.Accessor (Accessor)
import Codec.GlTF.Animation (Animation)
import Codec.GlTF.Buffer (Buffer)
import Codec.GlTF.BufferView (BufferView)
import Codec.GlTF.Camera (Camera)
import Codec.GlTF.Image (Image)
import Codec.GlTF.Material (Material)
import Codec.GlTF.Mesh (Mesh)
import Codec.GlTF.Node (Node)
import Codec.GlTF.Sampler (Sampler)
import Codec.GlTF.Scene (Scene, SceneIx)
import Codec.GlTF.Skin (Skin)
import Codec.GlTF.Texture (Texture)

-- | The root object for a glTF asset.
data GlTF = GlTF
  { GlTF -> Asset
asset              :: Asset
  , GlTF -> Maybe (Vector Text)
extensionsUsed     :: Maybe (Vector Text)
  , GlTF -> Maybe (Vector Text)
extensionsRequired :: Maybe (Vector Text)
  , GlTF -> Maybe (Vector Accessor)
accessors          :: Maybe (Vector Accessor)
  , GlTF -> Maybe (Vector Animation)
animations         :: Maybe (Vector Animation)
  , GlTF -> Maybe (Vector Buffer)
buffers            :: Maybe (Vector Buffer)
  , GlTF -> Maybe (Vector BufferView)
bufferViews        :: Maybe (Vector BufferView)
  , GlTF -> Maybe (Vector Camera)
cameras            :: Maybe (Vector Camera)
  , GlTF -> Maybe (Vector Image)
images             :: Maybe (Vector Image)
  , GlTF -> Maybe (Vector Material)
materials          :: Maybe (Vector Material)
  , GlTF -> Maybe (Vector Mesh)
meshes             :: Maybe (Vector Mesh)
  , GlTF -> Maybe (Vector Node)
nodes              :: Maybe (Vector Node)
  , GlTF -> Maybe (Vector Sampler)
samplers           :: Maybe (Vector Sampler)
  , GlTF -> Maybe (Vector Scene)
scenes             :: Maybe (Vector Scene)
  , GlTF -> Maybe SceneIx
scene              :: Maybe SceneIx
  , GlTF -> Maybe (Vector Skin)
skins              :: Maybe (Vector Skin)
  , GlTF -> Maybe (Vector Texture)
textures           :: Maybe (Vector Texture)
  , GlTF -> Maybe Object
extensions         :: Maybe Object
  , GlTF -> Maybe Value
extras             :: Maybe Value
  } deriving (GlTF -> GlTF -> Bool
(GlTF -> GlTF -> Bool) -> (GlTF -> GlTF -> Bool) -> Eq GlTF
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: GlTF -> GlTF -> Bool
== :: GlTF -> GlTF -> Bool
$c/= :: GlTF -> GlTF -> Bool
/= :: GlTF -> GlTF -> Bool
Eq, Int -> GlTF -> ShowS
[GlTF] -> ShowS
GlTF -> String
(Int -> GlTF -> ShowS)
-> (GlTF -> String) -> ([GlTF] -> ShowS) -> Show GlTF
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> GlTF -> ShowS
showsPrec :: Int -> GlTF -> ShowS
$cshow :: GlTF -> String
show :: GlTF -> String
$cshowList :: [GlTF] -> ShowS
showList :: [GlTF] -> ShowS
Show, (forall x. GlTF -> Rep GlTF x)
-> (forall x. Rep GlTF x -> GlTF) -> Generic GlTF
forall x. Rep GlTF x -> GlTF
forall x. GlTF -> Rep GlTF x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. GlTF -> Rep GlTF x
from :: forall x. GlTF -> Rep GlTF x
$cto :: forall x. Rep GlTF x -> GlTF
to :: forall x. Rep GlTF x -> GlTF
Generic)

instance FromJSON GlTF
instance ToJSON GlTF